其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。
过拟合是指学习模型对训练样本预测得很好,但对新样本预测很差的现象。这通常是由于学习模型能力过于强大,以至于把训练样本自身的一些特点当做了一般性质。
过拟合是无法彻底避免的,只能缓解。模型选择就是要旨在避免过拟合并提高模型的预测能力。
通常用测试误差来近似模型的泛化误差。下面介绍几种常用的评估方法:
留出法直接将数据集 D D D划分为两个互斥的部分,其中一部分作为训练集 S S S,另一部分用作测试集 T T T。
通常训练集和测试集的比例为70%:30%。同时,训练集测试集的划分有两个注意事项:
1. 尽可能保持数据分布的一致性。避免因数据划分过程引入的额外偏差而对最终结果产生影响。在分类任务中,保留类别比例的采样方法称为“分层采样”(stratified sampling)。
2. 采用若干次随机划分避免单次使用留出法的不稳定性。
交叉验证法先将数据集 D D D划分为 k k k个大小相似的互斥子集,每次采用 k − 1 k-1 k−1个子集的并集作为训练集,剩下的那个子集作为测试集。进行 k k k次训练和测试,最终返回 k k k个测试结果的均值。又称为“ k k k折交叉验证”(k-fold cross validation)。
为减少因样本划分带来的偏差,通常重复 p p p次不同的划分,最终结果是 p p p次 k k k折交叉验证结果的均值。
留一法是 k k k折交叉验证 k = m k=m k=m( m m m为样本数)时候的特殊情况。即每次只用一个样本作测试集。该方法计算开销较大。
自助法以自助采样为基础(有放回采样)。每次随机从 D D D中挑选一个样本,放入 D ′ D' D′中,然后将样本放回 D D D中,重复 m m m次之后,得到了包含 m m m个样本的数据集。
样本在 m m m次采样中始终不被采到的概率是 ( 1 − 1 m ) m \left( 1 - \frac { 1 } { m } \right) ^ { m } (1−m1)m,取极限得到 lim m → ∞ ( 1 − 1 m ) m = 1 e = 0.368 \lim _ { m \rightarrow \infty } \left( 1 - \frac { 1 } { m } \right) ^ { m } = \frac { 1 } { e } = 0.368 limm→∞(1−m1)m=e1=0.368。即 D D D中约有36.8%的样本未出现在 D ′ D' D′中。于是将 D ′ D' D′用作训练集, D \ D ′ D \backslash D ^ { \prime } D\D′用作测试集。这样,仍然使用 m m m个训练样本,但约有1/3未出现在训练集中的样本被用作测试集。
优点:自助法在数据集较小、难以有效划分训练/测试集时很有用。
缺点:然而自助法改变了初始数据集的分布,这回引入估计偏差。
二分类问题常用的评价指标时查准率和查全率。
根据预测正确与否,将样例分为以下四种:
TP(True positive,真正例)——将正类预测为正类数。
FP(False postive,假正例)——将反类预测为正类数。
TN(True negative,真反例)——将反类预测为反类数。
FN(False negative,假反例)——将正类预测为反类数。
(1)查准率(precision,精确率):
P = T P T P + F P P = \frac { T P } { T P + F P } P=TP+FPTP
即将正类预测为正类数与预测为正类的总数的比值。
(2)查全率(recall,召回率)
R = T P T P + F N R = \frac { T P } { T P + F N } R=TP+FNTP
即将正类预测为正类数与正类总数的比值。
查准率和查全率是一对矛盾的度量。是查准率和查全率的调和平均:
1 F 1 = 1 2 ( 1 P + 1 R ) \frac { 1 } { F _ { 1 } } = \frac { 1 } { 2 } \left( \frac { 1 } { P } + \frac { 1 } { R } \right) F11=21(P1+R1)
F 1 = 2 P R P + R F _ { 1 } = \frac { 2 P R } { P + R } F1=P+R2PR
当查重率和查准率都高时, F 1 F_1 F1也会高。
泛化误差(Generalization error)是学得的模型 f ^ \widehat { f } f 对未知数据预测的误差。
对测试样本 x x x,令 y D y _ { D } yD为 x x x在数据集中的标记, y y y是 x x x的真实标记, f ( x ; D ) f ( x ; D ) f(x;D)为训练集 D D D上学得的模型 f f f在 x x x上的预测输出。
学习算法的期望输出是:
f ‾ ( x ) = E D [ f ( x ; D ) ] \overline { f } ( x ) = \mathrm { E } _ { D } [ f ( x ; D ) ] f(x)=ED[f(x;D)]
偏差是期望输出与真实标记之间的差别:
bias 2 ( x ) = ( f ‾ ( x ) − y ) 2 \operatorname { bias } ^ { 2 } ( x ) = ( \overline { f } ( x ) - y ) ^ { 2 } bias2(x)=(f(x)−y)2
方差是预测值与期望输出之间的方差:
var ( x ) = E D [ ( f ( x ; D ) − f ‾ ( x ) ) 2 ] \operatorname { var } ( x ) = \mathrm { E } _ { D } \left[ ( f ( x ; D ) - \overline { f } ( x ) ) ^ { 2 } \right] var(x)=ED[(f(x;D)−f(x))2]
噪声是标记与真实标记之间的方差:
ε 2 = E D [ ( y D − y ) 2 ] \varepsilon ^ { 2 } = \mathrm { E } _ { D } \left[ \left( y _ { D } - y \right) ^ { 2 } \right] ε2=ED[(yD−y)2]
偏差度量了学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力。
方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动造成的影响。
噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。
算法的期望泛化误差 E ( f ; D ) \mathrm { E } ( f ; D ) E(f;D)可以分解为偏差、方差和噪声之和:(推导过程见参考文献1)
E ( f ; D ) = bias 2 ( x ) + var ( x ) + ε 2 E ( f ; D ) = \operatorname { bias } ^ { 2 } ( \boldsymbol { x } ) + \operatorname { var } ( \boldsymbol { x } ) + \varepsilon ^ { 2 } E(f;D)=bias2(x)+var(x)+ε2
参考文献:
- 《统计学习方法》第一章统计学习方法概论——李航
- 《机器学习》第二章模型评估与选择——周志华