机器学习——模型评估与选择

1. 经验误差与过拟合

在这里插入图片描述
经验:对于特定机器学习任务,已存在的可利用数据即是解决该机器学习任务的经验。
误差:模型的预测输出和样本的真实输出之间的差异。
经验误差:模型在训练集上的误差,也称训练误差。
泛化误差:模型在新样本上的误差,是实际误差。
测试误差:模型在测试集上的误差,用来近似泛化误差。

问题:什么是好的模型?
答:能够很好地适用于未见样本(新样本),也就是泛化误差小的模型。

在这里插入图片描述
在这里插入图片描述
过拟合:模型把训练样本自身特点当做一般性质,导致泛化性能下降。
欠拟合:模型对训练样本的一般性质尚未学好。

欠拟合容易克服,过拟合无法彻底避免,只能缓解。

2. 评估方法(获得测试结果)

用测试集上的测试误差近似泛化误差,用于对模型进行评估。但是应当注意,测试集应该尽可能与训练集互斥
那么,应该如何获得测试集?

留出法(hold-out)

流程:将数据集 D D D划分为两个互斥集合,即训练集 S S S和测试集 T T T
注意:

  • 保持数据分布一致性(避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如分类任务中保持样本的类别比例相似—分层采样)
  • 多次重复划分(单次使用留出法得到的估计结果往往不够稳定可靠,要多次实验,一般采用若干次随机划分、重复进行实验后取平均值作为评估结果)
  • 测试集不能太大、不能太小(测试集小,方差较大,训练集小,偏差较大。常见值:1/5~1/3,一般测试集至少应含30个样例)

交叉验证法(cross validation)

流程:将数据集 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训练出的模型(训练集只少了一个样本),但数据集较大时开销极大。

自助法(bootstrapping)

自助法基于自助采样法,也称为可重复采样、有放回采样。
流程:从有 m m m个样本的数据集 D D D中随机有放回地抽取 m m m次,得到数据集 D ′ D' D,将 D ′ D' D作为训练集, D − D ′ D-D' DD作为测试集。

样本在 m m m次采样中始终不被采到的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1m1)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)重新训练最终模型。

3. 性能度量(评估性能优劣)

性能度量:衡量模型泛化能力的评价标准,反映了任务需求。使用不同的性能度量会产生不同的结果。模型的好坏是相对的,不仅取决于算法和数据,也取决于任务需求。
回归任务最常用的性能度量是均方误差 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=1m(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=1m(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=1m(f(xi)=yi)

查准率、查全率与 F 1 F1 F1

在这里插入图片描述在这里插入图片描述
(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 macroP=n1i=1nPi m a c r o − R = 1 n ∑ i = 1 n R i macro-R=\frac{1}{n}\sum\limits_{i=1}^nR_i macroR=n1i=1nRi 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} macroF1=macroP+macroR2×macroP×macroR(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}} microP=TP+FPTP m i c r o − R = T P ‾ T P ‾ + F N ‾ micro-R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}} microR=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} microF1=microP+microR2×microP×microR

ROC与AUC

很多模型是为测试样本产生一个实值或概率预测,我们根据这个实值或概率预测结果,可将测试样本进行排序,分类任务就是在这个排序中以某个阈值将样本分为两部分。
根据任务需求采用不同截断点:更重视“查准率”,选择靠前的位置截断;更重视“查全率”,则从靠后的位置截断。
排序本身的质量好坏,体现了 “一般情况下”泛化性能的好坏,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=mFP

ROC图中,对角线对应于“随机猜测”模型,点 ( 0 , 1 ) (0,1) (0,1)对应于将所有正例排在所有反例之前的“理想模型”。

ROC曲线的绘制:

  • 给定 m + m_+ m+个正例和 m − m_- m个反例,根据模型预测结果对样例进行排序;
  • 将分类阈值设为最大,即所有样例均预测为反例,此时TPR和FPR都为0,在 ( 0 , 0 ) (0,0) (0,0)处标记一个点;
  • 将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记点坐标为 ( x , y ) (x,y) (x,y),若当前是真正例,则标记 ( x , y + 1 m + ) (x,y+\frac{1}{m^+}) (x,y+m+1);若当前是假正例,则标记 ( x + 1 m − , y ) (x+\frac{1}{m^-},y) (x+m1,y)
  • 最后,用线段连接相邻点。

(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^+)<f(x^-))+\frac{1}{2}Ⅱ(f(x^+)=f(x^-))) rank=m+m1x+D+xD((f(x+)<f(x))+21(f(x+)=f(x)))故: A U C = 1 − ℓ r a n k AUC=1-ℓ_{rank} AUC=1rank

代价敏感错误率与代价曲线

犯不同的错误往往会造成不同程度的损失,此时需考虑“非均等代价”。代价矩阵中, 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(xiD+(f(xi)=yi)×cost01+xiD(f(xi)=yi)×cost10)

4. 比较检验(判断实质差别)

在某种度量下取得评估结果后,是不可以直接比较以评判优劣的,原因如下:

  • 测试性能≠泛化性能
  • 测试性能随测试集不同而变化
  • 很多机器学习算法本身就有一定的随机性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 偏差与方差

偏差-方差分解用于解释学习算法的泛化性能。
对测试样本 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[yDy]=0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值