经验:对于特定机器学习任务,已存在的可利用数据即是解决该机器学习任务的经验。
误差:模型的预测输出和样本的真实输出之间的差异。
经验误差:模型在训练集上的误差,也称训练误差。
泛化误差:模型在新样本上的误差,是实际误差。
测试误差:模型在测试集上的误差,用来近似泛化误差。
问题:什么是好的模型?
答:能够很好地适用于未见样本(新样本),也就是泛化误差小的模型。
过拟合:模型把训练样本自身特点当做一般性质,导致泛化性能下降。
欠拟合:模型对训练样本的一般性质尚未学好。
欠拟合容易克服,过拟合无法彻底避免,只能缓解。
用测试集上的测试误差近似泛化误差,用于对模型进行评估。但是应当注意,测试集应该尽可能与训练集互斥。
那么,应该如何获得测试集?
流程:将数据集 D D D划分为两个互斥集合,即训练集 S S S和测试集 T T T。
注意:
流程:将数据集 D D D划分为 k k k个大小相似的互斥子集,每次用1个子集作为测试集,其余子集作为训练集,得到 k k k组训练/测试集,把 k k k个测试结果取平均值,得到最终的测试结果。
交叉验证法的评估结果很大程度上取决于 k k k,故称为 k k k折交叉验证。为减少因样本划分不同而引入的差别,一般会随机使用不同划分重复 p p p次,称为 p p p次 k k k折交叉验证。
注意:将同一数据集 D D D划分为 k k k个子集存在多种划分方式。
留一法(LOO):数据集中样本总数为 k k k时,每个子集中恰包含一个样本。留一法的评估结果一般比较准确,因为接近于用整个数据集 D D D训练出的模型(训练集只少了一个样本),但数据集较大时开销极大。
自助法基于自助采样法,也称为可重复采样、有放回采样。
流程:从有 m m m个样本的数据集 D D D中随机有放回地抽取 m m m次,得到数据集 D ′ D' D′,将 D ′ D' D′作为训练集, D − D ′ D-D' D−D′作为测试集。
样本在 m m m次采样中始终不被采到的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1−m1)m,当 m m m趋近于 ∞ ∞ ∞时,这个概率为 1 e \frac{1}{e} e1,约为0.368,也就是说 D D D中约有36.8%的样本未出现在 D ′ D' D′中。测试样本在 D D D中比例一般在25%~36.8%。
优点:在数据集较小、难以有效划分训练/测试集时很有用;能从数据集中产生多个不同的训练集。
缺点:改变了初始数据集的分布,引入了估计偏差。
参数测试选择步长:选取参数的取值范围和变化步长。
选取最优参数组合:网格法。
算法和参数配置选定后,要用训练集+验证集(即原始数据集 D D D)重新训练最终模型。
性能度量:衡量模型泛化能力的评价标准,反映了任务需求。使用不同的性能度量会产生不同的结果。模型的好坏是相对的,不仅取决于算法和数据,也取决于任务需求。
回归任务最常用的性能度量是均方误差: E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum\limits_{i=1}^m(f(x_i)-y_i)^2 E(f;D)=m1i=1∑m(f(xi)−yi)2
(1)错误率:分类错误的样本数/样本总数。 E ( f ; D ) = 1 m ∑ i = 1 m Ⅱ ( f ( x i ) ≠ y i ) E(f;D)=\frac{1}{m}\sum\limits_{i=1}^mⅡ(f(x_i)≠y_i) E(f;D)=m1i=1∑mⅡ(f(xi)=yi)
(2)精度:分类正确的样本数/样本总数。 E ( f ; D ) = 1 m ∑ i = 1 m Ⅱ ( f ( x i ) = y i ) E(f;D)=\frac{1}{m}\sum\limits_{i=1}^mⅡ(f(x_i)=y_i) E(f;D)=m1i=1∑mⅡ(f(xi)=yi)
(3)查准率/准确率(Precision):预测为正的样例中有多少是真正的正样例。 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
(4)查全率/召回率(Recall):真正的的正样例有多少被预测为正的样例。 R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
从而,精度又可以这样计算: A = T P + T N T P + F N + T N + F P A=\frac{TP+TN}{TP+FN+TN+FP} A=TP+FN+TN+FPTP+TN。
P-R曲线/P-R图:根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本作为正例计算查准率P和查全率R,得到很多个P和R,形成P-R图。
(5)包围度量:模型A的P-R曲线完全包围模型B的,则认为A优于B。
(6)平衡点(BEP)度量:BEP为查准率=查全率时的取值,若模型A的BEP大于模型B的,则认为A优于B。
(7) F 1 F1 F1度量: F 1 F1 F1为P和R的调和平均值。 1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F1}=\frac{1}{2}·(\frac{1}{P}+\frac{1}{R}) F11=21⋅(P1+R1) F 1 = 2 × P × R P + R F1=\frac{2×P×R}{P+R} F1=P+R2×P×R
(8) F 1 F1 F1度量的一般形式:对查准率/查全率有不同偏好。 1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) \frac{1}{F_{\beta}}=\frac{1}{1+\beta^2}·(\frac{1}{P}+\frac{\beta^2}{R}) Fβ1=1+β21⋅(P1+Rβ2) F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta}=\frac{(1+\beta^2)×P×R}{(\beta^2×P)+R} Fβ=(β2×P)+R(1+β2)×P×R
β > 1 \beta>1 β>1时查全率R有更大影响, β < 1 \beta<1 β<1时查准率P有更大影响。
若能得到多个混淆矩阵,并希望估算全局的性能时,使用宏、微度量。
(9)宏度量:先求得各个混淆矩阵的P和R,即 ( P i , R i ) (P_i,R_i) (Pi,Ri),再计算平均值。
m a c r o − P = 1 n ∑ i = 1 n P i macro-P=\frac{1}{n}\sum\limits_{i=1}^nP_i macro−P=n1i=1∑nPi m a c r o − R = 1 n ∑ i = 1 n R i macro-R=\frac{1}{n}\sum\limits_{i=1}^nR_i macro−R=n1i=1∑nRi m a c r o − F 1 = 2 × m a c r o − P × m a c r o − R m a c r o − P + m a c r o − R macro-F1=\frac{2×macro-P×macro-R}{macro-P+macro-R} macro−F1=macro−P+macro−R2×macro−P×macro−R(10)微度量:先将混淆矩阵的个元素进行平均,得到 T P ‾ , F P ‾ , T N ‾ , F N ‾ \overline{TP},\overline{FP},\overline{TN},\overline{FN} TP,FP,TN,FN,再计算各指标。 m i c r o − P = T P ‾ T P ‾ + F P ‾ micro-P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}} micro−P=TP+FPTP m i c r o − R = T P ‾ T P ‾ + F N ‾ micro-R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}} micro−R=TP+FNTP m i c r o − F 1 = 2 × m i c r o − P × m i c r o − R m i c r o − P + m i c r o − R micro-F1=\frac{2×micro-P×micro-R}{micro-P+micro-R} micro−F1=micro−P+micro−R2×micro−P×micro−R
很多模型是为测试样本产生一个实值或概率预测,我们根据这个实值或概率预测结果,可将测试样本进行排序,分类任务就是在这个排序中以某个阈值将样本分为两部分。
根据任务需求采用不同截断点:更重视“查准率”,选择靠前的位置截断;更重视“查全率”,则从靠后的位置截断。
排序本身的质量好坏,体现了 “一般情况下”泛化性能的好坏,ROC曲线是从这个角度出发研究学习器泛化性能的有力工具。
ROC曲线:类似P-R曲线,不过横轴是假正例率(FPR),纵轴是真正例率(TPR),两者定义如下。 T P R = T P T P + F N = T P m + TPR=\frac{TP}{TP+FN}=\frac{TP}{m^+} TPR=TP+FNTP=m+TP F P R = F P T N + F P = F P m − FPR=\frac{FP}{TN+FP}=\frac{FP}{m^-} FPR=TN+FPFP=m−FP
ROC图中,对角线对应于“随机猜测”模型,点 ( 0 , 1 ) (0,1) (0,1)对应于将所有正例排在所有反例之前的“理想模型”。
ROC曲线的绘制:
(11)包围度量:模型A的ROC曲线完全包围模型B的,则认为A优于B。
(12)AUC度量:ROC曲线下的面积。AUC越大,泛化性能越好,也就是排序质量越好。
给定 m + m^+ m+个正例和 m − m^- m−个反例, D + D^+ D+和 D − D^- D−分别表示正、反例集合,排序损失定义为: ℓ r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( Ⅱ ( f ( x + ) < f ( x − ) ) + 1 2 Ⅱ ( f ( x + ) = f ( x − ) ) ) ℓ_{rank}=\frac{1}{m^+m^-}\sum\limits_{x^+∈D^+}\sum\limits_{x^-∈D^-}(Ⅱ(f(x^+)
犯不同的错误往往会造成不同程度的损失,此时需考虑“非均等代价”。代价矩阵中, c o s t i j cost_{ij} costij表示将第 i i i类样本预测为第 j j j类的代价。
(13)代价敏感错误率: E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + Ⅱ ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∈ D − Ⅱ ( f ( x i ) ≠ y i ) × c o s t 10 ) E(f;D;cost)=\frac{1}{m}(\sum\limits_{x_i∈D^+}Ⅱ(f(x_i)≠y_i)×cost_{01}+\sum\limits_{x_i∈D^-}Ⅱ(f(x_i)≠y_i)×cost_{10}) E(f;D;cost)=m1(xi∈D+∑Ⅱ(f(xi)=yi)×cost01+xi∈D−∑Ⅱ(f(xi)=yi)×cost10)
在某种度量下取得评估结果后,是不可以直接比较以评判优劣的,原因如下:
偏差-方差分解用于解释学习算法的泛化性能。
对测试样本 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)=\mathbb{E}_D[f(x;D)] f(x)=ED[f(x;D)]以下进行偏差-方差分解,假设条件为:噪声期望为零,即 E D [ y D − y ] = 0 \mathbb{E}_D[y_D-y]=0 ED[yD−y]=0。