过拟合
当学习器把训练样本学得"太
好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都
会具有的一般性质,这样就会导致泛化性能下降这种现象在机器学习中称为
"过拟合" (overfitting). 与"过拟合"相对的是"欠拟合" (underfitting) ,这
是指对训练样本的一般性质尚未学好.
留出法
"留出法" (hold-out)直接将数据集D 划分为两个互斥的集合?其中一个
集合作为训练集5,另一个作为测试集T, 即D=BUT, 5 门T= 正~.在S 上训
练出模型后,用T 来评估其测试误差,作为对泛化误差的估计.S、T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异
而产生偏差.
交叉验证法
"交叉验证法" (cross validation)先将数据集D 划分为k 个大小相似的
互斥子集, 即D = D1 U D2υ... U Dk, Di n Dj = ø (í 手j ) . 每个子集Di 都
尽可能保持数据分布的一致性,即从D 中通过分层采样得到. 然后,每次用
k-1 个子集的并集作为训练集?余F 的那个子集作为测试集;这样就可获得k
组训练/测试集,从而可进行k 次训练和测试? 最终返回的是这k 个测试结果
的均值显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于k
的取值,为强调这一点,通常把交叉验证法称为" k 折交叉验证" (k-fold cross
validat ion). k 最常用的取值是10 ,此时称为1 0 折交叉验证; 其他常用的k 值
有5、20 等.图2.2 给出了10 折交叉验证的示意图.
留一法
{院假定数据集 D 中包含 m 个样本3 若令 k=m , 则得到了交叉验证法的一
个特例:留一法(Leave- One-Ot比,简称LOO) . 显然, 留一法不受随机样本划分
方式的影响,因为m 个样本只有唯一的方式划分为m 个子集一一每个子集包含
一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得
在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D 训练出的模
型很相似.因此,留一法的评估结果往往被认为比较准确.然而,留一法也有其
缺陷:在数据集比较大时,训练m 个模型的计算开销可能是难以忍受的(例如数
据集包含1 百万个样本,则需训练1 百万个模型),而这还是在未考虑算法调参
的情况下.另外,留一法的估计结果也未必永远比其他评估方法准确;"没有免
费的午餐"定理对实验评估方法同样适用.
"自助法
"自助法" (bootstrapping)是一个比较好的解决方案,它直接以自助采样
法(bootstrap sampling) 为基础[Efron and Tibshirani, 1993]. 给定包含m 个样
本的数据集D , 我们对它进行采样产生数据集D': 每次随机从D 中挑选一个
样本7 将其拷贝放入DF' 然后再将该样本放回初始数据集D 中,使得该样本在
下次采样时仍有可能被采到;这个过程重复执行m 次后?我们就得到了包含m
个样本的数据集DF,这就是自助采样的结果.显然, D 中有一部分样本会在D'
中多次出现,而另一部分样本不出现.可以做一个简单的估计,样本在m 次采
样中始终不被采到的概率是(1 一去)m , 取极限得到
即通过自助来样,初始数据集D 中约有36.8% 的样本未出现在采样数据集D'
中.于是我们可将D' 用作训练、集, D\D' 用作测试集;这样?实际评估的模型与
期望评估的模型都使用m 个训练、样本,而我们仍有数据总量约1/3 的、没在训
练集中出现的样本用于测试.这样的测试结果,亦称"包外估计" (out-of-bag
estimate).
调参
大多数学习算法都有些参数(parameter) 需要设定,参数配置不同,学得模
型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习
算法进行选择,还需对算法参数进行设定,这就是通常所说的"参数调节"或
简称"调参" (parameter tuning).现实中常用的做法?是对每个参数选定一个
范围和变化步长,例如在[0 , 0.2] 范围内以0.05 为步长,则实际要评估的候选参
数值有5 个,最终是从这5 个候选值中产生选定值.显然,这样选定的参数值往
往不是"最佳"值,但这是在计算开销和性能估计之间进行折中的结果,通过
这个折中,学习过程才变得可行
验证集
另外,需注意的是,我们通常把学得模型在实际使用中遇到的数据称为测
试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"验
证集" (validation set). 例如,在研究对比不同算法的泛化性能时,我们用测试
集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分
为训练集和验证集,基于验证集上的性能来进行模型选择和调参.
性能度量
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需
要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure).
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往
往会导致不同的评判结果;这意味着模型的"好坏"是相对的,什么样的模型
是好的?不仅取决于算法和数据,还决定于任务需求.
均方误差
在预测任务中?给定样例集D = {(X1, Y1) , (X2 , 的), . . . , (Xm, Ym)} , 其中饥
是示例Xi 的真实标记.要评估学习器f 的性能,就要把学习器预测结果I(x)
与真实标记υ 进行比较.
回归任务最常用的性能度量是"均方误差" (mean squared error)
错误率和精度
本章开头提到了错误率和精度?这是分类任务中最常用的两种性能度量,
既适用于二分类任务,也适用于多分类任务.错误率是分类错误的样本数占样
本总数的比例,精度则是分类正确的样本数占样本总数的比例.对样例集D , 分
查准率亦称"准确卒"
查全卒亦称"召回率"
类似的需求在信息检索、Web搜索等应用中经常出现?例如在信息检索
中,我们经常会关心"检索出的信息中有多少比例是用户感兴趣的" u 用
户感兴趣的信息中有多少被检索出来了
率" (reca叫all) 是更为适用于此类需求的性能度量.
真正例(true positive) 、假正例(false positive) 、真反倒(true negative) 、
假反例(false negative)
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划
分为真正例(true positive) 、假正例(false positive) 、真反倒(true negative) 、
假反例(false negative) 四种情形,令TP 、FP 、TN 、FN 分别表示其对应的
样例数,则显然有TP+FP+TN+FN=样例总数.分类结果的"泪淆矩
阵" (co时usion matrix) 如表2.1 所示
" P-R 曲线""平衡点"
在很多情形札我们可根据学习器的预测结果对样例进行排序,排在前面
的是学习器认为"最可能"是正例的样本?排在最后的则是学习器认为"最
不可能"是正例的样本.按此顺序逐个把样本作为正例进行预测,则每次可以
计算出当前的查全率、查准率以查准率为纵轴、查全率为横轴作图,就得到
了查准率-查全率曲线,简称" P-R 曲线"显示该曲线的图称为" P-R图" 图
2 .3 给出了一个示意图.
P-R 图直观地显示出学习器在样本总体上的查全率、查准率.在进行比较
时?若一个学习器的P-R 曲线被另一个学习器的曲线完全"包住" , 则可断言
后者的性能优于前者, 例如图2 . 3 中学习器A 的性能优于学习器C; 如果两个
学习器的P-R 曲线发生了交叉7 例如图2 . 3 中的A 与B ,则难以-般性地断言
两者孰优孰劣?只能在具体的查准率或查全率条件下进行比较然而,在很多情
形下,人们往往仍希望把学习器A 与B 比出个高低. 这时一个比较合理的判据
是比较P-R 曲线节面积的大小,它在一定程度上表征了学习器在查准率和查全
率上取得相对"双高"的比例.但这个值不太容易估算, 因此7 人们设计了一些
综合考虑查准率、查全率的性能度量.,"平衡点" (Break-Event Point,简称BEP)就是这样一个度量,它是" 查
准率=查全率"时的取值3 例如图2.3 中学习器C 的BEP 是0 . 64,而基于BEP
的比较,可认为学习器A 优于B .
分类阔值
很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与
一个分类阔值(threshold)进行比较,若大于|词值则分为正类,否则为反类.例
如,神经网络在一般情形下是对每个测试样本预测出一个[0.0 ,1. 0] 之间的实值,
然后将这个值与0.5 进行比较,大于0.5 则判为正例,否则为反例.这个实值或
概率预测结果的好坏,直接决定了学习器的泛化能力.实际上?根据这个实值或
概率预测结果,我们可将测试样本进行排序,"最可能"是正例的排在最前面,
"最不可能"是正例的排在最后面.这样,分类过程就相当于在这个排序中以
某个"截断点" (cut point)将样本分为两部分,前一部分判作正例,后一部分则
判作反例.
ROC
ROC 全称是"受试者工作特征" (Receiver Operating Characteristic) 曲
线7 它源于"二战"中用于敌机检测的雷达信号分析技术,二十世纪六七十
年代开始被用于→些心理学、医学检测应用中?此后被引入机器学习领域
[Spackman, 1989]. 与2.3.2 节中介绍的P-R 曲线相似?我们根据学习器的预
测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算
出两个重要量的值,分别以它们为横、纵坐标作图'就得到了"ROC 曲线
与P卫-R 曲线使用查准率、查全率为纵、横轴不同, ROC 曲线的纵轴是"真正
例率" (True Positive Rate,简称TPR) ,横轴是"假正例率" (False Positive
Rate,简称FPR) ,基于表2.1 中的符号,两者分别定义为
"非均等代价"
在现实任务中常会遇到这样的情况:不同类型的错误所造成的后果不同.
例如在医疗诊断中,错误地把患者诊断为健康人与错误地把健康人诊断为患者,
看起来都是犯了"一次错误"但后者的影响是增加了进→步检查的麻烦,前
者的后果却可能是丧失了拯救生命的最佳时机;再如,门禁系统错误地把口J通
行人员拦在门外,将使得用户体验不佳,但错误地把陌生人放进门内,则会造成
严重的安全事故.为权衡不同类型错误所造成的不同损失,可为错误赋予"非
均等代价" (unequa1 cost).
代价敏感
回顾前面介绍的一些性能度量可看出,它们大都隐式地假设了均等代价,
例如式(2 .4)所定义的错误率是直接计算"错误次数",并没有考虑不同错误会
造成不同的后果.在非均等代价下,我们所希望的不再是简单地最小化错误次
数,而是希望最小化"总体代价" (total cost). 若将表2.2 中的第0 类作为正
类、第1 类作为反类?令D+ 与D一分别代表样例集D 的正例子集和反例子
集,则"代价敏感" (cost-sensitive)错误率为
E (f; D; cost) =二|艺II (f (叫)向) xωtQ1
\X; ξ D+
+ L 1I(f (Xi) 向i) XωstlO I . (2.23)
Xi 巳D一/
类似的,可给出基于分布定义的代价敏感错误率,以及其他一些性能度量
如精度的代价敏感版本.若令costij 中的4 、j 取值不限于0 、1 ,则可定义出多
分类任务的代价敏感性能度量.
最小二乘法
均方误差有非常好的几何意义?它对应了常用的欧几里得距离或简称"欧
氏距离" (Euclidean distance). 基于均方误差最小化来进行模型求解的方法称
为"最小二乘法" (least squ町e method). 在线性回归中,最小A乘法就是试图
找到一条直线,使所有样本到直线上的欧氏距离之和最小.
信息熵