【DataWhale机器学习吃瓜教程】 第二章 模型评估与选择

系列文章目录

【DataWhale机器学习吃瓜教程】 第一章 绪论
【DataWhale机器学习吃瓜教程】 第二章 模型评估与选择



概述

这一章主要介绍机器学习模型的数据集划分方法、性能度量和比较检验。其中实践中比较常用到的是各类性能度量指标,如Precision、Recall、F1、ROC、AOC等。书中原文给出了非常多的证明,对于理解指标的目的和原理十分有帮助,但是要想完全掌握此章内容,还需在实践中多多加以利用,各个指标也都尤其使用场景和特点,需要持续总结,从书外的内容进行补充。后续有时间会再行记录补充。


一、数据集划分方法

1.1 留出法

直接将数据集 D D D划分为互斥的两个集合,如训练集 S S S和测试集 T T T,同时满足 D = S ∪ T D=S\cup T D=ST, S ∩ T = Ø S\cap T=\text {\O} ST=Ø
划分时还需注意

  • 保持数据分布一致性:如保持分类任务中,各类别数据在训练集和测试集的比例相似,从采样的角度来看,这被称作"分层采样"
  • 多次随机划分取均值
  • 训练集和测试集的比例问题: S S S太大, T T T的评估结果就可能不够稳定; T T T太大,则 S S S D D D的差异就可能大,模型可能学不全。所以一般取2/3~4/5用作训练集

1.2 交叉验证法

也称“k折交叉验证”,先将数据集 D D D按分层采样的方法,尽可能保持数据分布的一致性,划分为k个大小相同的子集,取k-1个子集做训练,剩下一个用于评估。这样共会产生k组实验结果,再对其取平均。对于k,最常用的取值为10,也有5、20等取值

1.3 自助法

以自助采样法为基础,即有放回地从 D D D中进行多次采样,假设 D D D共有m个样本,则有放回地采样m次构成 D ′ D' D D D D中会有样本多次出现在 D ′ D' D中,也会有不出现的,不出现的概率为 lim ⁡ m − > ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim\limits_{m->\infty}(1-\frac 1 m)^m=\frac 1 e\approx0.368 m>lim(1m1)m=e10.368,即当选用 D ′ ∖ D D'\setminus D DD作为测试集时,仍有36.8%约1/3的为测试数据,用以确保评估的真实性和有效性,又被称为“包外评估

  • 优势
    • 适用于数据集较小难以有效划分训练/测试集时
    • 能从初始数据集中产生多个不同的训练集,对集成学习友好
  • 缺点
    • 但会改变初始数据集的分布,在初始数据量足够时尽量不使用该方法

验证集

测试集用来判别模型在实际使用时的泛化能力,训练数据另外划分为训练集和验证集,验证集表现用来进行模型选择和调参

二、性能度量

2.1 错误率与精度

顾名思义!此处不记!

2.2 查准率、查全率与F1

引自西瓜书

查准率(Precision) P = T P T P + F P P =\frac {TP} {TP+FP} P=TP+FPTP 代表预测对的正例占所有预测为正例的比重(上表第一列)
查全率(Recall) R = T P T P + F N R=\frac {TP} {TP+FN} R=TP+FNTP 代表预测对的正例占所有真实为正例的比重(上表第一行)
例如希望选出所有好瓜,则可以通过增加选瓜数量实现,将所有瓜都选出来,好瓜自然也就都选出来了,此时查全率就会高,查准率则会低;若想让好瓜的比例尽可能高,则只挑选其中最有把握的,这样也会漏掉不少好瓜,则查准率高而查全率低。因此,查准率和查全率都很高往往很难达成。
引自西瓜书
因此,以查准率为纵轴,查全率为横轴作图,可以得到一条查准率-查全率曲线,即“P-R曲线”,用以综合考虑查准率与查全率
同时,更常用的是F1度量,它是二者的调和平均数

F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F1=\frac {2\times P \times R} {P+R}=\frac {2 \times TP} {样例总数+TP-TN} F1=P+R2×P×R=样例总数+TPTN2×TP

其对二者可以分别进行加权,形式如下

F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta =\frac {(1+\beta ^2)\times P \times R} {(\beta ^2 \times P)+R} Fβ=(β2×P)+R(1+β2)×P×R

可以看出,当 β > 1 \beta > 1 β>1时,查准率P权重更高;当 β < 1 \beta < 1 β<1时,查全率R权重更高;当 β = 1 \beta = 1 β=1时会退化为标准的F1

2.3 ROC与AOC

很多学习器在做分类时会产生一个预测值,然后将预测值与某个阈值进行比较,若预测值大于阈值,则分为正类,反之为负类。当该阈值确定时,不同学习器的性能可以用其预测正确的比例来评估,例如,我们肯定希望预测结果中的真正率越高越好,假正率越低越好,因此ROC就采用了该方法。

ROC(Receiver Operating Characteristic):受试者工作特征曲线,其本身可用于衡量学习器的性能,纵轴为真正例率(TPR),横轴为假正例率(FPR)。具体公式如下

T P R = T P T P + F N TPR=\frac {TP} {TP+FN} TPR=TP+FNTP 除表格第一行,预测为正实际也为正占正的比例,正例里预测对的比例,应提升该项

F P R = F P T N + F P FPR=\frac {FP} {TN+FP} FPR=TN+FPFP 除表格第二行,预测为正实际为反占反的比例,反例里预测错的比例,应降低该项

在这里插入图片描述
进行学习器的比较时,若一个学习器的 ROC 曲线被另个学习器的曲线完全“包住”,则后者的性能优于前者;若两个学习器的 ROC 曲线发生交叉,则较为合理的判据是比较ROC曲线下的面积,即AUC(Area Under ROC Curve)

A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC=\frac 1 2 \sum\limits^{m-1}_{i=1}(x_{i+1}-x_i)\cdot (y_i+y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)

三、比较检验

在从性能度量获取结果时,并不能直接通过比较大小的方式获得学习器的优劣结果,还需要从其他方面进行综合比较,如泛化性能、测试集的选取、算法本身的随机性等

3.1 假设检验

通过检测错误率估算泛化错误率的分布,来获取检测结果的置信度
常用的包括二项检验、t检验、交叉验证t检验、McNemar检验等
我的理解是二项检验是针对单次测试的测试错误率的,即已知单次测试集结果上学习器的测试错误率,直接通过二项分布计算泛化错误率最大值不超过某阈值的置信度;
t检验则是适用于多次实验下,已知有k个测试错误率,则计算测试错误率的均值和方差,采用t分布去计算泛化错误率的最大值;
McNemar检验则是考虑两学习器分类结果的异同,先假设二者没有性能差异,再通过卡方分布计算临界值,若超过临界值则推翻假设

四、偏差与方差

“偏差-方差分解”可以用以解释学习算法的泛化性能。
TODO
西瓜书P45 泛化误差的分解
简单来说,泛化误差可以分解为偏差、方差与噪声之和,形式如下:

E ( f ; D ) = b i a s 2 ( x ) + v a r ( x ) + ϵ 2 E(f;D)=bias^2(x)+var(x)+\epsilon^2 E(f;D)=bias2(x)+var(x)+ϵ2

偏差度量学习算法的期望预测真实结果的偏离程度,刻画算法本身的拟合能力;
方差度量同样大小训练集的变动导致的学习性能的变化,刻画数据扰动造成的影响;
噪声表达当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画学习问题本身的难度
所以给定学习任务,要想取得更好的泛化性能,三者都应尽量小

一般来说,偏差与方差存在矛盾,训练不足时,模型的拟合能力不强,数据的扰动不足以使模型发生变化,此时偏差主导泛化错误率;当训练成都家申,模型拟合能力增强,数据扰动渐渐被学习到,方差逐渐开始主导;当训练充分,模型拟合能力已经很强,此时一点点轻微的扰动都可能导致模型性能的显著变化,容易过拟合。

  • 24
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天明Timing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值