2.1 经验误差和过拟合
错误率:分类错误的样本数n占样本总数m的比例。错误率E=n/m
精度: 1-n/m称为"精度",即"精度=1-错误率"
误差:学习器的实际预测输出与样本的真实输出之间的差异
训练误差/经验误差:学习器在训练集上的误差
泛化误差:在新样本上的误差
过拟合:学习器把训练样本学得"太好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。无法彻底避免,只能缓解或者减小其风险。
欠拟合:通常由学习能力低下造成,指对训练样本的一般性质尚未学好。比较容易克服。
如何选用学习算法、使用参数配置:机器学习中的“模型选择”问题,理想方案是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。
2.2 评估方法
对数据集D进行适当的处理,从中产生出训练集S和测试集T,常见的做法如下:
2.2.1留出法
留出法直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S∪T,S∩T=Ø. 在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
注意:
1.训练/测试集的划分要尽可能保持数据分布的一致性,避免困数据划分过程引入额外的偏差而对最终结果产生影响,保留类别比例的采样方式为分类采样。
2.单次使用留出法得到的估计结果往往不够稳定可靠,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
3.(缺点)测试集T小时,评估结果的方差较大,评估结果可能不够稳定准确。训练集S小时,评估结果的偏差较大,被评估的模型与用D训练出的模型相比可能有较大差别,从而降低了评估结果的保真性。常见做法是将大约2/3 ~ 4/5的样本用于训练,剩余样本用于测试。
2.2.2 交叉验证法
交叉验证法先将数据集D划分为k个大小相似的互斥子集,每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
注意:
1. 交叉验证法评估结果的稳定性和保证性在很大程度上取决于k的取值,k通常的取值为10,此时称为10折交叉验证法。
2. 为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。
3.交叉验证法的特例留一法:数据集D中包含m个样本,令k=m,则m个样本只有唯一的方式划分为m个子集,每个子集包含一个样本。(优点)不受随机样本划分方式影响;用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似,评估结果往往被认为比较准确。(缺点)在数据集比较大时,训练m个模型的计算开销可能是难以忍受的;留一法的估计结果也未必永远比其他估计方法确切;NFL定理适用。
2.2.3 自助法
自助法是在减少训练样本规模不同造成的影响,同时还能比较高效地进行实验估计的方法。
自助法直接以自助采样法(放回抽样)为基础,给定包含m个样本的数据集D,我们对它进行采样产生数据集D' :每次随机从D中挑选一个样本,将其拷贝放入D',然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D',这就是自助采样的结果。从中,样本在m次采样中始终不被采到的概率是
,取极限得到 ≈0.368,即通过自助来样,初始数据集D中约有36.8 %的样本未出现在采样数据集D '中。于是我们可将D '用作训练集,D-D'用作测试集。
注意:
1.(优点)实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1 / 3的、没在训练集中出现的样本用于测试;自助法在数据集较小、难以有效划分训练/测试集时很有用;自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。
2.(缺点)自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。在初始数据量足够时,留出法和交叉验证法更常用一些。
2.2.4 调参与最终模型
参数调节/调参:对算法参数进行设定。
现实中常用做法:对每个参数选定一个范围和变化步长。
注意:
1. 在模型选择完成后,学习算法和参数配置己选定,此时应该用数据集D新训练模型。这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型。
2. 通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"验证"。
2.3 性能度量
性能度量:衡量模型泛化能力的评价标准。要评估学习器f的性能,就要把学习器预测结果f ( x )与真实标记y进行比较。回归任务最常用的性能度量是"均方误差":
2.3.1 错误率与精度
错误率:分类错误的样本数占样本总数的比例,如有多少比例的西瓜被判断错误
精度:分类正确的样本数占样本总数的比例
2.3.2 查准率、查全率与F1
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例TP、假正例FP、真反例TN、假反例FN四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。
查准率P:衡量某一检索系统的信号噪声比的一种指标,即检出的相关文献与检出的全部文献的百分比。算法挑出来的西瓜中有多少比例是好西瓜。
查全率R:指从数据库内检出的相关的信息量与总量的比率。如所有的好西瓜中有多少比例被算法跳了出来。
查准率与查全率的关系:
1. 查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
2. 在实际的模型评估中,单用查准率或者查全率来评价模型是不完整的,评价模型时必须用这两个值。这里介绍三种使用方法:平衡点(BEP)、F1度量、F1度量的一般化形式。
BEP是P-R曲线中查准率=查全率时的取值。
在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全"包住",则可断言后者的性能优于前者。如果两个学习器的P-R曲线发生了交叉,则难以一般性地断言两者孰优孰劣。这时一个比较合理的判据是比较P-R曲线下面积的大小,它在一定程度上表征了学习器在查准率和查全率上取得相对"双高"的比例,平衡点则是这样的度量,如图,算法效果:A>B>C
F1度量的准则是:F1值越大算法性能越好。
在一些实际使用中,可能会对查准率或者查全率有偏重,则有下面F1的一般形式。
其中ß>0度量了查全率对查准率的相对重要性。ß=1时退化为标准的F1 ,ß>1时查全率有更大影响,ß<1时查准率有更大影响。
2.3.3 ROC与AUC
真正例率TPR和假正例率FPR的定义:
ROC曲线:根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以假正例率为横坐标、以真正例率为纵坐标作图就得到了ROC曲线。
AUC:ROC曲线下的面积。AUC的值越大,说明该模型的性能越好。
排序“损失”:给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合。排序“损失”对应ROC曲线上的面积。
2.3.4 代价敏感错误率与代价曲线
为衡量不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。在非均等代价下,我们希望最小化“总体代价”。
二分类代价矩阵:其中c o s t i j表示将第i类样本预测为第j类样本的代价。一般来说,costii = 0,若将第0类判别为第1类所造成的损失更大,则c o s t 0 1 > c o s t 10 ,损失程度相差越大,c o s t 0 1与c o s t10值的差别越大。
代价敏感错误率:将表2.2中的第0类作为正类、第1类作为反类,令D+与D-分别代表样例集D的正例子集和反例子集,则代价敏感错误率定义为:
取值为[0,1]的正例概率代价:其中p为样例为正例的概率,
取值为[0,1]的归一化代价:其中FPR为假正例率,FNR=1-FPR为假反例率,
代价曲线的绘制:ROC由线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(TPR,FPR),则可相应计算出FNR,然后在代价平面上绘制一条从( 0,FPR)到( 1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价,如此将ROC曲线土的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的自积即为在所有条件下学习器的期望总体代价。
2.4 比较验证
2.4.1 假设验证
2.4.2 交叉验证t检验
2.4.3 McNemar检验
2.4.4 Friedman检验与Nemenyi 后续检验
2.5 偏差与方差
偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。
方差:度量了闰样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
偏差一方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小.。
泛化误差可分解为偏差、方差与噪音之和:
偏差—方差窘境图: