《机器学习》周志华读书笔记(二)模型评估与选择(上)
2.1经验误差与过拟合
设在m个样本中有a个样本分类错误
错误率(error rata):分类错误的样本数占样本总数的比例,即E=a/m
精度(accuracy):精度 = 1 - 错误率
误差(error):学习器的实际预测输出与样本的真实输出之间的差异
训练误差/经验误差(training/empirical error):学习器在训练集上的误差
泛化误差(generalization):学习器在新样本上的误差
过拟合(overfitting):学习能力过强,训练集将自身特性当作所有潜在样本都会具有的一般性质,泛化能力下降
欠拟合(underfitting):学习能力过弱,训练样本的一般性质尚未学好
模型选择(model selection):理想情况,对候选模型的泛化误差进行评估,然后选择泛化误差最小的模型
2.2评估方法
测试集(testing set):测试学习器对新样本的判别能力,可以测试集上的测试误差作为泛化误差的近似
如果我们只有一个包含m个样例的训练集D,我们即要训练又要测试,我们可以通过对D进行适当的处理,从中产生出训练集S和测试集T。下面列举出了3种常见的做法:1、留出法,2、交叉验证法,3、自助法。
2.2.1留出法(hold-out)
将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T
在划分数据集时,通常采用分层采样(stratified sampling)
若数据集D中存在500个正例和500个反例,则含有70%样本的训练集S应包含350个正例和350个反例,同理,还有30%样本的测试集T应包含150个正例和150个反例。
单次使用留出法得到的估计结果往往不够稳定可靠。因此,使用留出法时,我们要采用若干次随机划分、重复进行实验评估后取均值作为留出法的评估结果。
常见的做法为将 2/3 ~ 4/5 的样本用于训练,剩余样本用于测试。
2.2.2交叉验证法(cross validation)
将数据集D直接划分为k个大小相似的互斥子集,每一次,用(k-1)个集合的并集作为数据集S,余下那个作为测试集T。这样,我们可以进行k次训练和测试,最终返回的是,这k个测试结果的均值。
“交叉验证法”通常也被称作“k折交叉验证”。其中最常用的是“10折交叉验证”
如果数据集D中包含m个样本,我们令k=m,此时有了交叉验证法特例中的“留一法(Leave-One-Out,LOO)”。
优点:不受随机样本划分方式的影响,评估结果往往比较准确。
缺陷:若数据集大,则计算量无法承受,由NFL定理,纵然这样的巨大计算量,也未必能保证它比其他方法更准确。
2.2.3自助法(bootstrapping)
数据集D中包含m个样本,对其进行采样产生数据集D':每次随机从D中挑选一个样本,将其拷贝放入D',然后将该样本放回初始数据集D。该过程重复m次,我们可得到包含m个样本的数据集D',称为自助采样的结果。
样本在m次采样中始终没有被采样的结果的概率为(1-1/m)^m,取极限得到为1/e约等于0.386。
优点:相比较于“留出法”和“交叉验证法”,自助法更适用于数据集较小、难以有效划分训练集、测试集时候使用,并且由于它能产生不同的训练集,因为对集成学习也有好处。
缺点:它改变了初始数据集的分布。因此,在初始数据量足够时,这种方法使用较少。
2.2.4调参与最终模型(parameter tuning)
学习算法的很多参数是在实数范围内取值,因此,对每种参数取值都训练出模型来是不可行的。常用的做法是对每个参数选定一个范围和步长λ。简单估计一下:假定算法有3个参数,每个参数仅考虑5个候选值,这样对每一组训练/测试集就有5^3= 125 个模型需考察,很多学习算法有不少参数需要设定,工程量浩大,参数调得好坏对最终模型的性能有关键影响。
此外,需注意的是,当选定好模型和调参完成后,应该用初始数据集D重新训练模型,即让最初划分出来用于评估的测试集也被模型学习,增强模型的学习效果。
2.3性能度量
性能度量(performance measure):衡量模型泛化能力的评价标准,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果。
在预测任务中,给定样例集D = {(,
),(
,
),......,(
,
)},其中
是示例
的真实标记。若要评估学习器
的性能,就需要把学习器预测结果
与真实标记
进行比较。
均方误差(mean squared error):回归任务最常用的性能度量
更一般的对于数据分布D和概率密度函数,均方误差可描述为
2.3.1错误率与精度
错误率(Error Rate):是分类错误的样本数占样本总数的比例。对样例集D,分类错误率计算公式如下所示:
解释:统计分类器预测出来的结果与真实结果不相同的个数,然后除以总的样例集D的个数。
精度(Accuracy):是分类正确的样本数占样本总数的比例。对样例集D,精度计算公式如下所示。
注意:这里的分类正确的样本数指的不仅是正例分类正确的个数还有反例分类正确的个数。
解释:先统计分类正确的样本数,然后除以总的样例集D的个数。
2.3.2查准率、查全率与F1
情景一:
错误率和精度虽然常用,但是并不能满足所有任务需求。以西瓜问题为例,假定瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误。但是若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例被挑了出来”,那么错误率显然就不够用了,这时需要使用其他的性能度量。
情景二:
类似的需求在信息检索、Web搜索等应用中经常出现,例如在信息检索中,我们经常会关心“检索出的信息中有多少比例是用户感兴趣的”,“用户感兴趣的信息中有多少被检索出来了”。
为满足任务需求,引出查准率(precision)和查全率(recall),其实更为适用于此类需求的性能度量。
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative) 四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数。分类结果的“混淆矩阵”(confusion matrix)如下表所示。
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
查准率(precision)又叫准确率:缩写表示用P。查准率是针对我们预测结果而言的,它表示的是预测为正的样例中有多少是真正的正样例。
补充:这里有一个容易混淆的误区。精度(Accuracy)和准确率(Precision)表示的是不同的概念,计算方法也不同。所以,大家在看paper的时候,要特别注意这些细节
精确度(Accuracy):缩写表示用A。精确度是分类正确的样本数占样本总数的比例。Accuracy反应了分类器对整个样本的判定能力(即能将正的判定为正的,负的判定为负的)。
查全率(Recall),又叫召回率:缩写表示R。查全率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确。
观察:可以比较一下查准率和查全率的计算公式。其实就是分母不同,查准率的分母是预测为正的样本数。查全率的分母是原样本的所有正样例数。
查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低
为什么会有这样的情况呢?
可以这样理解,在一个分类器中,你想要更高的查准率,那么你的阈值要设置的更高,只有这样才能有较高的把握确定我们预测是正例是真正例。一旦我们把阈值设置高了,那我们预测出正例的样本数就少了,真正例数就更少了,查不全所有的正样例。
P-R曲线
以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称“P-R曲线”,显示该曲线的图称为“P-R图”。
P-R图可以直观地显示出学习器在样本总体上的查全率、查准率。
平衡点(Break-Even Point,简称BEP)
“查准率=查全率”时的取值,下图中A点的BEP为0.8,C点的BEP为0.64,基于BEP比较,可认为学习器A优于学习器C和学习器B
F1度量
因为BEP曲线过于简化,更常用的是F1度量,F1是基于查准率与查全率的调和平均(harmonic mean)定义的:
,
为F1度量的一般形式,能帮助我们表达出查准率和查全率不同的偏好。
,
β>0度量了查全率对查准率的相对重要性。β=1时,退化为标准的F1;β>1时查全率有更大影响;β<1时,查准率有更大影响。
本篇文章未完,下一篇文章为《《机器学习》周志华读书笔记(二)模型评估与选择(下)》,将从ROC与AUC开始讲起