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

1 基础知识

错误率:分类错误的样本数占样本总数的比例。
精度:精度=1-错误率。
误差:学习器的实际预测输出与样本的真实输出之间的差异。
训练误差或经验误差:学习器在训练集上的误差。
泛化误差:在新样本上的误差。
过拟合:学习器吧训练样本学习的过于好,在训练集上性能好,在新样本上性能差,泛化能力低。
欠拟合:对训练样本的一般性质尚未学好。通常由学习能力低下而造成的。较为容易克服。

由于无法直接获得泛化误差,而训练误差由于过拟合现象存在而不适合作为标准。要寻求某些结果进行模型评估和选择。

2 评估方法

可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。为此,需使用一个“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似。
测试集应该尽可能与训练集互斥。

2.1留出法

“留出法”(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即 D = S ∪ T , S ∩ T = ⊘ D=S\cup T,S\cap T=\oslash D=ST,ST=.在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
训练/测试集的划分要尽可能保持数据的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。
即便在给定训练/测试集的样本比例后,仍存在多种划分方法对初始数据集D进行分割。

2.2 交叉验证法

交叉验证法先将数据集D划分为k个大小相似的互斥子集,每个子集 D i D_i Di 都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。
在这里插入图片描述

与留出法相似,将数据集D划分为k个子集同样存在多种划分方式.为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。

留一法:交叉验证法的一个特例,数据集D中包含m个样本,令k=m。

2.3 自助法

以自助采样法为基础.给定包含m个样本的数据集 D,我们对它进行采样产生数据集 D 1 D^1 D1 每次随机从 D中挑选一个样本,将其拷贝放入 D 1 D^1 D1:然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含 m个样本的数据集 D 1 D^1 D1 这就是自助采样的结果。
D 1 D^1 D1用作训练集, D / D 1 D/D^1 D/D1用作测试集。
自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。

2.4 调参与最终模型

参数配置不同,学得模型的性能有显著差别。
学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型来是不可行的。现实中常用的做法,是对每个参数选定一个范围和变化步长,例如在[0,0.2]范围内以 0.05 为步长,则实际要评估的候选参数值有5个,最终是从这5个候选值中产生选定值.显然,这样选定的参数值往往不是“最佳”值,但这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行,事实上,即便在进行这样的折中后,调参往往仍很困难.

3 性能度量

回归任务最常用的性能度量是均方误差:
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f ; D)=\frac{1}{m} \sum_{i=1}^m\left(f\left(x_i\right)-y_i\right)^2 E(f;D)=m1i=1m(f(xi)yi)2
更一般的,对于数据分布D和概率密度函数,均方误差可描述为
E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}}(f(\boldsymbol{x})-y)^2 p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} E(f;D)=xD(f(x)y)2p(x)dx

3.1 错误率与精度

对样例集 D , D_, D,,分类错误率定义为:
E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f ; D)=\frac{1}{m} \sum_{i=1}^m \mathbb{I}\left(f\left(\boldsymbol{x}_i\right) \neq y_i\right) E(f;D)=m1i=1mI(f(xi)=yi)

精度定义为: acc ⁡ ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f ; D ) . \begin{aligned} \operatorname{acc}(f ; D) & =\frac{1}{m} \sum_{i=1}^m \mathbb{I}\left(f\left(\boldsymbol{x}_i\right)=y_i\right) \\ & =1-E(f ; D) . \end{aligned} acc(f;D)=m1i=1mI(f(xi)=yi)=1E(f;D).
更一般的对于数据分布D和概率密度函数p可将上述两式定义为:
E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x E(f ; \mathcal{D})=\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x}) \neq y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} E(f;D)=xDI(f(x)=y)p(x)dx
acc ⁡ ( f ; D ) = ∫ x ∼ D I ( f ( x ) = y ) p ( x ) d x = 1 − E ( f ; D ) . \begin{aligned} \operatorname{acc}(f ; \mathcal{D}) & =\int_{\boldsymbol{x} \sim \mathcal{D}} \mathbb{I}(f(\boldsymbol{x})=y) p(\boldsymbol{x}) \mathrm{d} \boldsymbol{x} \\ & =1-E(f ; \mathcal{D}) . \end{aligned} acc(f;D)=xDI(f(x)=y)p(x)dx=1E(f;D).

3.2 查准率,查全率与F1

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例、假正例、真反例、假反例四种情形,令TP、FP、TN、FN分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数.分类结果的“混淆矩阵”如下图。
在这里插入图片描述
查准率P和查全率R分别定义为:
P = T P T P + F P , R = T P T P + F N . \begin{aligned} & P=\frac{T P}{T P+F P}, \\ & R=\frac{T P}{T P+F N} . \end{aligned} P=TP+FPTP,R=TP+FNTP.
P与R是一对矛盾的度量。
下图为P-R曲线与平衡点示意图。
在这里插入图片描述
平衡点(BEP)是查准率=查全率时的取值,是一个综合考虑查准率,查全率的性能度量。
F1度量: F 1 = 2 × P × R P + R = 2 × T P  样例总数  + T P − T N .  F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times T P}{\text { 样例总数 }+T P-T N} \text {. } F1=P+R2×P×R= 样例总数 +TPTN2×TP
F1度量的一般形式—— F β F_\beta Fβ,能表达出对查准率/查全率的不同偏好,定义为: F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R , F_\beta=\frac{\left(1+\beta^2\right) \times P \times R}{\left(\beta^2 \times P\right)+R}, Fβ=(β2×P)+R(1+β2)×P×R,
其中 β > 0 \beta>0 β>0 度量了查全率对查准率的相对重要性 [Van Rijsbergen, 1979]. β = 1 \beta=1 β=1时退化为标准的 F 1 ; β > 1 F 1 ; \beta>1 F1;β>1 时查全率有更大影响; β < 1 \beta<1 β<1 时查准率有更大影响.
还可先将各混淆矩阵的对应元素进行平均, 得到 T P 、 F P 、 T N 、 F N T P 、 F P 、 T N 、 F N TPFPTNFN 的平均值, 分别记为 T P ‾ 、 F P ‾ 、 T N ‾ 、 F N ‾ \overline{T P} 、 \overline{F P} 、 \overline{T N} 、 \overline{F N} TPFPTNFN, 再基于这些平均值计算出 “微查准率” (micro- P P P )、“微查全率” (micro- R R R ) 和 “微F1” (micro- F 1 F 1 F1 ):
 micro-  P = T P ‾ T P ‾ + F P ‾ , \text { micro- } P=\frac{\overline{T P}}{\overline{T P}+\overline{F P}},  micro- P=TP+FPTP,

 micro-  R = T P ‾ T P ‾ + F N ‾ ,  micro-  F 1 = 2 ×  micro  P ×  micro  − R  micro  P +  micro  R . \begin{gathered} \text { micro- } R=\frac{\overline{T P}}{\overline{T P}+\overline{F N}}, \\ \text { micro- } F 1=\frac{2 \times \text { micro } P \times \text { micro }-R}{\text { micro } P+\text { micro } R} . \end{gathered}  micro- R=TP+FNTP, micro- F1= micro P+ micro R2× micro P× micro R.

3.3 ROC和AUC

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
在这里插入图片描述

3.4 代价敏感错误率与代价曲线

为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”。
以二分类任务为例,我们可根据任务的领域知识设定一个“代价矩阵”(cost matrix),如表2.2所示,其中 costij表示将第i类样本预测为第j类样本的代价:一般来说,costii=0;若将第0类判别为第1类所造成的损失更大,则 costo1>cost1o;损失程度相差越大,costo1与 cost1o 值的差别越大。
在这里插入图片描述
在非均等代价下, ROC 曲线不能直接反映出学习器的期望总体代价, 而 “代价曲线” (cost curve) 则可达到该目的. 代价曲线图的横轴是取值为 [ 0 , 1 ] [0,1] [0,1]的正例概率代价
P ( + ) cost ⁡ = p × cost ⁡ 01 p × cost ⁡ 01 + ( 1 − p ) × cost ⁡ 10 , P(+) \operatorname{cost}=\frac{p \times \operatorname{cost}_{01}}{p \times \operatorname{cost}_{01}+(1-p) \times \operatorname{cost}_{10}}, P(+)cost=p×cost01+(1p)×cost10p×cost01,

其中 p p p 是样例为正例的概率; 纵轴是取值为 [ 0 , 1 ] [0,1] [0,1] 的归一化代价
cost ⁡ norm  = F N R × p × cost ⁡ 01 + F P R × ( 1 − p ) × cost ⁡ 10 p × cost ⁡ 01 + ( 1 − p ) × cost ⁡ 10 , \operatorname{cost}_{\text {norm }}=\frac{\mathrm{FNR} \times p \times \operatorname{cost}_{01}+\mathrm{FPR} \times(1-p) \times \operatorname{cost}_{10}}{p \times \operatorname{cost}_{01}+(1-p) \times \operatorname{cost}_{10}}, costnorm =p×cost01+(1p)×cost10FNR×p×cost01+FPR×(1p)×cost10,

4 比较检验

4.1 假设检验

假设检验中的“假设”是对学习器泛化错误率分布的某种判断或猜想,例如 ξ = ξ 0 \xi =\xi _0 ξ=ξ0.现实任务中我们并不知道学习器的泛化错误率,只能获知其测试错误率.泛化错误率与测试错误率未必相同,但直观上,二者接近的可能性应比较大,相差很远的可能性比较小.因此,可根据测试错误率估推出泛化错误率的分布.

泛化错误率为 ϵ \epsilon ϵ 的学习器被测得测试错误率为 ϵ ^ \hat{\epsilon} ϵ^ 的概率:
P ( ϵ ^ ; ϵ ) = ( m ϵ ^ × m ) ϵ ϵ ^ × m ( 1 − ϵ ) m − ϵ ^ × m . P(\hat{\epsilon} ; \epsilon)=\binom{m}{\hat{\epsilon} \times m} \epsilon^{\hat{\epsilon} \times m}(1-\epsilon)^{m-\hat{\epsilon} \times m} . P(ϵ^;ϵ)=(ϵ^×mm)ϵϵ^×m(1ϵ)mϵ^×m.

1 − α 1-\alpha 1α 的概率内所能观测到的最大错误率如下式计算. 这里 1 − α 1-\alpha 1α 反映了结论的 “置信度”
ϵ ˉ = max ⁡ ϵ  s.t.  ∑ i = ϵ 0 × m + 1 m ( m i ) ϵ i ( 1 − ϵ ) m − i < α . \bar{\epsilon}=\max \epsilon \text { s.t. } \sum_{i=\epsilon_0 \times m+1}^m\binom{m}{i} \epsilon^i(1-\epsilon)^{m-i}<\alpha . ϵˉ=maxϵ s.t. i=ϵ0×m+1m(im)ϵi(1ϵ)mi<α.

假定我们得到了 k k k 个测试错误率, ϵ ^ 1 , ϵ ^ 2 , … , ϵ ^ k \hat{\epsilon}_1, \hat{\epsilon}_2, \ldots, \hat{\epsilon}_k ϵ^1,ϵ^2,,ϵ^k, 则平均测试错误率 μ \mu μ 和方差 σ 2 \sigma^2 σ2
μ = 1 k ∑ i = 1 k ϵ ^ i , σ 2 = 1 k − 1 ∑ i = 1 k ( ϵ ^ i − μ ) 2 . \begin{gathered} \mu=\frac{1}{k} \sum_{i=1}^k \hat{\epsilon}_i, \\ \sigma^2=\frac{1}{k-1} \sum_{i=1}^k\left(\hat{\epsilon}_i-\mu\right)^2 . \end{gathered} μ=k1i=1kϵ^i,σ2=k11i=1k(ϵ^iμ)2.

考虑到这 k k k 个测试错误率可看作泛化错误率 ϵ 0 \epsilon_0 ϵ0 的独立采样, 则变量
τ t = k ( μ − ϵ 0 ) σ \tau_t=\frac{\sqrt{k}\left(\mu-\epsilon_0\right)}{\sigma} τt=σk (μϵ0)
服从自由度为K-1的t分布。
在这里插入图片描述

4.2 交叉验证t检验

对两个学习器 A 和 B , 若我们使用 k 折交叉验证法得到的测试错误率分别为 ϵ i A 和 ϵ i B \epsilon_{i}^{A}和\epsilon_{i}^{B} ϵiAϵiB,则可用 k 折交叉验证 “成对 t 检验” 来进行比较检验. 这里的基本思想是若两个学习器的性能相同, 则它们使用相同的训练/测试集得到的测试错误率应相同, 即 ϵ i A = ϵ i B \epsilon_{i}^{A}=\epsilon_{i}^{B} ϵiA=ϵiB.

4.3 McNemar检验

对二分类问题,使用留出法不仅可估计出学习器A和B的测试错误率,还可获得两学习器分类结果的差别。
在这里插入图片描述

5 偏差与方差

偏差-方差分解是解释学习算法泛化性能的一种工具。
学习算法的期望预
测为
f ˉ ( x ) = E D [ f ( x ; D ) ] , \bar{f}(\boldsymbol{x})=\mathbb{E}_D[f(\boldsymbol{x} ; D)], fˉ(x)=ED[f(x;D)],

使用样本数相同的不同训练集产生的方差为
var ⁡ ( x ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] , \operatorname{var}(\boldsymbol{x})=\mathbb{E}_D\left[(f(\boldsymbol{x} ; D)-\bar{f}(\boldsymbol{x}))^2\right], var(x)=ED[(f(x;D)fˉ(x))2],

噪声为
ε 2 = E D [ ( y D − y ) 2 ] . \varepsilon^2=\mathbb{E}_D\left[\left(y_D-y\right)^2\right] . ε2=ED[(yDy)2].

期望输出与真实标记的差别称为偏差(bias), 即
bias ⁡ 2 ( x ) = ( f ˉ ( x ) − y ) 2 . \operatorname{bias}^2(\boldsymbol{x})=(\bar{f}(\boldsymbol{x})-y)^2 . bias2(x)=(fˉ(x)y)2.
泛化误差可分解为偏差,方差和噪声之和。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值