2.1 经验误差与过拟合
错误率(error rate): 通常我们把分类错误的样本数占样本总数的比例称为错误率.
E=amE = \frac{a}{m}E=ma
精度: 精度等于 1 - 错误率 (常表示为百分比形式),即:
精度=(1−am)×100%精度 = (1-\frac{a}{m})×100\%精度=(1−ma)×100%
更一般地,我们把学习器的实际预测输出与样本的真实输出之间的差异称为训练误差(training error) 或 经验误差(empirical error),在新样本上的误差称为泛化误差(generalization error)
2.2 评估方法(讨论样本的“使用方法”)
通常,我们通过实验测试来对学习器的泛化误差进行评估并进而做出选择.我们可以通过对数据集 D 进行适当的处理,从中 产生出训练集和测试集.
2.2.1 留出法
"留出法"直接将数据集 D 划分为两个互斥的集合:训练集 S 和测试集 T,在 S 上训练出模型后,用 T 来评估测试误差,作为对泛化误差的估计.
分层采样:
保留类别比例的采样方式(对数据集的划分)称为分层采样.
单次使用留出法得到的估计结果往往不够稳定可靠,一般要使用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果.
2.2.2 交叉验证法
"交叉验证法"先将数据集 D 划分为 k 个大小相似的互斥子集,即 D = D1∪D2∪…∪Dk, Di∩Dj ≠ ∅(i ≠ j).其中每个子集从 D 中分层采样得到.然后,每次用 k-1 个子集的并集作为训练集,余下的一个子集作为测试集,得到 k 个测试结果并取平均值.常见的有10次10折交叉验证
2.2.3 自助法(数据集较小 或 集成学习)
我们希望评估的是用 D 训练出的模型.但是在留出法和交叉验证法中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比 D 小,折必然会引入一些因为训练样本规模不同而导致的估计偏差,自助法比较好的解决了这个问题.
自助法直接以自助采样法为基础.给定包含 m 个样本的数据集 D ,我们对他进行采样产生数据集 D’.方法如下:
每次随机从 D 中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据及 D 中,使得该样本在下次采样时仍然有可能被采到:这个过程重复执行 m 次后,我们就得到了包含 m 个样本的数据集 D’,这就是自助采样的结果
:
显然有一部分样本会在 D’ 中多次出现,一部分样本一次也不出现.做一个简单地估计,样本在m次采样中适中不被采到的概率是(1−1m)m(1-\frac{1}{m})^m(1−m1)m,取极限得到
limm→+∞(1−1m)m=1e≈0.368\lim_{m \to + \infty}(1-\frac{1}{m})^m = \frac{1}{e} ≈ 0.368m→+∞lim(1−m1)m=e1≈0.368
即通过自主采样, 初始数据集 D 中约有36.8%的样本未出现在采样数据集 D’ 中.于是我们可以将 D’ 用作训练集,D\ D’ 用作测试集;这样,实际评估的模型与期望评估的模型都使用 m 个训练样本,而我们仍然有数据总量约13\frac1331的没在训练集中出现的样本用于测试.这样的测试结果,也称为包外估计.
自助法在数据集较小,难以有效划分训练/测试集时很有用;此外,自助法能从初始数据及中产生多个不同的训练集,这对集成学习等方法有很大的好处.
然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差.因此,在初始数据量足够时,留出法和交叉验证法更常用一些.
2.2.4 调参与最终模型
机器学习常涉及两类参数:超参数和模型参数。
二者的不同之处在于超参数通常是由人工设定多个参数候选值后产生模型,后者则是通过学习来产生多个候选模型。
因为在模型评估与选择中我们留出了一部分数据进行评估测试,事实上我们只使用了一部分数据用来训练模型。因此,在模型选择完成后,应该用数据集 D 重新训练模型。
另外,需要注意的是,我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/94e2b631deab26118cdc7b770338ec63.png)
例如,我们用测试集上的判别效果来估计模型在实际使用中的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参。
2.3 性能度量(具体公式)
性能度量是对模型泛化能力的评价,用于从训练出的多个学习器中选择泛化性能最好的。
回归任务中最常用的性能度量是均方误差(mean squared error)
E(f;D)=1m∑i=1m(f(xi)−yi)2E(f;D)=\frac1m\sum_{i=1}^m(f(x_i)-y_i)^2E(f;D)=m1i=1∑m(f(xi)−yi)2
本节下面主要介绍分类任务中的常用性能度量
2.3.1 错误率与精度
分类错误率定义为:
E(f;D)=1m∑i=1mⅡ(f(xi)̸=yi)E(f;D)=\frac1m\sum_{i=1}^mⅡ(f(x_i)\not=y_i)E(f;D)=m1i=1∑mⅡ(f(xi)̸=yi)
精度则定义为:
acc(f;D)=1−E(f;D)acc(f;D)=1-E(f;D)acc(f;D)=1−E(f;D)
2.3.2 查准率、查全率与 F1
对于二分类问题 ,可将样例根据真实类别与学习器预测类别的组合划分为真正例(true positive)、假正例(false positive)、真反例(ture negative)、假反例(false negative)四种情形。
查准率(准确率)定义为:
P=TPTP+FPP = \frac{TP}{TP+FP}P=TP+FPTP
查全率(召回率)定义为:
R=TPTP+FNR = \frac{TP}{TP+FN}R=TP+FNTP
查准率和查全率是一对矛盾的度量。
在很多情形下,我们可根据学习器的预测结果对样例进行排序,排在最前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”是正例的样本。按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴、查全率为横轴作图,就得到了P-R曲线。
在进行比较时,若一个学习器的P-R曲线被另一个学习器的P-R曲线完全包住,则可断言后者的性能优于前者,如图中A优于C。倘若两个曲线如A和B发生交叉,则上法失效,此时有以下两种方法考察查准率和查全率的性能度量。
- 平衡点(break-even point,简称BEP)
平衡点是 查准率=查全率 时的取值,如图中C的BEP为0.74,A为0.8,则可判定学习器A优于学习器B - F1度量
F1度量较BEP更为常用。
F1=2×P×RP+RF1=\frac{2\times P\times R}{P+R}F1=P+R2×P×R
在一些应用中,对查准率和查全率的重视程度有所不同。F1度量的一般形式——Fβ,能让我们表达出对查准率或查全率的不同偏好,它定义为:
Fβ=(1+β2)×P×R(P×β2)+RF_β=\frac{(1+β^2)\times P\times R}{(P\times β^2)+R}Fβ=(P×β2)+R(1+β2)×P×R当β=1时退化为标准的F1,β>1时查全率有更大的影响;β<1时查准率有更大的影响。
2.3.3 ROC 与 AUC
ROC全称是“受试者工作特征”(receiver operating characteristic)曲线。与P-R曲线相似,我们根据学习器的预测结果对样例进行排序,按顺序逐个把样本作为正例进行预测,每次计算出FPR与TPR,分别以它们为横、纵坐标作图,就得到了ROC曲线。
TPR为真正例率(true positive rate),FPR为假正例率(false positive rate)
TPR=TPTP+FNTPR=\frac{TP}{TP+FN}TPR=TP+FNTP
FPR=FPTN+FPFPR=\frac{FP}{TN+FP}FPR=TN+FPFP
在不同的应用任务中,我们可根据查准率和查全率的重视程度来设置截断点。因此,排序本身的好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”好坏,ROC曲线就是从这个角度出发来研究学习器的泛化性能。
显示ROC曲线的图称为ROC图。对角线对应于“随机猜测”模型,而点 (0,1) 则对应于所有正例排在所有返利之前的理想模型(即分类全部正确)
绘图过程很简单:给定 m+ 个正例和 m- 个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为 0 ,在坐标 (0,0) 处标记一个点。然后,一次将每个样例划分为正例。设前一个标记点坐标为 (x,y) ,当前若为真正例,则对应标记点的坐标为(x,y+1m+)(x,y+\frac{1}{m^+})(x,y+m+1);当前若为假正例,则对应标记点的坐标为(x+1m−,y)(x+\frac{1}{m^-},y)(x+m−1,y),然后用线段链接相邻点即可。
进行学习器的比较时,与P-R图相似,若一个学习器的ROC曲线被另一个学习器的ROC曲线包住,则后者优于前者;若曲线发生交叉,则比较各自ROC曲线下面积,即AUC(area under ROC curve)
AUC=12∑i=1m−1(xi+1−xi)⋅(yi+yi+1)AUC = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)\cdot(y_i+y_{i+1})AUC=21i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
形式化地看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。
给定m+个正例和m-个反例,令D+和D-分别表示正、反例集合,则排序损失定义为
2.3.4 代价敏感错误率与代价曲线
前面介绍的性能度量均为均等代价,为权衡不同类新错误所造成的的不同损失,可为错误赋予非均等代价。
以二分类任务为例,我们可根据任务的领域知识设定一个“代价矩阵”,如下表所示,其中costij表示将第 i 类样本预测为第 j 类样本的代价。
代价敏感错误率为:
E(f;D;cost)=1m(∑xi∈D+Ⅱ(f(xi)̸=yi)×cost01+∑xi∈D−Ⅱ(f(xi)̸=yi)×cost10))E(f;D;cost)=\frac1m\left(\sum_{x_i\in D^+ }Ⅱ(f(x_i)\not=y_i)×cost_{01}+\sum_{x_i\in D^- }Ⅱ(f(x_i)\not=y_i)×cost_{10})\right)E(f;D;cost)=m1(xi∈D+∑Ⅱ(f(xi)̸=yi)×cost01+xi∈D−∑Ⅱ(f(xi)̸=yi)×cost10))
若令costij中的i、j取值不限于0、1,则可定义出多酚类任务的代价敏感性能度量。
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而代价曲线可以达到该目的。代价曲线图的横轴是取值为 [0,1] 的正例概率代价
P(+)cost=p×cost01p×01+(1−p)×cost10P(+)cost=\frac{p\times cost_{01} }{ p\times {01}+(1-p)\times cost_{10}}P(+)cost=p×01+(1−p)×cost10p×cost01
其中p是样例为正例的概率;纵轴是取值为 [0,1] 的归一化代价
costnorm=FNR×p×cost01+FPR×(1−p)×cost10p×cost01+(1−p)×cost10cost_{norm}=\frac{FNR\times p\times cost_{01}+FPR\times (1-p) \times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}}costnorm=p×cost01+(1−p)×cost10FNR×p×cost01+FPR×(1−p)×cost10
其中FPR是假正例率,FNR=1-TPR 是假反例率。
代价曲线的绘制很简单:ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上点的坐标为(FPR,TPR),则可相应计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下的面积即表示了该条件下的期望总体代价;如此将ROC曲线上的每个店转化为代价平面上的一条线段,然后取所有线段的下届,围城的面积即为在所有条件下学习器的期望总体代价,如下图所示。
参考:周志华《机器学习》