评估方法、性能度量和比较检验

机器学习中模型的评估方法、性能度量和结果的检验方法在对算法进行训练时,我们必须要有相应的数据。我们并不能在所有数据上进行训练,否则就没有数据来对算法的性能进行验证了。这就涉及到训练集与测试集划分的问题,即评估方法。算法在训练好了之后,需要将其在数据集上进行测试,如何来衡量测试的结果,这就是性能的度量。有了实验评估方法和性能度量,看起来就能对学习算法的性能进行评估比较了:先使用某种实验评估方法测得学习
摘要由CSDN通过智能技术生成

机器学习中模型的评估方法、性能度量和结果的检验方法

在对算法进行训练时,我们必须要有相应的数据。我们并不能在所有数据上进行训练,否则就没有数据来对算法的性能进行验证了。这就涉及到训练集与测试集划分的问题,即评估方法。

算法在训练好了之后,需要将其在数据集上进行测试,如何来衡量测试的结果,这就是性能的度量。

有了实验评估方法和性能度量,看起来就能对学习算法的性能进行评估比较了:先使用某种实验评估方法测得学习算法的某个性能度量结果,然后对这些结果进行比较。但怎样来做这个比较呢?是直接取得性能度量的值然后比较吗?实际上,机器学习中性能比较这件事要复杂的多。这里涉及几个重要的因素:首先,我们希望比较的是泛化性能,然而通过实验评估方法获得的是测试集上的性能,两者对比的结果可能未必相同;第二,测试集上的性能与测试集本身的选择有很大的关系,且不论使用大小的测试集会得到不同的结果,即便使用同样大小的测试集,若包含的测试用例不一样,测试的结果也会有不同;第三,很多机器学习算法本身有一定的随机性,即便使用相同的参数设置在同一个测试集上多此运行,其结果也会有不同。所有要有检验的方法来获取结果的可信度。

评估方法

其实在机器学习中有三种类型的数据集,训练集、验证集和测试集。对于训练集,一般没有什么疑问。而测试集是实际中碰到的数据,也是机器学习算法在实际中运行中所碰到的数据,其实这个数据我们是没有办法获得的。而验证集呢,其实是跟训练集一起提供的,我们只是将其独立出来,用于估计算法的泛化误差。这也是我们平常所说的测试集。

测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现,未在训练过程中使用过。对于训练集与测试集的划分有几种常见的方法。

留出法

直接将数据集划分为两个互斥的集合,一个作为训练集一个作为测试集。

首先需要考虑的就是两个集合中样本数的比例。如果训练集中数据太多,则估计的误差结果可能不准确。如果训练数据太少,则有可能会造成欠拟合。一般来说,训练集的比例大约是2/3 ~ 4/5。

这种划分要尽可能保持数据分布的一致性,避免因数据划分引入额外的偏差而对最终的结果产生影响。即在训练集与测试集中每个类别的样本的比例应该尽可能与原数据集一致。

在给定两个集合中样本的比例之后,分割的方法又是多种多样的。一般采用若干次随机划分、重复进行实验评估后取平均值作为评估结果。

交叉验证

k折交叉验证是将数据集划分为k个互斥的子集,每个子集都要求尽可能保持数据分布的一致性。每次训练用k - 1个子集作为训练集,1个子集作为测试集,这样就可以进行k次训练和测试,最后输出k次结果的平均值。k最常见的取值为10。

与留出法一样,k个子集的划分同样有非常多的方式。为了减小因样本划分的不同而引入的差别,通常要进行多次k折交叉验证。

考虑下极端的情况,若k = m(m表示数据集的大小),这种方法称为留一法。留一法不会受随机划分的影响。留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用完整数据集训练出的模型很相似。因此留一法的评估结果比较准确。留一法也存在其自身的缺陷:在数据集较大时,训练m个模型的计算开销是难以接受的。另外,留一法的评估结果未必永远比其他评估方法准确,因为『没有免费午餐』定理对评估方法同样准确。

自助法(bootstarpping)

给定包含m个样本的数据集D,对它进行采样产生数据集D’:每一次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样中仍有可能被采到;这个过程重复执行m次后,就得到了包含m个样本的数据集D’。其实就是一个有放回的采样过程。

这样,D中有一部分样本在D’中出现一次以上,而另一部分样本不会出现,由下式可知:

limm(11m)m1e

初始数据集D中有36.8%的样本未出现在采样数据集D’中。可以将D’作为训练集,D\D’作为测试集(这里是一个减法操作)。这样,实际评估的模型与期望评估的模型都是用了m个训练样本,而仍有数据总量的36.8%没有在训练集中出现的数据作为测试数据集。

自助法在数据集较小、难以有效地划分时很有用。自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处(有一类集成学习的方法就是构建在自助法之上的)。然而,自助法产生的数据改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据量足够时,留出法和交叉验证更为常用。

性能度量

对学习算法的泛化性能进行评估,不仅需要有效可行的评估方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量。注意将其与学习算法的目标函数区分开来,目标函数是在参数调整时使用的,虽然在有些情况下两者是一样的。

在对比不同模型的能力时,使用不同的性能度量时往往会导致不同的判断结果。这意味着模型的好坏是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。

准确率、召回率与F1

对于二分类问题,可将样例根据真实类别与学习算法的预测类别的组合划分为真正例、假正例、真反例、假反例四种情况。令TP、FP、TN、FN分别表示其对应的样例数。

真实情况 正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

准确率P与召回率R的定义分别为:

P=TPTP+FP

R=TPTP+FN

准确率与召回率是一对矛盾的度量。一般来说,准确率高时,召回率往往偏低;而召回率高时,准确率往往偏低。

可以根据学习算法的预测结果对样例进行排序,排在前面的是学习算法认为最可能是正例的样本,排在最后的则是学习算法认为最不可能是正例的样本。按次顺序逐个把样本作为正例进行预测,则每次可以计算出当前的准确率和召回率。可以得到准确率-召回率曲线,简称P-R曲线。

准确率-召回率曲线

若一个学习算法的P-R曲线被另一个学习算法的P-R曲线完全包住,则可以断言后一个学习算法的性能优于前者。如果两个学习算法的P-R曲线有交叉,则难以一般性的断言两者孰优孰劣,只能在具体的准确率或是召回率条件下进行比较。

P-R曲线下的面积大小在一定程度上表征了学习算法在准确率和召回率上取得相对『双高』的比例。但是这个值不太容易估算。

F1度量:

F1=2×P×RP+R=2×TP+TPTN

这里对于准确率与召回率的重要性是一样的。在具体的应用中,对于准确率和召回率的重视程度其实是不一样的。F1的一般形式 Fβ 度量能够表达出对准确率和召回率的偏好。

Fβ=(1+β2)×P×R(β2×P)+R,
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值