机器学习——模型评估与选择

一、偏差与方差

测试样本为 x \bf x x y D y_D yD x \bf x x在数据集中的标签, y y y x \bf x x的真实标签, f f f为训练集 D D D上学习得到的模型, f ( x ; D ) f({\bf x};D) f(x;D) f f f x \bf x x上的预测输出。

1、期望预测

f ‾ ( x ) = E D [ f ( x ; D ) ] \overline{f}({\bf x})=\mathbb{E}_{D}[f({\bf x} ; D)] f(x)=ED[f(x;D)]

2、方差

使用样本数目相同的不同训练集产生的方差

var ⁡ ( x ) = E D [ ( f ( x ; D ) − f ‾ ( x ) ) 2 ] \operatorname{var}(\boldsymbol{x})=\mathbb{E}_{D}\left[(f(\boldsymbol{x} ; D)-\overline{f}(\boldsymbol{x}))^{2}\right] var(x)=ED[(f(x;D)f(x))2]

3、噪声

ε 2 = E D [ ( y D − y ) 2 ] \varepsilon^{2}=\mathbb{E}_{D}\left[\left(y_{D}-y\right)^{2}\right] ε2=ED[(yDy)2]

4、偏差

期望输出与真是标签的差别为偏差

bias ⁡ 2 ( x ) = ( f ‾ ( x ) − y ) 2 \operatorname{bias}^{2}(\boldsymbol{x})=(\overline{f}(\boldsymbol{x})-y)^{2} bias2(x)=(f(x)y)2

5、期望泛化误差分解

期望泛化误差分解,假定噪声期望为0,即 E D [ y D − y ] = 0 \mathbb{E}_{D}\left[y_{D}-y\right]=0 ED[yDy]=0

E ( f ; D ) = bias ⁡ 2 ( x ) + var ⁡ ( x ) + ε 2 E(f ; D)=\operatorname{bias}^{2}(\boldsymbol{x})+\operatorname{var}(\boldsymbol{x})+\varepsilon^{2} E(f;D)=bias2(x)+var(x)+ε2

泛化误差 = 偏差 + 方差 + 噪声

  • 偏差度量了算法的期望预测与真是结果的偏离程度,刻画了算法本身的拟合能力
  • 方差度量了通用大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响
  • 噪声表达了在当前任务上任何算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度
  • 偏差-方差分解说明,泛化性能是由算法的能力、数据的充分性和任务本身难度决定的。

6、过拟合与欠拟合

  • 上图中,训练的初始阶段,算法的学习拟合能力不强,训练数据的扰动不足以使学习器产生显著变化,偏差主导泛化错误率,此时算法欠拟合

  • 随着训练程度的增加,算法的拟合能力增强,以至于在训练后期数据的细微扰动都被学习到,方差主导了泛化错误率,此时算法过拟合

8、进一步理解

偏差可以理解为训练集的表现,方差可以理解为验证集的表现。训练集的误差大(欠拟合)则偏差高,训练集的误差低但验证集误差大(欠拟合)则方差高。假设练集和验证集来自相同分布,举例说明:

01234
训练集误差1%15%15%0.5%
测试集误差12%16%30%1%
过拟合,高偏差欠拟合, 高偏差高偏差、方差低偏差低方差 ,适度拟合
  • 降低过拟合风险的方法:

    • 获得更多的数据集
    • 降低模型复杂度
    • 正则化方法
    • 集成学习
  • 降低欠拟合风险的方法:

    • 添加新的特征
    • 增加模型的复杂度
    • 减小正则化系数

二、评估方法

假设有包含 m m m个样本的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\left\{\left(\bf{x}_{1}, y_{1}\right),\left(\bf{x}_{2}, y_{2}\right), \ldots, \left(\bf{x}_{m}, y_{m}\right)\right\} D={(x1,y1),(x2,y2),,(xm,ym)},需要从中产生训练集 T T T和测试集 S S S

1、留出法(hold-out)

D D D划分为两个互斥的集合,训练集 T T T和测试集 S S S

  • 要尽可能保持数据分布的一致性。
  • 单次使用留出法估计的结果不可靠,一般采用若干次随机划分,重复进行多次后取平均值

2、k折交叉验证

以3-折交叉验证为例:

为例建学校因样本划分不同而引入的差别,k折交叉验证通常需要随机使用不同的划分重复P次,最终估计结果是P次k折交叉验证结果的均值。

3、自助法

数据集 D D D中一共有 m m m个样本,每次从中随机选一个复制到 D ′ D^{\prime} D中(相当于有放回采样),重复 m m m次。这样最后得到一个有 m m m个样本的数据集 D ′ D^{\prime} D。这样一部分样本在 D ′ D^{\prime} D中会出现多次,一部分样本则不会出现。假设样本在 m m m次采样中不被采到的概率为 ( 1 − 1 m ) m \left(1-\frac{1}{m}\right)^{m} (1m1)m,取极限:

lim ⁡ m ↦ ∞ ( 1 − 1 m ) m ↦ 1 e ≈ 0.368 \lim _{m \mapsto \infty}\left(1-\frac{1}{m}\right)^{m} \mapsto \frac{1}{e} \approx 0.368 mlim(1m1)me10.368

约有36.8%的样本未在 D ′ D^{\prime} D中。我们用 D ′ D^{\prime} D作为训练集, D \ D ′ D \backslash D^{\prime} D\D作为测试集,这样约有1/3没在训练集中出现过的样本作为测试集,这样的测试称为包外估计(out-of-bag)

自助法在数据集较小时很有用。但自助法产生的数据集改变了出事数据集的分布,会引入估计偏差。

三、性能度量

1、混淆矩阵

对于二分类问题,可以将真实标签和预测值得组合划分为真正例(TP),假正例(FP),真反例(TN),假反例(FN)。令TP、FP、TN、FN分别表示对于的样本数目,显然有TP+FP+TN+FN=样本总数。则混淆矩阵表示如下:

2、准确率、精度、召回率

  • 准确率(accuracy):

a c c = T P + T N T P + T N + F P + F N acc=\frac{TP+TN}{TP+TN+FP+FN} acc=TP+TN+FP+FNTP+TN

  • 精度(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偏低,R 高则P偏低

3、 F 1 F_{1} F1 分数

F 1 F_{1} F1分数综合了精度与召回率:

F 1 = 2 × P × R P + R F_{1}=\frac{2 \times P \times R}{P+R} F1=P+R2×P×R

F 1 F_{1} F1分数有更加一般的形式:

F β = 1 1 + β ( 1 P + β 2 R ) F_{\beta}=\frac{1}{1+\beta} \left(\frac{1}{P} + \frac{\beta^{2}}{R} \right) Fβ=1+β1(P1+Rβ2)

β &gt; 1 \beta &gt; 1 β>1时召回率的影响更大, β &lt; 1 \beta &lt; 1 β<1时精度的影响更大。

4、macro与micro

对于多分类问题,每两两类别的组合都对应一个混淆矩阵,我们希望在n个二分类的混淆矩阵上综合考察精度和召回率。

  • 先在个混淆矩阵上分别计算P和R,再计算平均值,得到宏查准率(macro-P)、宏查全率(macro-R)、宏 F 1 F_{1} F1(macro- F 1 F_{1} F1

m a c r o P = 1 n ∑ i = 1 n P i macro P=\frac{1}{n}\sum_{i=1}^n P_{i} macroP=n1i=1nPi
m a c r o R = 1 n ∑ i = 1 n R i macro R=\frac{1}{n}\sum_{i=1}^n R_{i} macroR=n1i=1nRi
m a c r o F 1 = 2 × m a c r o P × m a c r o R m a c r o P + m a c r o R macro F_{1}=\frac{2 \times macroP \times macroR}{macroP + macroR} macroF1=macroP+macroR2×macroP×macroR

  • 还可以将各混淆矩阵的对应缘故进行平均,得到 T P TP TP F P FP FP T N TN TN F N FN FN的平均值 T P ‾ \overline {TP} TP F P ‾ \overline {FP} FP T N ‾ \overline {TN} TN F N ‾ \overline {FN} FN,最后得到微查准率(micro-P)、微查全率(micro-R)、微 F 1 F_{1} F1(micro-F1)

m i c r o P = T P ‾ T P ‾ + F P ‾ micro P=\frac{\overline {TP}}{\overline {TP} + \overline {FP}} microP=TP+FPTP
m i c r o R = T P ‾ T P ‾ + F N ‾ micro R=\frac{\overline {TP}}{\overline {TP} + \overline {FN}} microR=TP+FNTP
m i c r o F 1 = 2 × m i c r o P × m i c r o R m i c r o P + m i c r o R micro F_{1}=\frac{2 \times microP \times microR}{microP + microR} microF1=microP+microR2×microP×microR

5、P-R曲线

P-R曲线的横轴是召回率,纵轴是精度。机器学习算法可以一般可以输出属于某个类别的概率,P-R曲线上的某一点表示,在某个概率阈值下,大于该阈值的结果判定为正样本,小于该阈值判定为负样本,此时返回结果对应的召回率和精度。整条P-R曲线就是通过将阈值从高到低移动而形成的。

若一个模型的P-R曲线被另一个完全包住,则后者优于前者。若曲线交叉,则看recall=precision的取值,即平衡点,大的则性能优。

6、ROC曲线

ROC曲线全称“受试者工作特征(Receiver operating characteristic)”。绘制方法与P-R曲线一样,不同的是,ROC曲线的纵轴是真正例率(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曲线还有另外一种绘制方法:假定正样本有P个,负样本有N个,把横轴刻度间隔设为 1 N \frac{1}{N} N1,纵轴刻度间隔设为 1 P \frac{1}{P} P1,再根据模型输出的预测概率对样本从高到低排序,以此遍历样本,从零点开始,每遇到一个正样本就沿纵轴方向绘制一个间隔,每遇到一个负样本就沿横轴方向绘制一个间隔,直到(1, 1)这个点。

若一个模型的ROC曲线被另一个完全包住,则后者优于前者。若有交叉,则用ROC曲线下面积AUC(Aera 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_{i=1}^{m-1} \left( x_{i+1} - x_{i}\right) \left(y_{i} + y_{i+1} \right) AUC=21i=1m1(xi+1xi)(yi+yi+1)

ROC曲线中可能出现斜线,所以应该用梯形面积公式。

参考资料

  • 周志华《机器学习》
  • 《百面机器学习》
  • https://github.com/datawhalechina/pumpkin-book
    ok
  • https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html#sphx-glr-auto-examples-model-selection-plot-roc-py

更多文章请浏览作者个人网站5663015.github.io
添加作者微信,一起交流学习,微信号:wuan3076
您的打赏是我进步的动力~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值