《机器学习》(周志华)学习笔记(二):模型评估与选择

引子:对于一个任务,往往有多种算法可供选择,甚至同一种算法,参数设置不同,对应的模型也不一样,我们需要对模型进行评估与选择。评估依据是模型的泛化误差。

1.泛化误差概念理解

错误率(error rate)与精度(accuracy):根据模型分类错误的样本占中样本的比例,如m个样本中有a个分类错误,E =a/m。对应的,精度=1-a/m。
以此推广,我们将预测输出与实际真实输出的差异称之为误差(这里说的误差均为误差期望),学习器在训练集中的误差为训练误差(training error)或经验误差(empirical error),在新样本中的误差为泛化误差(generalization error)。
我们的目标是选择泛化误差小,即泛化能力强(对新样本适应性好)的模型。
影响泛化能力的重要因素——过拟合:学习器把训练样本的某些不一般特效当成“普遍规律”。过拟合不可彻底消除,可以通过一些手段减小(见后续章节)。与过拟合对应的是欠拟合,学习器学习能力低下导致的,可以通过在决策树种增加分枝或者神经网络中增加层数等手段克服。二者类比见西瓜书图示如下。
《机器学习》(周志华)学习笔记(二):模型评估与选择

2.泛化误差评估方法

泛化误差是模型在新样品中的误差,自然无法直接得到,通常采用实验测试来对其评估。通过一个测试集的测试误差来进行近似泛化误差。这里就需要将数据集分成两部分:训练集S和测试集T,二者需要彼此互斥。划分方法常用的有一下几个。

2.1.留出法

概念:直接将数据集D 划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集T。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
注意事项:(1)数据划分必须保证分布一致性,如采用分层采样;(2)存在多种划分方法,单次往往不可靠,一般多次划分求平均;(3)测试集小时,评估结果的方差较大, 训练集小时,评估结果的偏差较大,一般是将大约2/3~4/5 的样本用于训练,剩余样本用于测试。

2.2.交叉验证法

交叉验证法是将数据集D分为k个大小相似的互斥子集Di,每个子集尽可能保持数据分布一致。每次选取一个子集作为测试集,其余k-1个子集的并集作为训练集进行验证,这样可以进行k次验证,最后结果取k次验证结果的均值。这种方式称为“k折交叉验证”,k常取10。同留出法类似,将数据集D划分为k个子集同样存在多种划分方式,为了减小因为划分方式不同引入的误差,k折交叉验证也需要随机使用不同的划分方式重复p次,取最终结果的平均值作为验证结果,这种方式称为“p次k折交叉验证”。
特殊的,假定数据集含有m个样本,当k=m,即每个样本为一个子集,这种交叉验证方式称为“留一法(leave-one-out,LOO)”。留一法仅有一种划分方式因此不受随机样本划分方式的影响,而且使用的训练集样本个数仅比这个数集少了一个,留一法评估结果较准确。但当数据集很大时,计算开销也会达到难以接受。

2.3.自助法

自助法又称“可重复采样”或“有放回采样”。操作方法如下:从数据集D(含m个样本)里每次随机抽取一个样本放入数据集D’中,同时保证初始数据集D的数据不变,该样本下次采样仍有可能被采到(也可以理解为抽取一个数据复制副本放入新数据集,原始数据放回原数据集)。这样重复m次得到一个含有m个样本的数据集D’。显然,D’中会有一些重复的样本,D中的样本会有一部分没有被采集到。D中一个样本每次不被采到的概率为1-1/m,m次不被采到的概率即为(1-1/m)^m,取极限有
《机器学习》(周志华)学习笔记(二):模型评估与选择
也即每个数据在m次采样后没有出现D’中的概率为36.8%,初始数据集D中约有36.8%的数据未出现在数据集D’中。我们将D’作为训练集(含m个样本),D\D’(为数据集减法)作为测试集(含约0.368m个样本),这种测试结果又称“包外估计”。这种方法好处:实际评估的模型和期望评估的模型都是使用m个训练样本,前面留出法和交叉验证法中因为样本规模不同导致的估计偏差可以得到降低。这种方法在数据量不大或难以划分数据集时又要,但这种方法自身产生的数据集合原始数据集数据分布上存在偏差,也会引入估计偏差。数据量足够时通常采用前两种方法。

调参:在进行模型评估时,除了要对算法进行选择,大多数算法还有大量参数需要设定。调参对于最终模型性能影响很大。

2.3.性能度量

有了实验估计方法后还需要具体的衡量泛化性能的指标,直接说性能度量。
对于回归任务,最常用均方误差来衡量:
《机器学习》(周志华)学习笔记(二):模型评估与选择
对于数据分布D和概率密度函数p(x)更一般的表达式为:
《机器学习》(周志华)学习笔记(二):模型评估与选择
下面重点探讨分类任务。

2.3.1.错误率与精度

错误率与精度的概念前面已有提及。错误率数学定义为
《机器学习》(周志华)学习笔记(二):模型评估与选择
精度定义为
《机器学习》(周志华)学习笔记(二):模型评估与选择
更一般的表达式为
《机器学习》(周志华)学习笔记(二):模型评估与选择
《机器学习》(周志华)学习笔记(二):模型评估与选择

2.3.2.查准率、查全率及F1

查准率:挑中的瓜中好瓜的比例占多少。
查全率:所有好瓜被挑中的比例占多少。
对于二分类问题,可将样本分为四类:
《机器学习》(周志华)学习笔记(二):模型评估与选择
则查准率P和查全率R可用下面表达式表示
《机器学习》(周志华)学习笔记(二):模型评估与选择
对于一般任务,这两个指标是相互矛盾的。二者关系可以用PR图表示。
《机器学习》(周志华)学习笔记(二):模型评估与选择
比较两个算法优劣的方法
(1)算法B包住了算法C,B优于C,此类情形较少;
(2)算法A与B有交叉,衡量方式有:
a. BEP(Break-Event Point),即平衡点,查准率=查全率时的取值,A>B,因此认为算法A优于B;
b.BEP法过于简化,采用调和平均比较,即F1度量
《机器学习》(周志华)学习笔记(二):模型评估与选择
更一般化,当对P和R重视程度不同时,和给P和R加入权值参数,采用加权调和平均来衡量
《机器学习》(周志华)学习笔记(二):模型评估与选择
若存在多个二分类混淆矩阵,采用各自求P和R,再平均即可。也可以将各混淆矩阵的对应元素进行平均,得到TP 、FP 、TN 、FN 的平均值,再计算P、R或F1。

2.3.3.ROC和AUC

与PR曲线关注点不同,ROC (受试者工作特征,Receiver Operating Characteristic)关注的是分类阈值,其曲线的纵轴是”真正例率” (True Positive Rate,简称TPR) ,横轴是”假正例率” (False Positive Rate,简称FPR)
《机器学习》(周志华)学习笔记(二):模型评估与选择
对应曲线如下:
《机器学习》(周志华)学习笔记(二):模型评估与选择
曲线围成的面积即AUC (Area Under ROC Curve)

2.3.4.代价敏感错误率与代价函数

实际场景中,不同类型的错误代价是不一样的,需要给不同错误赋予一定权值,引入一个代价矩阵来衡量。
《机器学习》(周志华)学习笔记(二):模型评估与选择

2.4.比较检验

有了实验评估方法和衡量指标,对于实际算法模型,还不能直接用上面的性能度量进行比较,还需要统计学的比较检验方法。原因有三:(1)实验评估的是测试集上的性能,和我们要的泛化性能有偏差;(2)测试性能与测试集本身选择有关;(3)算法本身存在随机性,同样条件多次运行结果也不尽相同。
常用检验方法如下:

2.4.1.假设检验

这里把测试样本得到的错误率作为泛化能力称为一个假设事件。m个测试样品中有m’个样品检验错误这个事件服从二项分布,可以通过二项检验来衡量假设置信度。多数情况下回做多次留出或交叉验证,这样就得到了多组错误率结果,可以得到其平均测试错误率和方差,此时可将事件视为一个双边t分布,采用t检验来衡量在一定置信度下,假设是否满足要求。

2.4.2.交叉验证t检验

对于两个学习器A和B,若采用k折交叉验证法各自得到k组错误率数据,要比较其泛化性能,可以采用k折交叉验证成对t检验。具体方法是:假定两个学习器能力相同,则使用相同训练集和测试集时,错误率相同。对两个学习得到的每组结果求差,差值应该为0,这个差值做t检验,若在一定置信度下,假设不能拒绝,则认为两个学习器能力相当,否则,二者性能有显著区别,且平均错误率较小的性能更优越。
普通的k折交叉法不同轮训练集重叠度较大,这就使得测试错误率实际并不独立,通常采用“5*2交叉验证”,即做5次2折交叉验证。

2.4.3.McNemar 检验

对于二分类问题,使用留出法还可以或得两个学习器分类结果的差别,如下面的列联表。
《机器学习》(周志华)学习笔记(二):模型评估与选择
这里假设两个学习器的性能相同,则有e10=e01,|e10-e01|应该服从状态分布。McNemar检验考虑变量
《机器学习》(周志华)学习笔记(二):模型评估与选择
服从自由度为1的卡方分布,采用卡方检验判断。

2.4.4.Friedman 检验与Nemenyi 后续检验

前面的两种检验方法都是基于两个算法的比较,涉及到多个算法比较时,当然可以采用以上方法两两比较,也可以使用更为直接的基于算法排序的Friedman检验。做出“所有算法性能相同这个假设”,当被拒绝时,通常可采用Nemenyi后续检验进一步区分各算法。
上述检验方法可以直观地使用Friedman检验图显示。若两个算法的横线段有交叠,则说明这两个算法没有显著差别,否则即说明有显著差别。
《机器学习》(周志华)学习笔记(二):模型评估与选择

2.5.偏差与方差

可以采用偏差方差分解来推导期望泛化错误率。可推导得到下面关系(推导过程这里略过)
《机器学习》(周志华)学习笔记(二):模型评估与选择
也即泛化误差可分解为偏差、方差与噪声之和。偏差表征的是算法本身的拟合能力,方差表征的是数据的扰动,噪声表征的是学习问题本身的难度。一般来说,偏差和方差存在冲突,称为偏差-方差窘境,二者都与训练程度相关。训练不足,算法拟合能力有限,偏差占主导;训练过度,训练数据的轻微扰动都会引入较大泛化误差,产生过拟合。
《机器学习》(周志华)学习笔记(二):模型评估与选择

习题(后续补充)