跳转到内容

5.2.1 监督学习路线图:从有标签样本中学习

监督学习回答一个问题:当样本已经有标签时,怎样学出一个能预测新样本标签的模型?

监督学习路线图

监督学习章节流程

这些模型为什么按这个顺序出现

Section titled “这些模型为什么按这个顺序出现”

监督学习模型可以读成一条“旧方法卡住 -> 新方法补一个能力”的演进线:

线性回归
-> 逻辑回归
-> 决策树
-> SVM
-> 随机森林
-> Boosting / XGBoost
阶段它补上的能力仍然留下的问题
线性回归先把连续数值预测跑通不适合直接输出分类概率
逻辑回归把线性分数变成分类概率和阈值决策边界仍然偏线性
决策树用可读规则处理非线性和特征交互单棵树很不稳定,容易过拟合
SVM用最大间隔追求更稳定的分类边界大数据和概率输出不够方便
随机森林用多棵树投票降低单树方差模型变大,解释不如单树直接
Boosting / XGBoost让后续模型持续修正前面错误,提升表格精度更需要验证集、调参和防过拟合

所以这章不是模型名清单,而是在训练一种判断:当前问题到底需要概率、规则、间隔,还是多个弱模型组合。

模型族第一用途
线性回归预测连续数值
逻辑回归用简单概率模型做分类
决策树用可读规则切分数据
集成模型合并多个模型,做更强的表格 baseline
SVM用间隔直觉学习更稳定的边界

创建 supervised_first_loop.py,安装 scikit-learn 后运行。

from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
model = LinearRegression().fit(X_train, y_train)
predictions = model.predict(X_test)
print("task: regression")
print("r2:", round(r2_score(y_test, predictions), 3))
print("first_prediction:", round(predictions[0], 1))

预期输出:

Terminal window
task: regression
r2: 0.485
first_prediction: 137.9

分数不完美也很有价值。baseline 告诉你后续模型或特征工程至少要超过哪里。

顺序阅读比较什么
15.2.2 线性回归简单数值预测
25.2.3 逻辑回归分类概率
35.2.4 决策树规则、非线性、过拟合
45.2.5 集成学习bagging、boosting、更强表格模型
55.2.6 支持向量机间隔、边界、经典分类器直觉

能判断一个有标签任务是回归还是分类,能跑一个 baseline,并能解释模型可能失败的一个原因,就算通过。

检查思路与讲解
  1. 标签是连续数值时,先按回归处理;标签是类别时,先按分类处理。
  2. baseline 可以是简单线性/逻辑模型,也可以是 dummy 规则。它的作用是定义复杂模型至少要超过的分数。
  3. 常见失败原因包括特征太弱、目标泄漏、类别不平衡、缩放不当、过拟合,以及指标和真实目标不匹配。

学完这一页,至少保留这张证据卡:

任务
带目标定义的回归或分类问题
模型
线性/逻辑回归/树/集成/SVM 配置和训练/测试划分
指标
回归误差、准确率/F1、阈值曲线或混淆矩阵
失败检查
过拟合、欠拟合、特征缩放、阈值选择或类别不平衡
期望产出
模型结果加错误样本或残差复查