概念 · Concepts

机器学习概念速查

和「模型评估」有关的基础概念,每条先说它是什么,再说在指标上怎么把它看出来。用自己的话写,尽量少用术语解释术语。

01

12 个基础概念

训练集、验证集、测试集

Train / Validation / Test

模型在哪份数据上学,就不能拿哪份数据给它打分——它可能只是把答案记住了。所以数据通常切成三份:训练集用来拟合参数,验证集用来比较不同设置、决定何时停止,测试集留到最后只看一次。

测试集被反复查看、反复据此调整,它就慢慢变成了另一份验证集,最后报告的分数会偏乐观。

在指标上:同一个模型在训练集上的指标总是比测试集好一些;差得太多,往下看「过拟合」。

过拟合与欠拟合

Overfitting / Underfitting

过拟合:模型把训练数据里的偶然细节也当成规律学了进去,训练集上几乎全对,换一批新数据就明显变差。欠拟合则相反,模型太简单,连训练集上的规律都没抓住。

缓解过拟合的常见做法:更多数据、更简单的模型、正则化、提前停止、数据增强;缓解欠拟合:更有表达力的模型、更好的特征、训练更久。

在指标上:过拟合:训练集指标很高、验证集明显低。欠拟合:两边都低,而且差不多。

学习曲线 →

偏差与方差

Bias–Variance

设想用同一种方法、在同一个总体里反复抽不同的训练集训练很多次。偏差是这些模型的平均预测离真实值有多远——方法本身的系统性偏离;方差是这些模型彼此之间差多少——对训练数据的具体抽样有多敏感。

对平方误差而言,预期误差可以拆成「偏差² + 方差 + 数据本身的噪声」。模型越复杂,偏差往往越小、方差往往越大,需要在两者之间找平衡。噪声那一项任何模型都消不掉。

在指标上:高偏差对应欠拟合,高方差对应过拟合。

交叉验证

Cross-validation

把数据平均分成 k 份,轮流拿其中 1 份当验证集、其余 k − 1 份训练,得到 k 个分数,再看它们的平均和波动。常用 k = 5 或 10。数据少的时候,这比只切一次验证集稳定得多。

分类问题里正类很少时,按类别比例分层切分(每一折里正负比例相同),否则某一折可能一个正样本都没有,召回率就无定义了。有时间顺序的数据要按时间切,不能打乱。

在指标上:k 个分数的波动大,说明结果对数据怎么切很敏感,单次评估的数字不太可靠。

数据泄漏

Data leakage

训练时用到了预测那一刻实际拿不到的信息,评估分数会好得不真实。常见来源:特征里混进了由结果推出来的字段;先在全部数据上做标准化或特征选择,再切分训练和测试;同一个人的多条记录同时出现在训练集和测试集。

所有「从数据里学出来」的预处理,都应该只在训练集上拟合,再原样应用到验证集和测试集。

在指标上:指标高得出奇(比如 AUC 接近 1),先怀疑泄漏,再庆祝。

正则化

Regularization

在训练目标里给「模型太复杂」加一项惩罚。L2 惩罚参数的平方和,让参数整体变小;L1 惩罚参数的绝对值和,容易把一部分参数压成恰好为 0。惩罚强度是一个超参数,通常用交叉验证来定。

在指标上:惩罚加大时,训练集指标会下降;如果验证集指标反而上升,说明原来有过拟合。

类别不平衡

Class imbalance

正类只占很小比例时,把所有样本都判为负类就能得到很高的准确率,但一个正类也没找到。这时准确率几乎没有信息量,要看召回率、精确率、F1、MCC、PR 曲线。

处理方式包括重新采样、给少数类更高的损失权重、调整判定阈值;无论哪种,评估都要在保持原始比例的测试集上做。

在指标上:准确率接近「多数类占比」,而召回率很低。

笔记:为什么不能只看准确率 →

分类阈值

Decision threshold

多数分类模型先输出一个分数或概率,再用阈值把它变成「正 / 负」。阈值调低,召回率上升、精确率通常下降;调高则反过来。0.5 只是一个习惯值,不是必须。

准确率、精确率、召回率、F1 都依赖阈值;AUC 和 AP 扫过了所有阈值,不依赖某一个。

在指标上:在首页用「标签 + 概率」模式拖动阈值,能直接看到这种此消彼长。

二分类计算台 →

基线

Baseline

评估一个模型之前,先算几个不用学习的参照:分类里「永远猜多数类」「按类别比例随机猜」,回归里「永远猜训练集平均值」。模型的指标要和基线比,才知道它学到了多少。

R² 其实就是把「永远猜平均值」当作基线的相对改进;AUC = 0.5、MCC = 0 对应随机猜。

在指标上:模型指标只比基线高一点点,说明它基本没学到有用的东西。

超参数

Hyperparameter

训练开始前由人设定、不由训练过程学出来的量:学习率、树的深度、正则化强度、k 近邻里的 k……一般在验证集或交叉验证上比较不同取值来选。

在测试集上挑超参数,等于把测试集用成了验证集,最终分数会偏高。

在指标上:超参数搜索的范围越大、试的组合越多,最好那一组的验证分数越可能是运气,最后一定要在测试集上确认一次。

学习曲线

Learning curve

横轴是训练样本数(或训练轮数),纵轴是训练集和验证集上的指标。两条线之间的距离反映过拟合程度,两条线的最终高度反映模型能力的上限。

在指标上:两条线都已经走平而且靠得很近,再加数据帮助不大;两条线还隔得很远、验证集仍在上升,多收集数据往往有用。

概率校准

Calibration

模型说「70% 是正类」的那些样本里,真的大约有 70% 是正类吗?如果是,就说它校准得好。AUC 只看排序,一个校准很差的模型也可以有很高的 AUC。

需要把概率当概率用(比如算期望损失)时,校准比排序更重要;只需要排序或只用一个阈值时,校准就没那么要紧。

在指标上:把样本按预测概率分组,比较每组的平均预测概率和实际正类比例,两者应大致相等。

02

常见机器学习算法:输出什么,用什么指标评估

这张表只说明每种算法输出的是什么,从而该用哪一类指标评估。它不是选型建议:同一个问题哪种算法更合适,只能在你自己的数据上用交叉验证比较出来。

算法任务输出常用评估指标说明
线性回归回归连续数值MAE、RMSE、R²假设特征与目标大致成线性关系;残差图能看出这个假设是否成立。
逻辑回归分类属于正类的概率精确率、召回率、F1、ROC / AUC、PR / AP虽然名字里有「回归」,做的是分类;输出的概率通常校准得不错。
k 近邻分类 / 回归邻居的多数类或平均值同任务对应的指标没有训练过程,预测时比较距离;特征的量纲要先统一。
决策树分类 / 回归叶子上的类别或平均值同任务对应的指标规则可读;树长得太深容易过拟合。
随机森林分类 / 回归多棵树投票或平均同任务对应的指标多棵随机化的树取平均,主要降低方差。
梯度提升树分类 / 回归多棵树逐步修正的累加同任务对应的指标每棵新树拟合前面的剩余误差,主要降低偏差;需要控制树的数量和学习率。
支持向量机分类 / 回归到分隔面的有符号距离分类用 ROC / AUC 等原始输出是距离不是概率,但可以直接当作分数画 ROC 曲线。
朴素贝叶斯分类各类的后验概率精确率、召回率、F1、AUC假设特征之间条件独立;排序往往不错,概率值常常偏极端。
神经网络分类 / 回归 / 其他取决于输出层同任务对应的指标表达能力强、参数多,更依赖验证集和正则化来防过拟合。
k 均值聚类(无监督)每个样本的簇编号不适用本站指标没有真实标签,常用簇内距离或轮廓系数评估;本站不涉及。
主成分分析降维(无监督)低维坐标不适用本站指标常看保留的方差比例;本站不涉及。