西瓜书 第二章 模型评估与选择

第二章主要讲模型的评估与选择,使用什么评估方法(介绍了几种评估方法)来测量学习器的性能度量(学习器有哪些性能度量),然后怎么对这些性能度量进行比较检验来选择出合适的学习器。

2.1经验误差与过拟合

这一小节主要介绍了一些定义,我们一起来看一下吧。
错误率:分类错误的样本数占样本总数的比例。E=a/m
精度:分类正确的样本数占样本总数的比例。1-a/m
误差:学习器的实际预测输出与样本的真是输出之间的差异。
误差分为训练误差泛化误差训练误差是学习器在训练集上面的误差又称为经验误差泛化误差指学习器在新样本上面的误差。
“过拟合”:将训练样本的一些个性当成共性,导致拟合能力下降。
同一个算法使用不同参数都会产生不同的模型,我们该如何选择呢?怎样对模型进行评估?

2.2评估方法

我们通过实验来测试学习器的泛化误差,一般将测试集上面的测试误差作为泛化误差的近似,所以测试集应该与训练集尽可能互斥,即测试样本尽量不要在训练样中出现。

留出法

定义:将训练集D分为两个互斥的集合,一个作为训练集S,一个作为测试集T。D=S∪T,S∩T=∅。
留出法有两个需要注意的点:①保持数据分布的一致性,所以一般采用“分层采样”。例如:训练集中正例取了样本集合中正例的百分之60,那么反例同样有取百分之60。②即使给定比例,划分方法也有多种,所以需要多次随机划分、重复进行试验评估后取平均值
缺点:①若S包含较多样本,则T太少评估结果不准确。
           ②若T包含较多样本,则S因为样本少训练出来的模型与D训练出来的模型相差太大,失去保真性。
取样时一般将大约2/3~4/5的样本用于训练。

交叉验证法

定义:将数据集D按分层采样的方法划分为K个大小相似的互斥子集,然后每次使用K-1个子集的并集作为训练集,剩下的那个子集为测试集,从而进行K次训练和测试,结果取平均值,所以又称为“K折交叉验证”。
【注】与留出法相似,存在多种划分为k个子集的方法,所以要随机使用不同方法划分重复P次,结果取P次K折交叉验证的均值。
但是有一个特例留一法,顾名思义将m个样本划分为m个子集。留一个作为测试,但是如果样本过多成本太大,并且留一法训练出来的模型与用D 训练的模型很相似,其结果也未必是最优的。

自助法

定义:在m个样本的数据集D中进行有放回的取样,进行m次,得到一个有m个样本的训练集D',而D则作为测试集。
在数据集D中约有1/3的样本没有出现在训练集中。
优点:①数据集小,难以有效划分训练集和测试集时很有用。
           ②可以产生多个训练集对集成学习很有用。
缺点:改变原有的数据集分布,引入估计偏差,所以数据量足够时,尽量使用留出法和交叉验证法。

调参和最终模型

调参:对算法参数的设定。通常对每个参数设定一个范围和变化步长,从而进行不断测试。
最终模型:我们在进行模型评估和选择时,将数据集D中一部分留出进行测试,一部分用于训练,当模型选择完成,学习算法和参数配置已经确定,这时用数据集D重新训练出来的模型才是最终模型。
【注】模型实际使用中遇到的数据称为测试数据,在模型评估和选择中用于测试的数据集称为“验证集”。

2.3性能度量

性能度量:衡量模型泛化能力的评价标准。
我们在进行模型评估时就是为了得到模型的性能度量从而进行比较来得到泛化能力强的模型。

错误率和精度

错误率:分类错误的样本数占样本总数的比例。

无标题.png

精度:分类正确的样本数占样本总数的比例。
无标题.png

【注】Ⅱ(x)当x为真时返回1,为假时返回0。

查准率、查全率与F1

查准率:查找出来的数据有多少是需要的。
查全率:我们需要的数据有多少被查找出来。

分类结果混淆矩阵 .png

查准率P=TP/(TP+FP)
查全率R=TP/(TP+FN)
【注】查准率和查全率相矛盾,若查准率高,则查全率往往偏低。例如:只找出一个最有把握的数据,那么查准率就是百分之百,但是查全率就要小很多了。

我们可以根据对样本的检测来计算出查全率和查准率,从而以查准率为纵轴,查全率为横轴得到P-R曲线

P-R曲线与平衡点示意图.png

从上图我们可以很方便的看出每一个学习器的查准率和查全率,若一条曲线被另一条曲线完全“包住”,则后者的性能有更优。因为在相同查准率的情况下其查全率更高。
而当两者有交叉时,要怎么判断呢?
这就引入了平衡点(简称:BEP):查全率=查准率时的值;而BEP大的则更优。
除了BEP外,人们更常用F1度量。
F1=(2*P*R)/(P+R)=(2*TP)/(样例总数+TP-TN)
而由于人们在面对不同任务时对查准率和查全率的侧重不同,所以引入了F1度量的一般形式Fβ,用来表示人们对查准率和查全率的不同偏好。
无标题.png

【注】β>0度量了查全率对查准率的相对重要性。β=1时则变成上面的F1;β>1时更注重查全率;β<1更注重查准率。
宏查准率、宏查全率对于每次测试都求出相应的查准率、查全率然后求均值;而宏F1利用宏查准率和宏查准率计算得到的F1。
微查全率、微查准率对于每次测试得到的TP、FP、TN、FN求均值,再用这些均值来计算查全率和查准率。

ROC与AUC

ROC(全称是受试者工作特征曲线):以真正例率TPR为纵轴,假正例率FPR为横轴,用来研究学习器泛化性能的好坏的曲线。
【注】TPR=TP/(TP+FN),FPR=FP/(TN+FP)

ROC曲线与WUC示意图.png

AUC:ROC曲线下的面积.

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

如果学习器将样本判断错误,不同的错误所造成的代价不同的,所以错误是“非均等代价”的。
在非等价错误的前提下,我们不能在单单以错误率这样的性能度量大小来比较了,而是希望最小化“总体代价”。

代价敏感错误率.png

代价曲线:用来反映学习器的期望总体代价的曲线,以取值为[0,1]正例概率代价为横轴,纵轴以取值[0,1]的归一化代价,通过ROC曲线上的点来计算出FPR和FNR,在代价平面上化出(0,FPR)到(1,FNR)的线段,所有线段下的面积交集就是总体代价期望
代价曲线与期望总体代价.png

【注】FPR是假正例率,FNR=1-TPR(真正例率)是假反例率。

2.4比较检验

这一节主要介绍了我们如何比较测试集上学习器A与B的好坏,且A的泛化性能在统计意义上是否优于B,且得到这个结论的概率是多少。

泛化错误率和我们进行测试的错误率并不相等,但是相差不大,所以可以根据测试的错误率来推出泛化错误率。
泛化错误率:学习器在一个样本上判断错误的概率。
测试错误率:学习器在样本集m中有a(测试错误率)*m个样本判断错误。

二项检验

假设泛化错误率为γ的学习器将m'个样本错误分类、其他样本正确分类的概率,通过这个概率来写出泛化错误率为γ的学习器被测得测试错误率为β的概率。将被测错的m'=β*m代替。

公式.png

而在给定测试错误率的情况下函数通过对γ求偏导为0可得当β=γ时概率最大,而且上面的概率符合二项分布。
通过二项分布我们可知,在显著度为a的情况下,有1-a的概率认为γ≤γ0

t检验

我们进行多次测试可以得到多个测试错误率,对它们求均值错误率和均方差。
平均错误率
平均方差
因为这k个测试错误率可看作泛化错误率的独立采样,所以变量服从自由度为k-1的t分布。
从而假设“u=”和显著度a时,我们就可以在1-a的概率下求出最大的泛化错误率,即临界值。
【注】上面两种方法都是针对单个学习器假设进行检验

交叉验证t检验

两个学习器进行k折交叉验证法得到k对测试错误率,对每对测试错误率求差,若二者性能相同则差全为0。根据这k个差值求出差值均值和方差,在显著度a下,若变量小于临界值,则认为两个学习器没有显著区别。
【注】是自由度为k-1的t分布上尾部累积分布为的临界值。
测试错误率均为泛化错误率的前提是独立采样,但是通常因为样本数量有限所以会有重复,使的样本不独立,所以人们使用“5*2交叉验证”。
“5*2交叉验证”即五次2折交叉验证,取第一次和第二次二折验证的差值求平均值。但是方差是每一次都要计算出来的,从而变量服从自由度为5的t分布,且其双边检验的临界值,当a=0.05时为2.5706,a=0.1时为2.0150。

McNemar检验

两个学习器A和B给定一组数据,给它们进行判断有四种情况两者都对,两者都错,A对B错,B对A错。
A对B错用表示,B对A错用表示
若我们假设学习器性能相同,两者应该相等,则两者的差服从正态分布。
McNemar检验考虑变量服从自由度为1的卡方分布。给定自由度a,以上变量值小于临界值时,两个学习器没有显著区别。
【注】自由度为1的卡方分布检验临界值当a=0.05时为3.8415,a=0.1时为2.7055。

Friedman检验与Nemenyi后续检验

上面的检验是针对两个学习器的,而现在所提到的检验是针对一组数据多个学习器的检验。
我们有n组数据集k个算法,对于每一组数据集我们将它放入k个算法可以得到k个测试结果从而进行排序,由好到坏进行1,2,3,...赋值。这样一个算法就有N个值从而可以求出平均序值。若平均序值相同则算法相同。

令表示第i个算法的平均序值,则的均值和方差为(k+1)/2和,变量,在k和N较大时,服从自由度k-1的卡方分布。
因为上面的检验过于保守所以现在使用的变量是,其服从自由度为k-1和(k-1)(N-1)的F分布。

F检验的常用临界值.png

整理一下思路:一般我们拿到N数据集要比较K个算法,则将N和k代入求出,然后再把代入上面的式子求出,根据自由度和算法个数在上面的表格中找出临界值,若大于临界值则说明算法性能显著不同需要进行后续检验。
Nemenyi后续检验计算出平均序值差别的临界值域,然后与两个平均序值差比较,若平均序值差不大于临界值则两个算法没有显著区别。
【注】下面是置信度a=0.05和a=0.1常用的
Nemenyi后续检验中常用的qa值.png

2.5偏差与方差

“偏差-方差分解”是解释学习算法泛化性能的一种重要工具。
对测试样本,令为在数据集中的r标记(若有噪声则),为的真实标记,为训练集D上学的模型f在上的预测输出。
算法的期望预期:
使用样本数相同的不同训练集的方差为:
噪声为:
期望输出与真实标记的差别称为偏差(bias),即
泛化误差可分解为偏差、方差与噪声之和

你可能感兴趣的:(西瓜书 第二章 模型评估与选择)