二、模型评估与选择
2.1 经验误差与过拟合
Error rate(错误率):将分类错误的样本数占样本总数的比例称为错误率,即在m个样本中有a个样本分类错误,则错误率E=a/m。1-a/m称为精度。更一般的,将机器学习器的实际预测输出与样本的真实输出之间的差异称为误差。学习器在训练集上的误差称为“训练误差”or“经验误差(empirical error)”,在新样本上的误差称为泛化误差(generalization error)。
由于不知道新样本的特征,实际能做的只是尽力使经验误差最小化。但很多时候虽然能在训练集上做到分类错误率为0,但多数情况这种分类器的性能并不好。
过拟合(overfitting):学习器把训练样本学习的“太好”,将训练样本本身的特点作为所有样本的一般性特征,导致其泛化能力下降。
欠拟合(underfitting):对训练样本的一般性质尚未学好。
有诸多因素导致overfitting,大多情况是学习能力过强,以至于把训练样本所包含的不太一般的特性学习成一般特性。underfitting通常的解决方法可以有在决策树学习中扩展分支、在神经网络中增加训练次数等。overfitting是机器学习的最大障碍
2.2 评估方法
现实任务中常常会对学习器的泛化性能、时间开销、存储开销、可解释性等方面的因素进行评估而做出选择。假设测试集是从样本真实分布中独立采样获得,将测试集上的“测试误差”作为泛化误差的近似,所以测试集要和训练集中的样本尽量互斥。通常将包含m个样本的数据集D={(x1,y1),(x2,y2),(x3,y3)...,(xm,ym)}拆分成训练集S和测试集T。
留出法:将数据集划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即
,
。在S上训练出模型后,在T中评估其测试误差,作为对泛化误差的近似。
交叉验证法:将数据集分层采样划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的子集作为训练集,最终返回k个测试结果的均值,k最常用的值为10,也叫10折交叉验证法。
自助法:以自助采样法为基础,对数据集D有放回采样m次得到训练集D*,D\D*做测试集。实际模型与预期模型都使用m个训练样本,约有1/3的样本不会在训练集中出现。从初始数据集中产生多个不同的训练集,对集成学习有较大好处。自助法在数据集较小,难以有效划分训练/测试数据集时很有用;
2.3 性能度量(performance measure)
性能度量是衡量模型泛化能力的评价标准,反映了任务需求;使用不同的性能度量会导致不同的评判结果,即模型的好与坏事相对而言的,什么样的模型是好的模型,不尽取决于算法和数据,还取决于任务需求。
在预测任务中,给定样例集D={(x1,y1),(x2,y2),(x3,y3)...,(xm,ym)},其中yi是xi的真实标记。要评估学习器f的性能,其实是将学习器预测的结果f(x)与真实标记y进行比较。
回归任务中最常用的性能度量是“均方误差(mean squared error)”
(公式1.1)
更一般的,对于数据分布D和概率密度函数p(*),均方误差可描述为:
(公式1.2)
对于分类任务,错误率与精度是最常用的两种性能度量:
错误率:分错样本占样本总数的比例
(公式1.3)
精度:分对样本占样本总数的比例
公式(1.4)
在信息检索、Web搜索等领域经常需要衡量正例被预测出来的比率或者预测出来的正例中正确的比率,此时,查准率(precision)和查全率(recall)更适合。
表1.分类结果混淆矩阵
真实情况 | 预测结果 | |
正例 | 反例 | |
正例 | TP(真正例)true positive | FN(假反例)false negative |
反例 | FP(假正例)false positive | TN(真反例)true negative |
查准率
查全率
查准率与查全率是一对矛盾的度量。查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本作为正例进行预测,则可以得到查准率-查全率曲线,简称“P-R曲线”。
图1.P-R曲线与平衡点示意图
P-R图直观地显示出了学习器在样本总体上的查全率、查准率。在进行比较时,若一个学习器的P-R曲线被另一个学习器的曲线完全“包住”,则后者的性能优于前者。也可以根据曲线下的面积来比较两个学习器的性能优劣。平衡点(Break-Even Point)是曲线上“查准率=查全率”时的取值,可用来度量P-R曲线有交叉的分类器性能高低。
比P-R曲线平衡点更常用的是F1度量:
totalsample=样例总数 公式(1.5)F1度量的更一般形式-
公式(1.6)
=1时,退化为标准的F1度量,
>1时对查全率有更大影响,
<1时对查准率有更大影响。
ROC与AUC
ROC全称是受试者工作特征(receiver operating characteristic),ROC曲线的横轴是“假正例率(false positive rate,FPR)”,纵轴是“真正例率(true positive rate,TRR)”。
公式(1.7)
公式(1.8)
显示ROC曲线的图被称为ROC图。
若一个学习器的ROC曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以断言两者孰优孰劣。若一定要进行比较,则较为合理的方式是比较ROC曲线下面积,即AUC(Area under ROC Curve)。假设ROC曲线是由坐标{(x1,y1),(x2,y2),(x3,y3)...(xm,ym)}的点按序连接而形成,则AUC可估算为:
公式(1.9)
代价敏感错误率
现实任务中不同类型的错误所造成的后果或代价很可能不同,为了权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价(unequal cost)”。
代价曲线
在非均等代价下,ROC曲线不能反映出学习器的期望总体代价,而代价曲线(cost curve)则可达该目的。代价曲线图的横轴取值为[0,1]的正例概率代价
公式(1.10)
p为样例为正例的概率,纵轴是[0,1]的归一化代价。
2.4 比较检验
记泛化错误率为
,测试错误率为
,假定测试样本从样本总体分布中独立采样而来,我们可以使用“二项检验”对
进行假设检验。假设
,若测试错误率小于
s.t.
则在
的显著度下,假设不能被拒绝,也即能以1-
的置信度认为,模型的泛化错误率不低于
t检验
假定得到了k个测试错误率,
,假设
对于显著度
,若[
]位于临界范围|
|内,则假设不能被拒绝,即可认为泛化错误率
,其置信度为1-
。
2.5 偏差与方差
通过实验可以估计学习算法的泛化性能,而“偏差-方差分解”可以用来帮助解释泛化性能。偏差-方差分解试图对学习算法期望的泛化错误率进行拆解。
对测试样本x,令
为x在数据集中的标记,y为x的真实标记,f(x;D)为训练集D上学得模型f在x上的预测输出。以回归任务为例,学习算法的期望与其为:
公式(1.11)
使用样本数不同的训练集产生的方差为:
公式(1.12)
噪声为:
公式(1.13)
期望输出与真实标记的差别称为偏差(bias),即:
公式(1.14)
偏差度量了学习算法期望预测与真实结果的偏移程度;即刻画了学习算法本身的拟合能力;
方差度量了同样大小的训练集的变动所导致的学习性能的变化;即刻画了数据扰动所造成的影响;
噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界;即刻画了学习问题本身的难度。
泛化性能是由学习算法的能力,数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。
一般来说,偏差与方差是有冲突的,称为偏差-方差囧境(bias-variance dilemma).
2.6 阅读材料