基本术语
中文 | 英文 | 含义 |
---|---|---|
错误率 | error rate | 分类错误的样本数占样本总数的比例 |
精度 | accuracy | =1 - error rate |
误差 | error | 预测输出与真实输出之间的差异 |
泛化误差 | generalization | 在新样本上的误差 |
过拟合 | overfitting | 将训练样本的一些特性当成了一般性质 |
欠拟合 | underfitting | 训练样本的一般性质尚未学好 |
学习器的目标:得到泛化误差小的学习器
过拟合是机器学习面临的关键障碍,是无法彻底避免的:
机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这意味着"P = NP"; 因此,只要相信“P ≠ NP”,过拟合就不可避免。
为了对学习器的性能进行评估,需要使用一个 testing set 来测试学习器的泛化误差,然后以测试集上的testing error 作为泛化误差的近似。
下面是几种常见做法:
将数据集划分为两个互斥的集合,一个作为训练集S,一个作为测试集T,即
D= S ∪ T ,S ∩ T = ∅
训练/测试集的划分要尽可能的保持数据分布的一致性。
通常将大约 2/3 - 4/5 的样本用于训练,其他用于测试。
将数据集D划分为k个大小相似的互斥子集,即
D = D1 ∪ D2 ∪ · · · ∪ Dk
Di ∩ Dj =∅ ( i ≠ j)
每个子集Di都尽可能保证数据分布的一致性。
然后,每次用 k-1 个子集的并集作为训练集,余下的那个子集作为测试集,这样可以获得 k 组训练/测试集,从而进行k次训练和测试
交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k 的取值,又称为“k折交叉验证”(k-fold cross validation)。k最常用取值是10
将数据集D划分为 k 个子集同样存在多种划分方式,为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复 p次,常见有“10次10折交叉验证”
若k = 样本数m ,则得到一个特例,留一法(Leave-One-Out)LOO,该方法不受随机样本划分方式影响。
以自助采用(bootstrap samping)为基础,给定数据集D,对它进行采样产生数据集 D’:每次随机从D中挑选一个样本。将其拷贝放入D’,然后再将该样本放回D,重复执行每次。
样本在m次采样中始终不被采到的概率是(1-1/m)^m,取极限为0.38
自助法在数据集小,难以划分训练/测试集时很有用,但是,自助法产生的数据集改变了原始数据集的分布,在初始数据量足够时,留出法与交叉验证法更加常用。
通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集通常称为“验证集”validation set
性能度量是衡量模型泛化能力的评价标准,反映了任务需求,模型好坏不仅取决于算法和数据,还决定于任务需求
回归任务中常见的性能度量是“均方误差”(mean squared error)
错误率与精度是分类任务中最常用的两种性能度量。
错误率定义为
精度定义为
对于二分类问题,可将样例根据其真实类别与学习器的预测类别的组合划分为“真正例”,“假正例”,“真反例”,“假反例”,TP,FP.,TN,FN,分类结果的混淆矩阵(confusion matrix)如表所示
真实情况 | 预测结果 | |
---|---|---|
正例 | 反例 | |
正例 | TP(真正例) | FN(假反例) |
反例 | FP(假正例) | TN(真反例) |
查准率 P : P = T P T P + F P \frac{TP}{TP+FP} TP+FPTP
查全率 P : P = T P T P + F N \frac{TP}{TP+FN} TP+FNTP
以查准率作为纵轴,以查全率作为横轴,得到的曲线称为 “ P-R曲线 ” ,显示曲线的图称为
“P-R图” 。
若一个学习器的 P-R曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者
曲线发生交叉时,一般考虑“平衡点”(Break-Even Point,BEP),它是查准率等于查全率时的取值,在P-R图上看就是P-R曲线与斜率为1的正比例函数交点。
更加常用的是F1度量:
在一些应用中,对于查准率与查全率的偏好有所不同,F1度量的一般形式Fβ ,能表现出对查准率与查全率的不同偏好:
β = 1时即为F1度量,β大于1 时偏好查全率,β小于1偏好查准率
当需要在n个二分类混淆矩阵上综合考察查准率与查全率时,一种直接做法时先算出n组(P,R),再计算平均值,得到“宏查准率”(macro - P),“宏查全率”(macro - R)。同样,还可以对混淆矩阵的每个元素进行平均,得到“微查准率”(micro - P),“微查全率”(micro - R)
很多学习器是为测试样本产生一个实值或者概率预测,将这个预测值与分类阈值(threshold)进行比较。我们可以根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别它们为横纵坐标作图,得到“ROC曲线”,纵轴是“真正例率”(TPR),横轴是假正例率(FPR)
AUC考虑的是样本预测的排序质量
在现实任务中常会遇到这种情况,不同类型的错误所造成的后果不一样。可以根据任务的领域知识设定一个代价矩阵(cost martix),如下表:
真实类别 | 预测类别 | |
---|---|---|
第0类 | 第1类 | |
第0类 | 0 | cost01 |
第一类 | cost10 | 0 |
E(f;D;cost)= 1 m \frac{1}{m} m1 ( ∑ x ∈ D + Ⅱ \sum_{x∈D+}Ⅱ ∑x∈D+Ⅱ(f( x i x_i xi)≠ y i y_i yi).cost01 + ∑ x ∈ D − Ⅱ \sum_{x∈D-}Ⅱ ∑x∈D−Ⅱ(f( x i x_i xi)≠ y i y_i yi).cost10)
在非均等代价下,ROC曲线不能直接反应出学习器的期望总体代价,而“代价曲线”(cost curve)则可以达到该目的,横轴是取值为[0,1]的正例概率代价,纵轴是取值为[0,1]的归一化代价:
FPR是假正例率,FNR = 1- TPR是假反例率。
代价曲线绘制过程如下:
ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(FPR,TPR),可计算出FNR,在代价平面上绘制一条从(0,FOR)到(1,FNR)的线段,线段下 的面积即代表了该条件下的期望总体代价。如果将ROC曲线上所有点都转化为这样的线段,取所有线段的下界,围城的面积就是在所有条件下学习器的期望总体代价。
统计假设检验( hypothesis test)为我们进行学习器性能比较提供了重要依据。基于假设检验结果我们可推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大
以下默认错误率为性能度量,用ε表示、
现实中我们并不知道学习器的泛化错误率ε,智能获知其测试错误率ε’,泛化错误率与测试错误率未必相同,但直观上,二者接近的可能性较大。
泛化误差可以分解为偏差,方差与噪声之和
偏差度量了学习算法的期望预测与真实结果的偏离程度,即学习算法本身的拟合能力
方差度量了同样大小的训练集的变动所导致的学习性能的变化,即数据扰动所造成的影响
噪声表达了当前任务上任何学习算法所能带到的期望泛化误差的下界,即问题本身的难度
偏方方差分解说明:泛化性能是由学习算法的能力,数据的充分性,以及学习任务本身的难度所共同决定的。
一般来说,偏差与方差是有冲突的,称为偏差-方差窘境(bias-variance dilemma)(过拟合与欠拟合)
本章是一些机器学习的基本概念术语,介绍了一些评估模型的方法
在遇到了一些实际问题后,愈发感觉到此章节的重要性