本章节是对我学习完机器学习(周志华)第二章 所做出来的总结。
第二章 模型评估与选择
2.1 经验误差与过拟合
错误率:分类错误的样本数占样本总数的比例。
误差:实际预测输出与样本的真实输出之间的差异。
训练误差:学习器在训练集上的误差,也称“经验误差”。
泛化误差:在新样本上的误差。
我们实际希望的,是在新样本上能表现得很好的学习器。为达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。然而,,当学习器把训练样本学得“太好了”的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。这种现象在机器学习中称为“过拟合”。与“过拟合”相对的是“欠拟合”,这是指对训练样本的一般性质尚未学好。
导致过拟合最常见的情况是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由于学习能力低下所造成的。
2.2 评估方法
2.2.1 留出法
“留出法”直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T,S∩T=空集。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
以二分类任务为例,假定D包含了1000个样本,将其划分为S包含700个样本,T包含300个样本,用S进行训练后,如果模型在T上有90个样本分类错误,那么其错误率为(90/300)*100%=30%,相应的,精度为1-30%=70%。
需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
另一个需注意的问题是,即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集D进行分割。不同的划分将导致不同的训练/测试集,相应的,模型评估的结果也会有差别。因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。例如进行100次随机划分,每次产生一个训练/测试集用于实验评估,100次后就得到100个结果,而留出法返回的则是这100个结果的平均。
2.2.2 交叉验证法
“交叉验证法”先将数据D划分为k个大小相似的互斥子集。每个子集都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
交叉验证法评估结果的稳定性和保真性在很大程度上取决于k的取值,为强调这一点,通常把交叉验证法称为“k折交叉验证”。k最常用的取值是10,此时称为10折交叉验证;其他最常用的k值有5、20等。
与留出法相似,将数据集D划分为k个子集同样存在多种划分方式。为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。
注意:“10次10折交叉验证法”与“100次留出法"都是进行了100次训练/测试。
2.2.3 自助法
自助采样:在数据集D中做放回抽样,将m次抽取后得到的样本做数据集D'。
做一个简单的估计,样本在m次采样中始终不被采用的概率是(1-1/m)^m,m趋于正无穷时,这一概率就趋近于1/e,即0.368。
通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D'中。将D'用作训练集,D\D'用作测试集;这样实际评估的模型与期望评估的模型都使用m个训练样本,还有数据总量约1/3的、没在训练集中出现的样本用作测试。这样测试的结果,也称“包外估计”。
PS.自助法在数据集较小、难以有效划分训练/测试集时很有用。而在初始数据量足够时,留出法和交叉验证法更常用一些。
2.2.4 调参与最终模型
参数调节(简称“调节”):因参数配置不同,学得模型的性能也往往有显著差别。因此在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定。
需要注意的是,通常吧学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”。
2.3 性能度量
性能度量:对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准。
性能度量反映了任务需求,在对比不同模型能力时,使用不同的性能度量往往会导致不同的评价结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还取决于任务需求。
在预测任务中要把学习器预测结果与真实标记进行比较。
回归任务最常用的性能度量是“均方误差”。
2.3.1 错误率与精度
错误率:分类错误的样本数占样本总数的比例。
精度:分类正确的样本数占样本总数的比例。
2.3.2 查准率、查全率与F1
“检索出的信息中有多少比例是用户感兴趣的”即为“查准率”。
“用户感兴趣的信息中有多少被检索出来了”即为“查全率”。
查准率和查全率是一对相对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
我们可以根据学习器的预测结果对样例进行排序。计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,就可以得到查准率-查全率曲线,简称“P-R曲线”,显示该曲线的图称为“P-R图”。
若一个学习器的P-R曲线别另一个学习器的曲线完全“包住”,就可以断言后者的性能优于前者,例如,图中学习器A的性能优于学习器C。
如果有交叉,如A、B,可比较曲线下面积大小,但不容易估算,需综合考虑PR的性能度量。
“平衡点(BEF)”就是这样一个度量,它是“查准率=查全率”时的取值,例如图中的学习器C的BEF是0.64,基于BEF的比较,可认为学习器A优于B。
由于BEF过于简化了些,更长用的是F1度量:
F1的一般形式——Fβ能让我们表达出对查准率/查全率的不同偏好:
其中β>0度量了查全率对查准率的相关重要性。β=1时退化为标准的F1;β>1时查全率有更大的影响;β<1时查准率有更大的影响。
2.3.3 ROC与AUC
ROC曲线体现了“一般情况下”泛化性能的好坏。
根据学习起的预测结果对样例进行排序,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就可以得到“ROC曲线”。
进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。若两个学习器的ROC曲线发生交叉,则比较ROC曲线下的面积,即AUC。
2.3.4 代价敏感错误率与代价曲线
不同类型的错误所造成的后果不同。为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”则可达到该目的。代价曲线图的横轴是取值为[0,1]的正例概率代价
其中p是样例为正例的概率;纵轴是取值为[0,1]的归一化代价
其中FPR是假正例率,FNP=1-TPR是假反例率。
2.4 比较检验
统计假设检验为我们进行学习器性能比较提供了重要依据。
2.4.1 假设检验
假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想。
通过多次重复留出法或是交叉验证法等进行多次训练/测试,这样会得到多个测试错误率,此时可使用“t检验”。
t检验:https://baike.baidu.com/item/t%E6%A3%80%E9%AA%8C/9910799?fr=aladdin
2.4.2 交叉验证t检验
要进行有效的假设检验,一个重要的前提是测试错误率均为泛化错误率的独立采样。然而,通常情况下由于样本有限,在使用交叉检验等实验估计方法时,不同轮次的训练集会有一定的重叠,这就使得测试错误率实际上并不独立,会导致过高估计假设成立的概率。为缓解这一问题,可采用“5×2交叉检验”。
5×2交叉检验是做5次2折交叉检验,在每次2折交叉验证之前随机将数据打乱,是的5次交叉验证中的数据划分不重复。
2.4.3 McNemar检验
McNemar检验考虑变量
服从自由度为1的 卡方分布。
卡方分布:https://baike.baidu.com/item/%E5%8D%A1%E6%96%B9%E5%88%86%E5%B8%83
2.4.4 Friedman检验与Nemenyi后续检验
Friedman检验是基于算法排序的。
首先使用留出法或交叉验证法得到每个算法在每个数据集上的测试结果,然后在每个数据集上根据测试性能由好到坏排序,并赋予序值1,2,...;若算法的测试性能相同,则平分序值。
若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同。这时需进行“后续检验”来进一步区分各算法。常用的有Nemenyi后续检验。
Nemenyi检验计算出平均序值差别的临界值域
若两个算法的平均序值之差超出了临界值域CD,则以相应的置信度拒绝“两个算法性能相同”这一假设。
2.5 偏差与方差
“偏差-分差分解”是解释学习算法泛化性能的一种重要工具。
偏差-分差分解试图对学习算法的期望泛化错误率进行拆解。
泛化误差可分解为偏差、方差与噪声之和。
偏差度量了学习算法的期望预测与真实结果的偏差程度,即刻画了学习算法本身的拟合能力。
方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差-方差分解说明,泛化能力是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
方差与偏差是有冲突的,称为偏差-方差窘境。
训练不足时,学习器的拟合能力不强,偏差主导泛化错误率。
训练程度加深,学习器的拟合能力加强,方差主导泛化错误率。
训练充足后,学习器的拟合能力过强,发生过拟合。