外观
监督学习
概念定义:给标准答案的学习
监督学习(supervised learning)是三种建模范式中最直观的一种:给模型一批"问题 + 标准答案"((x, y) 对),让它学到从 x 到 y 的映射,从而对没见过的 x 给出合理预测。"监督"来自训练数据自带标签(label)——像老师批改作业一样,每个样本都有正确答案,模型照着对答案不断修正自己。
形式化地说:假设存在未知函数 f 满足 y = f(x),训练集 D = {(x₁,y₁),…,(xₙ,yₙ)} 是 f 的采样,学习算法在假设空间 H 中找一个假设 ĥ,使 ĥ 在训练集上误差小、在未见数据上(泛化)也好。参见什么是机器学习的四要素框架。
三大任务类型
| 任务 | 输出 y 的类型 | 典型问题 | 评估指标 |
|---|---|---|---|
| 分类(classification) | 离散类别 | 垃圾邮件识别、图像分类、疾病诊断 | 准确率、精确率/召回率、F1、AUC |
| 回归(regression) | 连续数值 | 房价预测、销量预测、温度预测 | MSE、MAE、R² |
| 排序(ranking) | 顺序关系 | 搜索排序、推荐排序 | NDCG、MAP、MRR |
三者经常互相转化:回归输出可以阈值化变成分类;分类器输出的概率本身可用来排序。选哪个任务定义,取决于业务要什么——预测"这个用户会不会流失"(分类)与"这个用户流失风险多高"(回归+阈值)表面相似,决策方式完全不同。
训练目标:损失函数
监督学习的"标准答案"通过损失函数(loss function)转化为可优化的目标。选择损失函数就是在回答"什么样的错误最贵":
| 损失函数 | 适用 | 特点 |
|---|---|---|
| 均方误差 MSE | 回归 | 对大误差惩罚重(平方),对异常值敏感 |
| 平均绝对误差 MAE | 回归 | 对异常值鲁棒,但梯度不连续 |
| Huber loss | 回归 | MSE 与 MAE 的折中,工业回归常用 |
| 交叉熵(log loss) | 分类 | 与概率输出天然匹配,梯度良好,分类事实标准 |
| Hinge loss | 分类 | SVM 的间隔损失 |
| Pairwise loss | 排序 | 比较样本对的相对顺序 |
为什么分类用交叉熵而不是 MSE?
分类问题 y 是 one-hot 的类别,MSE 对概率输出求梯度时会出现梯度消失(sigmoid 两端导数趋零),收敛极慢;交叉熵的梯度与"预测概率 - 真实标签"成正比,误差越大推得越狠。这是"损失函数要与输出分布匹配"的经典例子。
二、经典算法家族
1. 线性模型:最简单、最稳的基线
线性回归:假设 ĥ(x) = w·x + b,用最小二乘法或梯度下降求解。可解释性极强(系数 w 直接是"每单位特征对输出的贡献"),是一切回归任务的默认基线。逻辑回归:在线性输出外套 sigmoid,输出概率,配交叉熵损失。虽然名字带"回归",它是最重要的分类器。
线性模型的定位:永远先跑。它训练快、可解释、是判断"问题本身有没有信号"的最快途径——如果线性模型都不如多数类基线,问题大概率出在特征或数据上,而不是模型不够复杂。详见线性模型与逻辑回归。
2. 树模型:表格数据的霸主
决策树:按特征值递归划分样本,if-then 规则树。可解释、不用归一化、天然处理类别特征。随机森林:多棵树的 bagging 集成,方差小、稳健。梯度提升树(GBDT/XGBoost/LightGBM):逐棵拟合残差的加法模型,是表格数据上长期的最强实用选择——Kaggle 竞赛、风控、推荐排序的特征侧都靠它。
树模型的定位:表格数据的主战武器。它的优势在于对特征尺度不敏感、能捕捉非线性交互、训练快、有特征重要性可解释。详见树模型与集成学习。
3. 核方法:SVM
支持向量机(SVM)通过核函数把样本映射到高维空间找最大间隔超平面。在深度学习之前是文本、图像的标杆方法。今天的位置:小样本、高维稀疏特征(如文本 TF-IDF)场景仍有价值,但大样本和非结构化数据已被神经网络取代。
4. 神经网络:非结构化数据的王者
多层感知机(MLP)到 CNN/Transformer,神经网络用端到端表征学习统治图像、文本、语音。定位:非结构化数据的默认选择;表格数据上未必赢树模型。参见深度学习基础。
算法选型决策树
text
数据是什么形态?
├── 表格数据 → 样本量小/要解释 → 逻辑回归 或 决策树
│ 样本量中等 → 随机森林 / XGBoost / LightGBM
│ 样本量大+特征强 → 可以试神经网络(未必赢树)
├── 图像 → CNN 系(ResNet、EfficientNet、ViT)
├── 文本 → Transformer 系(BERT、GPT)预训练 + 微调
├── 序列/时间 → 时间特征工程 + 树模型(表格)或 Transformer/LSTM
└── 混合多模态 → 预训练多模态模型选型第一原则:先跑基线
不要凭直觉选"最先进的模型"。正确顺序永远是:多数类基线 → 线性模型 → 简单树模型 → 复杂模型。每一步都在回答"更复杂真的更好吗?"。直接上 Transformer 调三个月,最后发现 XGBoost 更强,是 Kaggle 新手最经典的学费。
三、监督学习的四个核心机制
1. 过拟合:学过头了
模型把训练集的噪声也背了下来,导致泛化差。识别信号:训练指标远好于验证指标。对策:正则化、更多数据、早停、交叉验证。这是监督学习第一大主题,完整展开见过拟合与正则化。
2. 偏差-方差权衡
预测误差 = 偏差² + 方差 + 不可约噪声。简单模型偏差大(欠拟合),复杂模型方差大(过拟合)。调模型复杂度,就是在偏差和方差之间找平衡点。完整讨论见模型评估与验证。
3. 类别不平衡
正负样本比例悬殊(如欺诈检测 1:1000)时,准确率是无效指标(全预测负类也有 99.9% 准确率)。对策:重采样(欠采样/过采样/SMOTE)、调整类别权重、改用 PR-AUC/召回率等指标、阈值调优。先想清楚"哪类错误的代价更高",再决定策略。
4. 数据泄露
测试集信息混入训练,离线指标虚高、上线崩盘。常见来源:全局归一化用了测试集统计量、时间序列随机划分、特征包含未来信息。划分数据前先想"真实预测时这一刻我能看到什么"。详见数据与数据工程。
四、一个端到端小例子:逻辑回归训练
python
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, roc_auc_score
from sklearn.preprocessing import StandardScaler
# ① 数据:特征 X(2 维),标签 y(0/1)
rng = np.random.default_rng(42)
X = rng.normal(size=(1000, 2))
y = (X[:, 0] + 2 * X[:, 1] + rng.normal(size=1000) > 0).astype(int)
# ② 划分:先划分再归一化,避免数据泄露
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y)
# ③ 特征缩放(只 fit 训练集!)
scaler = StandardScaler().fit(X_train)
X_train_s, X_test_s = scaler.transform(X_train), scaler.transform(X_test)
# ④ 训练
model = LogisticRegression()
model.fit(X_train_s, y_train)
# ⑤ 评估
y_pred = model.predict(X_test_s)
y_prob = model.predict_proba(X_test_s)[:, 1]
print(f"准确率: {accuracy_score(y_test, y_pred):.3f}")
print(f"AUC: {roc_auc_score(y_test, y_prob):.3f}")
print(f"学习到的系数: {model.coef_[0]}, 截距: {model.intercept_[0]:.3f}")注意两个细节:先划分再归一化(避免泄露)、类别不平衡用 stratify(保证训练/测试类别分布一致)。这些细节就是"会调 API"与"懂建模"的分水岭,详见常见陷阱与反模式。
五、权衡与取舍
- 可解释性 vs 预测力:线性/树可解释,深度模型黑箱。风控、医疗、司法要求解释,推荐排序只看效果。折中方案:用黑箱模型 + SHAP 事后解释(见可解释性与公平性)。
- 训练成本 vs 效果:XGBoost 训练几分钟,BERT 微调要 GPU 几小时。小团队从"够用且便宜"开始。
- 离线指标 vs 线上业务:AUC 涨了 0.01 未必带来业务提升。把离线评估和 AB 测试打通,是成熟团队的标志。
- 模型复杂度 vs 维护成本:每多一个模型、一个特征管道,都是长期的维护负担。简单模型能解决就不上复杂的。
延伸阅读
- 什么是机器学习——监督学习在三大范式中的位置
- 无监督学习——没有标签时怎么办
- 模型评估与验证——指标、交叉验证、偏差方差
- 过拟合与正则化——监督学习第一大坑
- 特征工程——模型的上限由特征决定
- 线性模型与逻辑回归——本文基线模型的应用拆解
- 树模型与集成学习——表格数据的霸主
- 深度学习基础——神经网络的机制
- 框架与工具怎么选——sklearn/XGBoost/PyTorch 怎么选
参考资料
- Tom Mitchell. Machine Learning(1997), Chapter 1–4 —— 监督学习经典教材
- Bishop. Pattern Recognition and Machine Learning(2006) —— 概率视角的权威教材
- James, Witten, Hastie, Tibshirani. An Introduction to Statistical Learning(ISLR) —— 监督学习入门圣经,免费在线
- scikit-learn User Guide: Supervised learning —— 完整算法家族与 API
- Pedregosa et al. Scikit-learn: Machine Learning in Python(JMLR, 2011)