机器学习 模型评估与选择

一.模型评估的标准

①正确性与泛化能力
②计算速度
③鲁棒性(强壮性)
④可解释性
...

二.泛化能力
1.基础概念
(1)误差:

将根据模型得到的样本情况与样本的真实情况间的差异称为"误差"(Error),其中在训练集上的误差称为"训练误差"(Training Error)"经验误差"(Empirical Error),而在新样本上的误差称为"泛化误差"(Generalization Error).我们的目标是获取泛化误差尽可能小的模型,即在新样本上能
表现得很好的模型.为此,应从训练样本中尽可能学习出适用于所有潜在样本的"普遍规律"

(2)代价函数:

"代价函数"(Cost Function)是指所有样本的误差的均值与模型参数间的关系.确定模型参数的过程就是要找到代价函数最小值处的模型参数

(3)过拟合与欠拟合:

参见 机器学习.过拟合 部分

2.性能度量

"性能度量"(Performance Measure)指的是衡量模型泛化能力的评价标准.现在给定数据集D={
    
    (x1,y1),(x2,y2)...(xm,ym)}

(1)均方误差:

均方误差(Mean Squared Error)主要用于回归问题.其被定义为: E ( f ; D ) = ∑ i = 1 m [ f ( x i ) − y i ] 2 m E(f;D)=\frac{\displaystyle\sum_{i=1}^m[f(x_i)-y_i]^2}{m} E(f;D)=mi=1m[f(xi)yi]2更一般地,均方误差被定义为: E ( f ; D ) = ∫ x ∼ D ( f ( x i ) − y i ) 2 p ( x ) d x E(f;D)=\int_{x\sim D}(f(x_i)-y_i)^2p(x)dx E(f;D)=xD(f(xi)yi)2p(x)dx其中 p ( x ) p(x) p(x)是概率密度函数, D D D是数据分布

(2)准确率与错误率:

把分类错误的样本数占总样本数的比例称为错误率(Error Rate),即若在m个样本中有a个分类错误,则错误率 E = a m E=\frac{a}{m} E=ma;相应的,把 A = 1 − a m A=1-\frac{a}{m} A=1ma称为准确率(Accuracy).也就是说,设 r ( x i ) = { 1 , i ∈ { j   ∣   f ( x j ) ≠ y j } 0 , e l s e r(x_i)=\begin{cases}1,i∈\{j\,|\,f(x_j)≠y_j\}\\0,else\end{cases} r(xi)={ 1,i{ jf(xj)=yj}0,else则错误率为: E ( f ; D ) = ∑ i = 1 m r ( x i ) m E(f;D)=\frac{\displaystyle\sum_{i=1}^mr(x_i)}{m} E(f;D)=mi=1mr(xi)而准确率为: A c c ( f ; D ) = 1 − E ( f ; D ) = ∑ i = 1 m [ 1 − r ( x i ) ] m Acc(f;D)=1-E(f;D)=\frac{\displaystyle\sum_{i=1}^m[1-r(x_i)]}{m} Acc(f;D)=1E(f;D)=mi=1m[1r(xi)]更一般地,错误率为: E ( f ; D ) = ∫ x ∼ D r ( x ) p ( x ) d x E(f;D)=\int_{x\sim D}r(x)p(x)dx E(f;D)=xDr(x)p(x)dx而准确率为: A c c ( f ; D ) = ∫ x ∼ D [ 1 − r ( x ) ] p ( x ) d x Acc(f;D)=\int_{x\sim D}[1-r(x)]p(x)dx Acc(f;D)=xD[1r(x)]p(x)dx

(3)查准率,查全率,F1:

某些情况下我们更关心有多少正例被成功预测,这时就需要使用查准率(Precision)和查全率(Recall).二者的定义为:可将样例根据其真实类别与学习器预测类别的组合划分为真正例(True Positive)/假正例(False Positive)/真反例(True Negative)/假反例(False Negative),分别记为TP/FP/TN/FN.将混淆矩阵(Confusion Matrix)定义为:
在这里插入图片描述查准率和查全率被分别定义为: P = T P T P + F P R = T P T P + F N P=\frac{TP}{TP+FP}\\R=\frac{TP}{TP+FN} P=TP+FPTPR=TP+FNTP这二者是1对矛盾的度量:一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低.二者的关系如下:
在这里插入图片描述
该图称为P-R图,图中的3条曲线称为P-R曲线.曲线越远离原点算法性能越好,如B对应的算法优于C对应的算法.曲线存在交叉时,可使用P-R曲线下方的面积表示算法的性能,在此条件下A对应的算法优于B对应的算法.由于面积不好计算,可使用平衡点(Break-Event Point;BEP)处的值进行度量.平衡点是曲线上"查准率 == 查全率"的点,如A的平衡点为 ( 0.8 , 0.8 ) (0.8,0.8) (0.8,0.8),在3种算法中最优.还可使用F1进行度量: F 1 = 2 ∗ P ∗ R P + R = 2 ∗ T P 2 ∗ T P + F P + F N F1=\frac{2*P*R}{P+R}=\frac{2*TP}{2*TP+FP+FN} F1=P+R2PR=2TP+FP+FN2TP如果对查准率和查全率的重视程度不同,可加上权重得到 F β F_β Fβ: F β = ( 1 + β ) 2 ∗ P ∗ R β 2 ∗ P + R F_β=\frac{(1+β)^2*P*R}{β^2*P+R} Fβ=β2P+R(1+β)2PR很多时候需要在n个二分类混淆矩阵上综合考察查准率和查全率:如进行多次训练/测试,每次得到1个混淆矩阵;在多个数据集上进行训练/测试,希望估计算法的"全局"性能;执行多分类任务,每任意2个类别都对应1个混淆矩阵,这时有宏查准率(Macro-Precision),宏查全率(Macro-Recall),宏F1(Macro-F1): M a c r o − P = ∑ i = 1 n P i n M a c r o − R = ∑ i = 1 n R i n 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-P=\frac{\displaystyle\sum_{i=1}^nP_i}{n}\\Macro-R=\frac{\displaystyle\sum_{i=1}^nR_i}{n}\\Macro-F1=\frac{2*Macro-P*Macro-R}{Macro-P+Macro-R} MacroP=ni=1nPiMacroR=ni=1nRiMacroF1=MacroP+MacroR2MacroPMacroR微查准率(Micro-Precision),微查全率(Micro-Recall),微F1(Micro-F1): M i c r o − P = T P ˉ T P ˉ + F P ˉ M i c r o − R = T P ˉ T P ˉ + F N ˉ 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-P=\frac{\bar{TP}}{\bar{TP}+\bar{FP}}\\Micro-R=\frac{\bar{TP}}{\bar{TP}+\bar{FN}}\\Micro-F1=\frac{2*Micro-P*Micro-R}{Micro-P+Micro-R} MicroP=TPˉ+FPˉTPˉMicroR=TPˉ+FNˉTPˉMicroF1=MicroP+MicroR2MicroPMicroR

(4)ROC与AUC:

真正例率(True-Positive Rate;TPR)和假正例率(False-Positive Rate;FPR)被定义为: T P R = T P T P + F N F P R = F P T N + F P TPR=\frac{TP}{TP+FN}\\FPR=\frac{FP}{TN+FP} TPR=TP+FNTPFPR=TN+FPFP很多学习器是为测试样本产生1个实值或概率预测,然后将这个预测值与分类阙值(Threshold)进行比较,若大于阙值则为正类;否则为反类.这个实值或概率预测结果的好坏,直接决定了学习器的泛化能力.实际上,根据这个实值或概率,可将测试样本排序,越可能是正例的放在越前面.这样,分类就相当千在这个排序中用某个截断点(Cut Point)将样本分为2部分,第1部分作为正例,第2部分作为反例.根据截断点的不同选择,可以计算出相应的真正例率和假正例率,二者通常有如下关系:
在这里插入图片描述
上图称为ROC图,其中的曲线称为ROC曲线(Receiver Operating Characteristic Curve).ROC曲线下方的面积称为AUC(Area Under Curve),用于衡量学习器的性能,近似为: A U C ≈ 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + 1 + y i ) AUC≈\frac{1}{2}\displaystyle\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_{i+1}+y_i) AUC21i=1m1(xi+1xi)(yi+1+yi)可以看出: A U C ∈ [ 0.5 , 1 ] AUC∈[0.5,1] AUC[0.5,1],其中进行随机猜测时 A U C = 0.5 AUC=0.5 AUC=0.5.并可定义损失(Loss)为: l = 1 − A U C l=1-AUC l=1AUC

3.评估方法

使用模型在测试集上的"测试误差"(Testing Error)作为泛化误差的近似

(1)划分数据集:

将数据集划分为训练集和测试集,用训练集进行训练,再用测试集确定模型的泛化误差

(2)交叉验证法:

将数据集D划分为k个大小相近的互斥子集D1,D2...Dk,并尽可能保证各子集的数据分布的一致性.每次使用k-1个子集作为训练集,剩下的1个子集作为测
试集,这样就得到k个测试结果.用这k个结果的平均值作为评估模型准确率的依据,这种方法称为"k折交叉验证"(K-Fold Cross Validation).为了减小
不同划分造成的影响,k折交叉验证通常需要随机使用不同的划分重复p次,使用这p次的结果作为评估模型准确率的依据
设D包含m个样本,若令k=m,就得到了k折交叉验证的特例"留一法"(Leave-One-Out;LOO).这种方法不受划分方法的影响并且训练集和原数据集的差别很
小,从而被实际评估的模型与期望评估的用D训练出的模型很相似.缺点则是在数据集较大时计算开销极大

(3)自助法:

"自助法"(Bootstrapping)"自助采样法"(Bootstrap Sampling)为基础:给定1个包含m个样本的数据集D;每次随机从D中挑选1个样本,重复m次后就
得到了1个包含m个样本的数据集D1.显然,D中有一部分样本会在D1中多次出现,而另一部分样本则不会出现在D1中

样本在m次采样中始终不被采到的概率是 ( 1 − 1 / m ) m (1-1/m)^m (11/m)m,取极限得到:
lim ⁡ m → ∞ ( 1 − 1 m ) m = 1 e \lim_{m\to\infty}(1-\frac{1}{m})^m=\frac{1}{e} mlim(1m1)m=e1

可将D1作为训练集,而将D-D1作为测试集.这种方法也称为"包外估计"(Out-of-bag Estimate).自助法在数据集较小,难以有效划分训练/测试集时很有
用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处.但是自助法产生的数据集改变了初始数据集的分布,这会引
入估计偏差,因此在初始数据景足够时交叉验证法更常用一些

(4)调参:

"调参"(Parameter Tuning)指的是对算法参数进行设置.通常在一定范围内按一定步长选择1组候选参数,再选出其中最优的参数.另外,由于训练集和原
数据集存在差别,选定模型后需要利用原数据集重新调参

4.比较检验

可使用"统计假设检验"(Hypothesis Test)进行检验.以下均使用错误率ε作为性能度量

(1)单个学习器泛化性能检验:

"二项检验"(Binomial Test)
"T-检验"(T-Test)

(2)多个学习器的性能比较:

"成对T-检验"(Paired T-Test)
"配对卡方检验"(Paired Chi-Square Test)/"麦克尼马尔检验"(McNemar’s Test)
"弗里德曼检验"(Friedman Test)
"Nemenyi检验"(Nemenyi Test)

5.偏差-方差分解
(1)偏差-方差分解:

偏差-方差分解(Bias-Variance Decomposition)是1种解释算法泛化性能的重要工具,其试图对学习算法的期望泛化错误率进行拆解.对测试样本 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 ) ] \bar{f}(x)=E_D[f(x;D)] fˉ(x)=ED[f(x;D)]使用样本数相同的不同训练集产生的方差为 v a r ( x ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] var(x)=E_D[(f(x;D)-\bar{f}(x))^2] var(x)=ED[(f(x;D)fˉ(x))2]噪声为 ε 2 = E D [ ( y D − y ) 2 ] ε^2=E_D[(y_D-y)^2] ε2=ED[(yDy)2]期望输出与真实标记间的差别称为偏差(Bias),为 b i a s 2 ( x ) = [ f ˉ ( x ) − y ] 2 bias^2(x)=[\bar{f}(x)-y]^2 bias2(x)=[fˉ(x)y]2为便于讨论,假设噪声期望为零,即 E D ( y D − y ) = 0 E_D(y_D-y)=0 ED(yDy)=0.通过简单的多项式展开合并,可对算法的期望泛化误差进行分解,得到 E ( f ; D ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] + ( f ˉ ( x ) − y ) 2 + E D [ ( y D − y ) 2 ]   = b i a s 2 ( x ) + v a r ( x ) + ε 2 \quad\qquad\qquad E(f;D)=E_D[(f(x;D)-\bar{f}(x))^2]+(\bar{f}(x)-y)^2+E_D[(y_D-y)^2]\\\,=bias^2(x)+var(x)+ε^2\qquad\qquad\quad E(f;D)=ED[(f(x;D)fˉ(x))2]+(fˉ(x)y)2+ED[(yDy)2]=bias2(x)+var(x)+ε2也就是说,泛化误差可分解为偏差,方差与噪声的和,其中偏差度量了期望预测与真实结果间的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度.偏差-方差分解说明,泛化性能是由学习算法的能力/数据的充分性/学习任务本身的难度所共同决定的.给定学习任务,为了取得好的泛化性能,应充分拟合数据(减小偏差)并降低数据扰动(减小方差)

(2)偏差-方差窘境:

一般来说,偏差与方差是有冲突的,称为偏差-方差窘境(Bias-Variance Dilemma).给定学习任务,假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学习到,方差逐渐主导了泛化错误率
在这里插入图片描述

三.鲁棒性的评估

四.可解释性的评估

猜你喜欢

转载自blog.csdn.net/weixin_46131409/article/details/113891907