【学习笔记】西瓜书机器学习之第二章模型评估与选择及统计假设检验基础

1.评估方法

为了对学习器的泛化误差进行评估,需要采用一个测试集(不在训练集里)来测试模型的能力。这时我们会将数据集D进行适当的处理,从D中获取训练集S和测试集T。不仅如此,有时在D中还需要有一个验证集(Validation)用于比较不同模型的结果。

1.1 留出法(Hold-Out)

直接讲数据集分为两个互斥的集合。比如把数据集按照37分,7分作为训练集,3分作为测试集。一般会采用若干次随机划分,重复进行实验评估后取平均值作为留出法的结果。需要注意的是划分比例,因为:

S 太多 -----T 太少 ------评估结果可能不够准确
S 太少 -----T 太多 ------离真实的模型差距太大

1.2 交叉验证法(Cross-validation)

将数据集D划分成K个大小相同互斥的子集。每次用K-1个子集作为训练集,剩下一个作为测试集。这样就可以获得K组训练集和测试集,从而可进行k次训练和测试,最后返回的也是k组测试的结果的均值。

如果一共m个样本,k=m,在这个特殊情况下得到的交叉验证法称之为留一法(Leave-One-Out),留一法的优势是实际评估的模型与期望评估的模型很相似。缺点是计算开销太大。

1.3 自助法(bootstrapping)

上述两种方法都有一个弊端,那就是训练集都小于实际的数据集D,而我们想要的是D训练出来的模型。因此自助法很好的解决了这个问题,在m个样本的数据集D中,每次随机抽出一个样本,放入数据集D‘中,并放回原数据集中,经过m次的抽取我们获得了一个m个样本的数据集D’。因为概论的问题大概会有0.368的数据一次都不会被抽到。随后D’作为训练集,D作为测试集集。

自助法在数据集较小的时候使用比较好,能从数据集中产生多个训练集
留出法和交叉验证法一般是在初使数据量足够大的时候使用

2.性能度量

性能度量是用来衡量模型泛化能力的评价标准,使用不同的性能度量往往会导致不同的评判结果,因此模型的好坏往往取决于任务需求。

2.1 错误率与精度

错误率是分类任务中错误样本数占样本总数的比例。

精度 = 1- 错误率

2.2 查准率,查全率,F1

错误率和精度这两个指标虽然常常被使用,但是在某些应用场景下显得不够用。比如在西瓜问题中,我们关心的是“预测是好瓜的里面有多少真的是好瓜”或者“所有的好瓜中有多少被挑选出来了”。遂即引入两个新的概念。

查准率(P):在我们预测的好瓜中,实际是好瓜的概论。其他的应用场景是垃圾邮件和推荐系统,「宁可漏掉,不可错杀」。

查全率(R):在所有的好瓜里,成功预测出好瓜的概率。其他应用场景为,银行或保险预测有违约风险的用户,或者有道德风险的用;逃犯,「宁可错杀,不可漏掉」。

F1度量结合了查准率和查全率:
Fbeta = (1+beta square)PR / [(beta square*P)+R]
当beta > 1 时查准率有更大的影响,当beta < 1时查全率有更大影响.

2.3 ROC与AUC

根据机器学习的预测结果对样例进行排序,按此顺序逐个把作为正利进行预测,每次计算出TPR(Ture positive rate)作为纵轴,把FPR(False Positive Rate)作为横轴,由此画出了ROC线,ROC线下面的的部分即为AUC(Area under ROC curve).

                 AUC = 1 - Loss_rank

我们将整个图像想像成1,那么lossrank的部分应该是曲线上方的部分,lossrank函数是一个计算模型预测出错的一个累积函数。比如,有m个样本,若正例的预测值小于反例,则记一个罚分,若想等则记0.5个罚分。

在这里插入图片描述

由此,我们知道AUC的面积是越大越好,这样意味着模型结果越为准确。

2.4 代价敏感错误与代价曲线

在现实生活中,往往会越到这样的情况,看似都是发生了“一次错误”,但“一次错误”的代价却完全不同,比如“把健康的人当作了患者”,“把患者当作了健康人”,明显后者的代价更大,我们也希望学习器在犯后者错误时的惩罚更为严重。为了权衡不同类型错误造成的不同损失,可将错误赋予“非均等代价”。

错误1:把健康的人(0)当作了患者(1):cost01
错误2:把患者(1)当作了健康人(0):cost10

               cost01 <<  cost10
               错误1的代价是重复检查的成本
               错误2的代价可能是患者未能及时救治而错过最佳救治时间

期望总体代价:所有错误*它们对应的cost之和。
因此,我们现在最小化的不再是犯错的次数而是期望总体代价最小。

3.假设检验

尽管有上面种种方法,但是学习器的性能评估依然非常复杂(泛化性能,学习本身的随机性),我们还得借助统计假设检验来为我们提供重要依据。基于假设检验的结果,我们能够得出结论学习器A的泛化性能是否优于学习器B。

3.1 假设检验四大步骤

step1:设定原假设(H0)和备择假设(Ha)。我们首先要确定备择假设。我们想检验什么,什么东西就是备择假设,与原假设则与备择假设相对。
例如学习器A和学习器B的问题,欲证明学习器A的泛化能力优于学习器B的泛化能力。E代表error :
H0:  Ea = Eb
Ha:Ea < Eb

step2: 得到检验统计量,一般来说我们有两种方法
test statistic:是一个具体的数,不同的test有着不一样的test statistic
p value:是一个概率,可由critical value 得到

step3: 根据需要选择显著性水平(specify the significance level),可有显著水平得出Tcritical的值。
显著水平一般选为,0.01,0.05,0.1.如果为0.01,也就是说有百分之99的可能性,H0在True的情况下我们没有拒绝H0,我们做了正确的决定。
详情请看下面表格。

step4:作出决定。决定是由第二步和第三步共同决定的。
test statistic:如果计算得出的T_sta 超出了T_critical得值,拒绝H0.
P value: 如果P value是小于显著水平的,拒绝H0.
用上面的例子:
显著水平:0.05
P value:0.38
P value < 显著水平。因此我们有足够的证据拒绝H0,而更倾向于Ha的假设。
结论为:有足够证据表明学习器A的泛化能力优于学习器B的泛化能力。

图1

3.2 一组数据多个算法,多组数据多个算法

上述的假设检验只能验证2个对象之间的假设,比如一组数据2个算法,或2组数据一个算法。当我们遇到多组算法时,我们通常使用的方法同时对多组进行比较。

H0: 所有算法的性能一样
Ha:至少有一组算法性能不同

先得出这个假设检验的结果,如拒绝H0,再来分组对不同的算法进行后续假设检验(post-hoc test)。

H0: Ei  = Ex
Ha:Ei != Ex

常用的有Nemenyi后续检验,计算两个算法的平均序值之差,如果查处了临界值,则拒绝两个算法性能相同。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值