西瓜书学习笔记(第二章、模型评估与选择)

第二章、模型评估与选择

 


一、经验误差与过拟合

1.重要概念

错误率(error rate):分类错误的样本数占样本总数的比例,即如果在m个样本中有a个样本分类错误,则错误率E=a/m

精度(accuracy):精度=1-错误率

训练误差(经验误差):学习器在训练集上的误差

泛化误差:学习器在新样本上的误差

2.过拟合&欠拟合

过拟合(overfitting):当学习器将训练样本学得太好时,可能将训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降。一般来说,对一个监督学习模型,过大的特征集或者过多的训练轮数可能会导致过拟合。

欠拟合(underfitting):与过拟合相对,是指对训练样本的一般性质都尚未学好,一般是由于学习能力低下或者训练轮数还不够导致的。


二、评估方法

        我们需要实验测试来对学习器的泛化误差进行评估,因此需要一个测试集(testing set)来测试学习器对新样本的判别能力,那么要如何得到测试集呢?这里介绍了几个常见的方法:

1.留出法

“留出法”(hold out)直接将数据集划分为两个互斥的集合,其中一个作为训练集,另一个作为测试集。但需要注意两点:

  1. 训练/测试集的划分要尽可能保持数据分布的一致性,例如在分类任务中至少要保持样本的类别比例相似;
  2. 一般使用留出法时,要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果,例如进行100次随机划分,每次产生一个训练集/测试集划分用于测试,100次结果平均后得到最终结果。

2.交叉验证法

“交叉验证法”(cross validation)与留出法类似,但其步骤相对复杂:

1.将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从D中通过分层采样得到;

2.每次用k-1个子集的并集作为训练集,余下的子集作为测试集,这样可以获得k组训练集/测试集,从而进行k次训练和测试;

3.最终返回这k个测试结果的均值。

可以发现交叉验证法结果的稳定性和保真性在很大程度上取决于k的取值,因此也把交叉验证法称为“k折交叉验证”(k-fold cross validation),k最常用的取值为10。

 与留出法相似,划分方式同样多种,这里为了减少因样本划分不同而带来的差别,k折交叉验证通常也要随机使用不同的划分方式重复p次,最终的评估结果是这p次k折交叉验证的结果,比较常见的有“10次10折交叉验证”。

特例:留一法(Leave-One-One,简称LOO)

假定样本集有m个样本,若令k=m,即每次划分中每个子集只包含一个样本,则为留一法。

优点:1.留一法不受随机划分方式的影响,因为m个样本只有唯一的划分方式;

           2.留一法使用的训练集与初始训练集相比只少了一个样本,因此与期望评估的用初始训练集训练出来的模型很相似,评估结果很准确。

缺点:在数据集较大时,训练m个模型的开销是难以承受的。

3.自助法

在留出法和交叉验证法中,都保留了一部分样本作为测试,因此实际评估所使用的训练集比初始训练集小,这必然会引入一些因训练样本规模不同而导致的估计偏差。因此“自助法”(bootstrapping)被提出来解决这个问题,其步骤为:

1.每次随机从D中挑选一个样本,将其拷贝后放入D’(新数据集),然后将该样本放回初始数据集,使得该样本下次采样时仍有机会被采样;

2.过程1重复执行m(m为初始数据集的样本数)次,就得到了包含m个样本的数据集D’;

3.将D’作为训练集,D\D'作为测试集(即未出现在采样数据集D’中的样本)进行训练,并得到最终结果。

在这里可以做一个简单的估计,样本在m次采样中始终不被采样到的概率为  \left ( 1-\frac{1}{m} \right )^{m} ,当m趋于无穷大时,该概率接近0.368,由此可以得到数据总量三分之一的样本用于测试,这样的测试结果,也称为包外测试(out-of-bag estimate)。

自助法常常用于数据集较小、难以有效划分训练集/测试集的情况下,它产生的数据集改变了初始数据集的分布,会引入估计偏差,因此在初始数据集足够大时,还是更常用留出法和交叉验证法。


 

三、性能度量

性能度量是指衡量模型泛化能力的评价标准,在对比不同模型的能力时,使用不同的性能度量往往导致不同的评判结果。

回归任务最常用的性能度量是均方误差(MSE,mean squared error)

E\left ( f;D \right )=\frac{1}{m}\sum_{m}^{i=1}\left ( f\left ( x_{i} \right )-y_{i} \right )^{2}

下面介绍分类任务中常用的性能度量:

1.错误率与精度

如开头所介绍的两种最常用的度量,错误率是指分类错误的样本数占样本总数的比例,精度则是指分类正确的样本数占样本总数的比例。

2.查准率(pre)、查全率(rec)以及F1

在介绍查准率和查全率之前,首先要了解四个概念,对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为:

  • 真正例(true positive):TP,例如本来是好瓜,经过预测也被判定为好瓜;
  • 假正例(false positive):FP,例如本来是坏瓜,经过预测被判定为好瓜;
  • 真反例(true negative):TN,例如本来是坏瓜,经过预测也被判定为坏瓜;
  • 假反例(false negative):FN,例如本来是好瓜,经过预测被判定为坏瓜。

记忆这个概念有个诀窍,前面T/F代表是否判定正确,后面P/N代表着判定结果,其混淆矩阵为:

 由此可以引出查准率和查全率两个概念:

查准率(precision、亦称准确率)是指所判断出来的正例中有多少是真正的正例,例如“挑出的好瓜中有多少比例是好瓜”、“针对用户检索出的信息有哪些是用户真正感兴趣的”,其数学定义为:

P=\frac{TP}{TP+FP}

查全率(recall、亦称召回率)是指所有正例中有多少正例被判定出来,例如“所有好瓜中有多少比例被挑了出来”、“用户感兴趣的信息有多少被挖掘出来了”,其数学定义为:

R=\frac{TP}{TP+FN}

再举一个例子:“不能冤枉一个好人,不能放过一个坏人。”

前一句重在查准率,后一句重在查全率。

查准率和查重率是一对矛盾的度量,呈现出此消彼长的趋势。根据学习器的预测结果对样例进行排序,排在前面的是“最可能”是正例的样本,按此顺序逐个把样本作为正例进行预测,则每次可以分别计算出当前的查准率和查全率。以每次的查准率为纵轴、查全率为横轴,可以得到“P-R曲线”。

在进行比较时,若一个学习器的PR曲线完全被另一个所包住(如A的曲线包住C),则可以断言后者性能较优;但如果两条曲线发生交叉(如A和B),此时可以采用平衡点(Break-Even Point,BEP)进行度量,它是“P=R”时的取值,图中可以发现A性能优于B。

但BEP还是过于简化了,更常用的还是F1度量,它是基于查准率和查全率的调和平均:

F1=\frac{2\times P\times R}{P+R}

简单介绍一下调和平均(harmonic mean):又称倒数平均数,是总体各统计变量倒数的算术平均数的倒数。在这里即为:

\frac{1}{F1}=\frac{1}{2}\cdot \left ( \frac{1}{P}+\frac{1}{R} \right )

 当需要在n个二分类混淆矩阵上综合考察查准率和查全率时,有两种做法:

一种做法是先在各混淆矩阵上分别计算出查准率和查全率,再计算平均值,这样就得到宏查准率(macro-P)、宏查全率(macro-R)、以及相应的宏F1(macro-F1)。

另一种做法是将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,再根据这些平均值计算出微查准率(micro-P)、微查全率(micro-R)、以及相应的微F1(micro-F1)。

 3.ROC和AUC

在介绍ROC曲线之前,同样需要先搞清楚两个概念:

真正例率(TPR):被预测为正样本的正样本数与总的正样本数之比。

TPR=\frac{TP}{TP+FN}

假正例率(FPR):被预测为正样本的负样本数与总的负样本之比。

FPR=\frac{FP}{TN+FP}

 ROC曲线以TPR为纵轴,以FPR为横轴。同时,与构造PR曲线步骤类似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个将样本作为正例进行预测,每次计算出TPR和FPR的值,并相应作出ROC曲线。

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

利用ROC曲线进行学习器的比较时,若一个学习器的ROC曲线被另一个学习器的ROC曲线完全包住,则可断言后者的性能优于前者。更为合理的判据则是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)。

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

在现实任务中常常会遇到这样的情况:不同类型的错误所造成的后果不同。为了权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)。以二分类任务为例,可以根据任务的领域知识设定一个代价矩阵:

 在非均等代价下,我们所希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”。由此可以得到“代价敏感”错误率为:

 其实就是在之前计算错误率的基础上,加上了每种错误的错误代价。

在此基础上,对两个代价cost01和cost10进行归一化,这里还引入了p(样例为正例的概率),得到正例概率代价:

P\left ( + \right )_{cost}=\frac{p\times cost_{01}}{p\times cost_{01}+\left ( 1-p \right )\times cost_{10}}

 由此继续可以推出归一化后的代价为:

 以归一化代价为纵轴,以正例概率代价为横轴,可得代价曲线:

其中ROC曲线上的每一点对应代价平面上的一条线段,由归一化代价的式子可以发现:

 当P(+)取0时(即p=0时),cost=FPR;当P(+)取1时(即p=1时),cost=FNR。

如此可知,代价线段必然经过(0,FPR)和(1,FNR)两点,根据ROC曲线上的每个点(FPR,TPR),可计算出FNR(FNR=1-TPR),进而可以通过两点绘制出线段。如此将ROC曲线上的每一点转化成代价平面的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价。


第四节比较检验因为笔者用得比较少,暂未整理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值