1.经验误差与过拟合
误差(error):学习器的实际预测输出与样本真实输出之间的差异
- 训练误差(training error)/经验误差(empirical error):学习器在训练集上的误差
- 泛化误差(generalization error):学习器在新样本上的误差
过拟合(overfitting):过配,把训练样本本身的一些特点当作了所有潜在样本都会具有的一般性质,大麻烦,无法彻底避免
欠拟合(underfitting):欠配,对训练样本的一般性质尚未学好,由学习能力低下造成,较容易解决
2.评估方法
总数据集D
训练集S
验证集
调整超参数 优化
测试集T
我们通常通过实验测试来对学习器的泛化误差进行评估进而做出选择。为此,需使用一个测试集来测试学习器对新样本的判别能力,然后以测试集上的测试误差作为泛化误差的近似。
需注意,测试集应尽可能与训练集互斥。通过对总数据集进行适当处理,从中产生出训练集S和测试集T
2.1 留出法(hold-out)
定义: 直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集,另一个作为测试集。
注意:
- 训练/测试集的划分要尽可能保持数据分布的一致性,保留类别比例的采样方式通常称为“分层采样”(stratified sampling)
- 给定训练/测试集的样本比例后,仍存在多种划分方式。因此单次使用留出法得到的估计结果不够稳定可靠,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果
- 测试集小时,评估结果的方差较大;训练集小时,评估结果的偏差较大
- 常见做法是将大约2/3~4/5的样本用作训练,剩余用作测试
- 一般而言,测试集至少应含30个样例
2.2 交叉验证法(cross validation)/ k折交叉验证(k-fold cross validation)
定义:先将总数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性(即从D中分层采样得到)。然后每次用K-1个子集的并集作为训练集,余下的自己作为测试集。这样可以获得K组训练/测试集,从而可进行k次训练和测试,最终返回这k个测试结果的均值。
注意:
- 交叉验证法评估结果的稳定性和保真性很依赖K的取值,K通常取10,常用有5,20等
- 给定k值,仍有多种划分方式。故通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值,常见有10次10折交叉验证
特例:留一法(Leave-One-Out,简称LOO)
定义:假定数据集D中包含m个样本,令k=m 优点:评估结果准确 缺点:数据集较大时,训练模型的计算开销太大
2.3 自助法(bootstrapping)/ 有放回采样 / 可重复采样
定义:对给定包含m个样本的数据集D进行采样产生数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,再将该样本放回初始数据集D中,使得该样本在下次采样时仍有机会被采到。上述过程重复执行m此后,得到结果,即包含m个样本的数据集D’。
优点:在数据集较小、难以有效划分训练/测试集时很顶;自助法能从初始数据集中产生多个不同的训练集,对集成学习等方法很友好 缺点:自助法产生的数据集改变了初始数据集的分布,会引入估计偏差,所以如果初始数据量足够时,留出法与交叉验证法更为常用
注意:
- D中部分样本会在D‘中重复出现,部分样本不会出现。通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D‘中
- 可将D‘用作训练集,D\D’(\表示集合减法)用作测试集。这样实际评估的模型与期望评估的模型都使用m个训练样本,仍有数据总量约1/3的没在训练集中出现的样本用于测试,该测试结果亦称“包外估计”(out-of-bag estimate)
2.4 调参(parameter tuning)与最终模型
机器学习常涉及两类参数:
- 算法的参数(超参数),数目常在10以内
- 模型的参数,可能很多
同:两者调参方式相似,均是产生多个模型之后基于某种评估方法来进行选择。 异:前者通常由人工设定多个参数候选值后产生模型;后者通过学习来产生多个候选模型
3.性能度量(performance measure)
性能度量是衡量模型泛化能力的评价标准,反映了任务需求。
3.1错误率(error rate)与精度(accuracy)
错误率:分类错误的样本数占样本总数的比例 精度:分类正确的样本数占样本总数的比例 精度=1-错误率
3.2 查准率/准确率(precision)、查全率/召回率(recall)与F1
对于二分类问题,可将样例根据真实类别与学习器预测类别的组合划分为以下四种情形:真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)。四者之和为样例总数。 由定义可知:
- 查准率P反映真实情况与预测结果都为正例的样例在预测结果为正例的样例中的占比
- 查全率R反映真实情况与预测结果都为正例的样例在真实情况为正例的样例中的占比
注意:
- 查准率与查全率是一对矛盾的度量,一般来讲,查准率高时,查全率偏低;查全率高时,查准率偏低
P-R曲线
在很多情形下,我们可根据学习器的预测结果对样例依照“是正例的可能性”从高到低进行排序,由高开始逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,得到查准率-查全率曲线,简称P-R曲线。P-R曲线直观地显示出了学习器在样本总体上的查全率、查准率。
通常比较曲线下方面积大小,越大表示学习器性能越好。
平衡点(Break-Even Point,简称BEP)是“查准率=查全率”时的取值,基于BEP值比较时,BEP越大表示性能越好。
F1度量
BEP过于简化,更常用的是F1度量:
在一些应用中,对查准率与查全率的重视程度不同,则有F1度量的一般形式Fβ,其定义为: 我们希望在n个二分类混淆矩阵上综合考察查准率和查全率,有两种做法:
- 宏:先在各混淆矩阵上分别计算出查准率和查全率,再计算平均值,得到“宏查准率”(macro-P)、“宏查全率”(macro-R)以及相应的“宏F1”(macro-F1)
- 微:先将各混淆矩阵对应元素分别求平均值,再基于这些平均值计算出“微查准率”(micro-P)、“微查全率”(micro-R)以及相应的“微F1”(micro-F1)
3.3 ROC与AUC
很多学习器是为测试样本产生一个实值或概率预测,然后将该预测值与一个分类阈值(threshold)进行比较,大于阈值则分为正类,小于则分为反类。这个实值或概率预测结果的好坏直接决定了学习器的泛化能力。根据这个实值或概率预测结果,我们可将测试样本进行排序,“最可能”排在最前,这样,分类过程就相当于在这个排序中以某个“截断点”(cut point)将样本分为两部分,前一部分为正例,后一部分为反例。
不同的应用任务中可根据任务需求采用不同的截断点,若更重视“查准率”,可选择排序中靠前的位置进行截断;若更重视“查全率”,可选择排序中靠后的位置进行截断。
可见,排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具。 先根据学习器的预测结果对样例进行排序,按此顺序逐个把样例作为正例进行预测,每次计算出“真正例率”(True Positive Rate,简称TPR)和“假正例率”(False Positive Rate,简称FPR),分别以他们为纵、横轴作图,就得到了ROC曲线。TPR与FPR定义为:可见:
- 真正例率TPR反映真正例在实际情况为正例的样例中的占比
- 假正例率FPR反映假正例在实际情况为反例的样例中的占比
现实任务中通常利用有限个测试样例绘制ROC图。 绘图过程:给定m+个正例和m-个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设置为最大(即将所有样例预测为反例),此时TPR与FPR都为0,在坐标原点处标记一个点,然后将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例,设前一个标记点坐标为(x,y),当前若为真正例,则对应标记点的坐标为(x,y+1/m+);当前若为假正例,则对应标记点的坐标为(x+1/m-,y),最后用线段连接相邻点。 补充:画P-R曲线其实也是这么操作的
较为合理的性能判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)
3.4 代价敏感错误率与代价曲线
为了权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost) 在非均等代价下,我们希望最小化“总体代价”(total cost)。若将表2.2中的第0类作为正类、第1类作为反类,令D+与D-分别代表样例集D的正例子集和反例子集,则“代价敏感”(cost-sensitive)错误率为: 类似地,可给出基于分布定义的代价敏感错误率,以及其他一些性能度量的代价敏感版本。若令costij中的i、j取值不限于0与1,则可定义处多分类任务的代价敏感性能度量。
在非均等代价下,用“代价曲线”(cost curve)反映学习器的期望总体代价。代价曲线图的横轴是取值范围[0,1]的正例概率代价 代价曲线的绘制:ROC曲线上每一点对应了代价平面上的一条线段。设ROC曲线上的一点坐标为(FPR,TPR),则可相应计算出FNR,然后再代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积即表示了该条件下的期望总代价。
4.偏差(bias)与方差(variance)
“偏差-方差分解”(bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。 偏差:学习算法的期望预测与实际结果的偏离程度的度量,即刻画了学习算法本身的拟合能力 方差:同样大小的训练集的变动所导致的学习性能的变化的度量,即刻画了数据扰动所造成的影响 噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度
由此可知,泛化性能由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。
一般而言,偏差与方差是有冲突的,称为偏差-方差窘境(bias-variance dilemma) 给定学习任务,在训练不足时,学习器拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度加深,学习器拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导泛化错误率。在训练程度充足后,学习器的拟合能力已经非常强,训练数据发生的轻微扰动都将会导致学习器发生显著变化,若训练集自身的、非全局的特性被学习器学到了,将会发生过拟合。
|