周志华《机器学习》第二章:模型评估与选择(2)

本文详细探讨了模型评估和选择中的比较检验,包括假设检验、交叉验证t检验、McNemar检验和Friedman检验。重点讲解了如何使用这些检验方法来比较和评估学习器的泛化性能,以及解决测试错误率不独立的问题。此外,还讨论了偏差-方差分解,并给出了课后习题,涉及留出法、交叉验证和错误率的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.4 比较检验

    在2.1~2.3节,我们讨论了评估学习器的实验评估方法和性能度量,看起来似乎已经完成了我们在本章开始时提出的任务:我们应该如何评价学得模型,并加以选择。但是具体怎么使用这些评估方法和性能度量呢?不是简单的直接应用,相反,学习器的性能比较是一件相当复杂的事情。首先考虑以下三个问题:

  1. 我们最终要评估的是学习器的泛化性能,可是由2.2节可知,我们是通过学习器的测试误差来近似泛化误差,这二者未必一致;
  2. 测试集的规模大小不同,或者样例数相同的测试集但集内样例个体不同,都会导致性能度量的数值不同;
  3. 学习算法内部有一些参数是依概率确定的,即便是针对同一数据集,同一个学习算法学到的结果也会不同。

    那么怎么比较学习器的性能呢?目光投向统计学领域——统计假设检验。

2.4.1 假设检验

    本节用错误率 ϵ \epsilon ϵ作为性能度量,定义泛化错误率: ϵ \epsilon ϵ,测试错误率: ϵ ^ \widehat{\epsilon} ϵ 。假定测试样本是从样本总体分布中独立采样而得,则泛化错误率为 ϵ \epsilon ϵ的学习器在 m m m个样本上恰好测试出测试错误率为 ϵ ^ \widehat{\epsilon} ϵ 的概率为:
P ( ϵ ^ ; ϵ ) = ( m ϵ ^ × m ) × ( ϵ ) ϵ ^ × m × ( 1 − ϵ ) m − ϵ ^ × m P(\widehat{\epsilon};\epsilon)=\tbinom{m}{\widehat{\epsilon}\times m}\times (\epsilon)^{\widehat{\epsilon}\times m}\times (1-\epsilon)^{m-\widehat{\epsilon}\times m} P(ϵ ;ϵ)=(ϵ ×mm)×(ϵ)ϵ ×m×(1ϵ)mϵ ×m
    令 ∂ P ∂ ϵ = 0 \frac{\partial P}{\partial \epsilon}=0 ϵP=0,解得 ϵ = ϵ ^ \epsilon=\widehat{\epsilon} ϵ=ϵ ,此时 P ( ϵ ^ ; ϵ ) P(\widehat{\epsilon};\epsilon) P(ϵ ;ϵ)最大。上式符合二项分布,如果 ϵ = 0.3 \epsilon=0.3 ϵ=0.3,则10个样本中被划分错误的样本数为3个的概率最大(即测试错误率=泛化错误率=0.3)下图:

    使用二项检验对“ ϵ ≤ 0.3 \epsilon \leq 0.3 ϵ0.3”这样的假设进行检验,更一般的,考虑假设“ ϵ ≤ ϵ 0 \epsilon \leq \epsilon_0 ϵϵ0”,则在 1 − α 1-\alpha 1α的概率内所能观测到的最大错误率如下计算。

这里书中给出的公式是: ϵ ‾ = m a x   ϵ   s . t .   ∑ i = ϵ 0 × m + 1 m ( m i ) ϵ i ( 1 − ϵ ) m − i < α \overline{\epsilon}=max \epsilon s.t. \displaystyle{\sum_{i=\epsilon_0\times m+1}^{m}\tbinom{m}{i}\epsilon^i(1-\epsilon)^{m-i}<\alpha} ϵ=max ϵ s.t. i=ϵ0×m+1m(im)ϵi(1ϵ)mi<α,这是不对的。
正确公式: ϵ ‾ = m i n   ϵ   s . t .   ∑ i = ϵ × m + 1 m ( m i ) ϵ 0 i ( 1 − ϵ 0 ) m − i < α \overline{\epsilon}=min \epsilon s.t. \displaystyle{\sum_{i=\epsilon\times m+1}^{m}\tbinom{m}{i}\epsilon_0^i(1-\epsilon_0)^{m-i}<\alpha} ϵ=min ϵ s.t. i=ϵ×m+1m(im)ϵ0i(1ϵ0)mi<α

    如果对这个改动做些解释:我们需要找到测试错误率 ϵ ‾ \overline{\epsilon} ϵ的上限值,如果 ϵ ^ ≤ ϵ ‾ \widehat{\epsilon}\leq \overline{\epsilon} ϵ ϵ,则可以以 1 − α 1-\alpha 1α的概率认为假设“ ϵ ≤ ϵ 0 \epsilon \leq\epsilon_0 ϵϵ0”成立。满足 ∑ i = ϵ × m + 1 m ( m i ) ϵ 0 i ( 1 − ϵ 0 ) m − i < α \displaystyle{\sum_{i=\epsilon\times m+1}^{m}\tbinom{m}{i}\epsilon_0^i(1-\epsilon_0)^{m-i}<\alpha} i=ϵ×m+1m(im)ϵ0i(1ϵ0)mi<α ϵ \epsilon ϵ有很多,也就是说满足这个条件的概率分布有很多,我们需要找到最小的 ϵ \epsilon ϵ,用它去限制 ϵ ^ \widehat{\epsilon} ϵ
    通常我们并非仅使用一次留出法,而是通过多次留出法或者交叉验证测试,得到多个测试错误率,那么此时需要使用 t t t检验。假定我们得到 k k k个测试错误率: ϵ ^ 1 , ϵ ^ 2 , , , ϵ ^ k \widehat{\epsilon}_1,\widehat{\epsilon}_2,,,\widehat{\epsilon}_k ϵ 1,ϵ 2,,,ϵ k,则平均测试错误率与方差:
μ = 1 k ∑ i = 1 k ϵ ^ i σ 2 = 1 k − 1 ∑ i = 1 k ( ϵ ^ i − μ ) 2 \begin{aligned} \\& \mu=\frac{1}{k}\displaystyle{\sum_{i=1}^{k}\widehat{\epsilon}_i} \\& \sigma^2=\frac{1}{k-1}\displaystyle{\sum_{i=1}^k(\widehat{\epsilon}_i-\mu)^2} \end{aligned} μ=k1i=1kϵ iσ2=k11i=1k(ϵ iμ)2

这里写的是 σ 2 \sigma^2 σ2,注意不要与”总体X的方差“相混淆。这里的 σ 2 \sigma^2 σ2是从总体中抽出的一部分样本的方差,即以前学过的 S 2 S^2 S2

    考虑到这k个测试错误率可以看作泛化错误率 ϵ 0 \epsilon_0 ϵ0的独立采样,则变量 τ t \tau_t τt服从自由度 k − 1 k-1 k1 t t t分布:
τ t = k ( μ − ϵ 0 ) σ \tau_t=\frac{\sqrt{k}(\mu-\epsilon_0)}{\sigma} τt=σk (μϵ0)
    对于假设“ μ = ϵ 0 \mu=\epsilon_0 μ=ϵ0“和显著度 α \alpha α,我们可以计算出:当测试错误率均值恰好是 ϵ 0 \epsilon_0 ϵ0时,在 1 − α 1-\alpha 1α的概率内能观测到的测试错误率的最大值,即临界错误率。如果考虑双边检验,如图,假定阴影部分范围分别为 ( − ∞ , t − α 2 ] (-\infty,t_{-\frac{\alpha}{2}}] (,t2α] [ t α 2 , + ∞ ] [t_{\frac{\alpha}{2}},+\infty] [t2α,+],如果平均测试错误率 μ \mu μ与“猜测”的泛化误差 ϵ 0 \epsilon_0 ϵ0之差 ∣ μ − ϵ 0 ∣ |\mu-\epsilon_0| μϵ0位于临界范围 [ t − α 2 , t α 2 ] [t_{-\frac{\alpha}{2}},t_{\frac{\alpha}{2}}] [t2α,t2α]之内,则认为假设“ μ = ϵ 0 \mu=\epsilon_0 μ=ϵ0“不可以拒绝,从而在 1 − α 1-\alpha 1α的置信度下,可以认为泛化错误率为 ϵ 0 \epsilon_0 ϵ0;否则,拒绝假设“ μ = ϵ 0 \mu=\epsilon_0 μ=ϵ0“,认为泛化错误率与 ϵ 0 \epsilon_0 ϵ0有显著不同。

2.4.2 交叉验证 t 检验

    上一节介绍的假设检验和 t t t检验都是针对单一学习器的泛化性能而言,那么如何比较不同的学习器的泛化性能呢?交叉验证 t 检验。
    交叉验证 t 检验的基本思想是:如果两个学习器的性能相同,那么它们使用相同的训练/测试集得到的预测误差率应该相同。假设现有学习器 A A A B B B,通过k折交叉验证得到的测试误差是 ϵ 1 A , ϵ 2 A , , , ϵ k A \epsilon_1^A,\epsilon_2^A,,,\epsilon_k^A ϵ1A,ϵ2A,,,ϵkA ϵ 1 B , ϵ 2 B , , , ϵ k B \epsilon_1^B,\epsilon_2^B,,,\epsilon_k^B ϵ1B,ϵ2B,,,ϵkB,则应该有 ϵ i A = ϵ i B \epsilon_i^A=\epsilon_i^B ϵiA=ϵiB(i表示学习器使用第 i i i 折数据集)。令 Δ i = ∣ ϵ i A − ϵ i B ∣ \Delta_i=|\epsilon_i^A-\epsilon_i^B| Δi=ϵiAϵiB,根据 Δ 1 , Δ 2 , , , Δ k \Delta_1,\Delta_2,,,\Delta_k Δ1,Δ2,,,Δk对“学习器 A A A B B B泛化性能相同”这一假设进行验证,显然仍然可以使用 t 检验。变量 τ t \tau_t τt服从自由度 k − 1 k-1 k1 t t t分布:
τ t = k × μ σ \tau_t=\frac{\sqrt{k}\times \mu}{\sigma} τt=σk ×μ
    注意 μ \mu μ Δ i \Delta_i Δi的均值。若 ∣ τ t ∣ |\tau_t| τt小于临界值,则认为假设不能被拒绝,否则认为学习器 A A A B B B性能差异显著,且平均测试错误率更低的学习器性能更好。
    进行有效的假设检验的前提是测试错误率均为泛化错误率的独立采样,但是k折交叉验证显然会造成若干测试错误率彼此之间不独立,最后得到的假设成立的该概率估计会更大,可用“ 5 × 2 5\times 2 5×2交叉验证”来缓解这一问题。第 i i i次2折将产生两个测试错误率: Δ i 1 , Δ i 2 \Delta_i^1,\Delta_i^2 Δi1,Δi2。为缓解测试错误率的非独立性,我们仅计算第 1 1 1 折数据集上的测试错误率的均值 μ = 0.5 ( Δ 1 1 + Δ 1 2 ) \mu=0.5(\Delta_1^1+\Delta_1^2) μ=0.5(Δ11+Δ12),但对每次2折实验都计算其方差: σ i 2 = ( Δ i 1 − Δ i 1 + Δ i 2 2 ) 2 + ( Δ i 2 − Δ i 1 + Δ i 2 2 ) 2 \sigma_i^2=(\Delta_i^1-\frac{\Delta_i^1+\Delta_i^2}{2})^2+(\Delta_i^2-\frac{\Delta_i^1+\Delta_i^2}{2})^2 σi2=(Δi12Δi1+Δi2)2+(Δi22Δi1+Δi2)2。变量 τ t \tau_t τt服从自由度为 5 5 5 t t t分布:
τ t = μ 0.2 ∑ i = 1 5 σ i 2 \tau_t=\frac{ \mu}{\sqrt{0.2\sum_{i=1}^{5}\sigma_i^2}} τt=0.2i=15σi2 μ

2.4.3 McNemar检验

    对于二分类问题,留出法不仅可以估计出学习器 A A A B B B的测试错误率,还可获得分类结果的差别。

表2.3 两学习器分类差别列联表
算法B算法A
正确错误
正确e_00e_01
错误e_10e_11

    若二者性能相同,定有 e 01 = e 10 e_{01}=e_{10} e01=e10,那么 ∣ e 01 − e 10 ∣ |e_{01}-e_{10}| e01e10应当服从正态分布,McNemar考虑检验变量 τ χ 2 \tau_{\chi^2} τχ2服从自由度为1的 χ 2 \chi^2 χ2分布。
τ χ 2 = ( ∣ e 01 − e 10 ∣ ) 2 e 01 + e 10 \tau_{\chi^2}=\frac{(|e_{01}-e_{10}|)^2}{e_{01}+e_{10}} τχ2=e01+e10(e01e10)2
    考虑The correction of continuty,上式改写为 τ χ 2 = ( ∣ e 01 − e 10 ∣ − 1 ) 2 e 01 + e 10 \tau_{\chi^2}=\frac{(|e_{01}-e_{10}|-1)^2}{e_{01}+e_{10}} τχ2=e01+e10(e01e101)2

Edwards于1948年写道:我们对 A A A D D D这两个量的比例更感兴趣,若用 χ 2 \chi^2 χ2分布进行评估,将 A A A D D D中较小的数值+0.5,较大的-0.5.故在分子上减一。

    变量小于临界值时,接受假设“两学习器的性能没有显著差异”;否则认为二者有较大差异。

2.4.4 Friedman检验与Nemenyi后续检验

    “交叉验证t检验”和“McNemar检验”都是在一个数据集上比较两个算法的泛化性能,如果我们需要比较多个算法, 有两种方法:一种是两两比较,另一种时Friedman检验:
    假设我们在数据集D1、D2、D3、D4上比较算法A、B、C,然后在每个数据集上根据测试性能由好到坏排序,如果性能相同,则平分序值:

表2.4 算法比较排序表
数据集 算法A 算法B 算法C
D1123
D212.52.5
D3123
D4123
平均序值12.1252.875

    **Friedman检验可以检验多个学习算法是否性能都相同,若果性能相同,它们的平均序值应该相同。**假定在N个数据集上检验k个算法,令 r i r_i ri表示第i个算法的平均序值,如果不考虑平分序值的情况,则 r i r_i ri的均值和方差分别为 ( k + 1 ) / 2 (k+1)/2 (k+1)/2 ( k 2 − 1 ) / 12 N (k^2-1)/{12N} (k21)/12N.变量
τ χ 2 = k − 1 k ⋅ 12 N k 2 − 1 ⋅   ∑ i = 1 k ( r i − k + 1 2 ) 2 = 12 N k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) \tau_{\chi^2}=\frac{k-1}{k}\cdot \frac{12N}{k^2-1}\cdot\ \displaystyle{\sum_{i=1}^k}\left(r_i-\frac{k+1}{2}\right)^2=\frac{12N}{k(k+1)}\left(\displaystyle{\sum_{i=1}^k}r_i^2-\frac{k(k+1)^2}{4}\right) τχ2=kk1k2112N i=1k(ri2k+1)2=k(k+1)12N(i=1kri24k(k+1)2)
    在k和N都较大的时候服从自由度为 k − 1 k-1 k1 χ 2 \chi^2 χ2分布。这样的“原始Friedman检验”过于保守,现在通常使用服从自由度为k-1和(k-1)(N-1)的F分布的变量: τ F = ( N − 1 ) τ χ 2 N ( k − 1 ) − τ χ 2 \tau_F=\frac{(N-1)\tau_{\chi^2}}{N(k-1)-\tau_{\chi^2}} τF=N(k1)τχ2(N1)τχ2
    若“所有算法的性能相同”这个假设被拒绝,则说明算法的性能显著不同,但是不知道是哪些算法性能不同。这时需要“后续检验”,常用Nemenyi后续检验。
    Nemenyi后续检验计算出的平均序值差别的临界值域 C D = q α k ( k + 1 ) 6 N CD=q_\alpha\sqrt{\frac{k(k+1)}{6N}} CD=qα6Nk(k+1)
    若两个算法的平均序值之差超过临界值CD,则以相应的置信度拒绝“两个学习器性能相同”

这里并没有没彻底搞懂,留个坑,下一篇文章对非参数检验做一个较详细的梳理。

2.5 偏差——方差

    若学习算法我们可以用2.1-2.4节估计其泛化性能,但是为什么可以呢?为社么学习算法会有这样或者那样的泛化性能呢?做一个数学上的推导:
    对测试样本 x x x,令 y D y_D yD表示数据集的标记, y y y x x x的真实标记, f ( x ; D ) f(x;D) f(x;D)为训练集 D D D上学得模型 f f f x x x上的预测输出。以回归任务为例:

  1. 学习算法的期望预测为 f ( x ) ‾ = E [ f ( x ; D ) ] \overline{f(x)}=\mathbb{E}[f(x;D)] f(x)=E[f(x;D)]
  2. 使用样本数相同的不同训练集产生的方差: v a r ( x ) = E [ ( f ( x ; D ) − f ( x ) ‾ ) 2 ] var(x)=\mathbb{E}\left[\left(f(x;D)-\overline{f(x)}\right)^2\right] var(x)=E[(f(x;D)f(x))2]
  3. 噪声 ϵ 2 = E [ ( y ‾ D − y ) 2 ] \epsilon^2=\mathbb{E}\left[(\overline y_D-y)^2\right] ϵ2=E[(yDy)2]
  4. 期望输出与真实标记的差别,即“偏差”: b i a s 2 ( x ) = ( f ( x ) ‾ − y ) 2 bias^2(x)=\left(\overline{f(x)}-y\right)^2 bias2(x)=(f(x)y)2
        若假设噪声期望是0,即 E [ y D − y ] = 0 \mathbb{E}[y_D-y]=0 E[yDy]=0,则算法的期望泛化误差:
      E ( f ; D ) = E [ ( f ( x ; D ) − y D ) 2 ] = E [ ( f ( x ; D ) − f ( x ) ‾ + f ( x ) ‾ − y D ) 2 ] = E [ ( f ( x ; D ) − f ( x ) ‾ ) 2 ] + E [ ( f ( x ) ‾ − y D ) 2 ] + 2 E [ ( f ( x ; D ) − f ( x ) ‾ ) ( f ( x ) ‾ − y D ) ] = E [ ( f ( x ; D ) − f ( x ) ‾ ) 2 ] + E [ ( f ( x ) ‾ − y D ) 2 ] = v a r ( x ) + E [ ( f ( x ) ‾ − y + y − y D ) 2 ] = v a r ( x ) + E [ ( f ( x ) ‾ − y ) 2 ] + E [ ( y − y D ) 2 ] + 2 E [ ( f ( x ) ‾ − y ) ( y − y D ) ] = v a r ( x ) + ( f ( x ) ‾ − y ) 2 + ϵ 2 + 0 = v a r ( x ) + b i a s 2 ( x ) + ϵ 2 \begin{aligned} \ \mathbb{E}(f;D)&=\mathbb{E}\left[\left(f(x;D)-y_D\right)^2\right] \\& =\mathbb{E}\left[\left(f(x;D)-\overline{f(x)}+\overline{f(x)}-y_D\right)^2\right] \\&=\mathbb{E}\left[\left(f(x;D)-\overline{f(x)}\right)^2\right]+\mathbb{E}\left[\left(\overline{f(x)}-y_D\right)^2\right]+2\mathbb{E}\left[\left(f(x;D)-\overline{f(x)}\right)\left(\overline{f(x)}-y_D\right)\right] \\&=\mathbb{E}\left[\left(f(x;D)-\overline{f(x)}\right)^2\right]+\mathbb{E}\left[\left(\overline{f(x)}-y_D\right)^2\right] \\&=var(x)+\mathbb{E}\left[\left(\overline{f(x)}-y+y-y_D\right)^2\right] \\&=var(x)+\mathbb{E}\left[\left(\overline{f(x)}-y\right)^2\right]+\mathbb{E}\left[\left(y-y_D\right)^2\right]+2\mathbb{E}\left[\left(\overline{f(x)}-y\right)\left(y-y_D\right)\right] \\&=var(x)+\left(\overline{f(x)}-y\right)^2+\epsilon^2+0 \\&=var(x)+bias^2(x)+\epsilon^2 \end{aligned}  E(f;D)=E[(f(x;D)yD)2]=E[(f(x;D)f(x)+f(x)yD)2]=E[(f(x;D)f(x))2]+E[(f(x)yD)2]+2E[(f(x;D)f(x))(f(x)yD)]=E[(f(x;D)f(x))2]+E[(f(x)yD)2]=var(x)+E[(f(x)y+yyD)2]=var(x)+E[(f(x)y)2]+E[(yyD)2]+2E[(f(x)y)(yyD)]=var(x)+(f(x)y)2+ϵ2+0=var(x)+bias2(x)+ϵ2

    即泛化误差=偏差+方差+噪声。偏差反应学习器本身的拟合能力;方差反应同样大小的训练集的变动所导致的学习性能的变化情况,即刻画了数据扰动所造成的影响;噪声是期望泛化误差的下界,刻画了问题本身的难易程度。

课后习题

1. 数据集包含1000个样本,其中500个正例,500个反例,将其划分为包含70%样本的训练集和30%样本的测试集用于留出法评估,试估算共有多少种划分方式。

答: ( 500 150 ) 2 \tbinom{500}{150}^2 (150500)2

2. 数据集包含100个样本,其中正反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10折交叉验证法和留一法分别对错误率进行评估所得的结果。

答:1. 10折交叉验证:训练集中正/反样本数相同,测试误差率 50 % 50\% 50%
    2.留一法:若测试样本为正例,则训练集中反例比正例多一个样本,预测结果是反例;反之亦然。所以,测试错误率为 100 % 100\% 100%

3.若学习器 A A A F 1 F1 F1值比学习器 B B B高,试析 A A A B E P BEP BEP值是否也比 B B B高。

答:不一定。首先回顾下二者的定义:

  1. 查全率 R R R与查准率 P P P相等时的 R O C ROC ROC曲线上的点叫做 B E P BEP BEP
  2. 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

我们将学习器做出的预测结果排序,逐个把样例预测为正例,每次计算出两个数值,并以这两个数值为坐标轴绘制ROC曲线。横轴为“假正例率”(FPR),纵轴为“真正例率”(TPR)

    可见ROC上每个点都对应一个 F 1 F1 F1,但是ROC曲线上特定的点处才有BEP,所以若学习器 A A A F 1 F1 F1值比学习器 B B B高, A A A B E P BEP BEP值不一定比 B B B高。
    如果反过来:“若学习器 A A A B E P BEP BEP值比学习器 B B B高,试析 A A A F 1 F1 F1值是否也比 B B B高”,这是成立的,推导如下:
    假设 B E P ( A ) > B E P ( B ) BEP_{(A)}>BEP_{(B)} BEP(A)>BEP(B),则 P ( A ) = R ( A ) > P ( B ) = R ( B ) P_{(A)}=R_{(A)}>P_{(B)}=R_{(B)} P(A)=R(A)>P(B)=R(B),又此时:
{ F ( A ) = 2 × P ( A ) × R ( A ) P ( A ) + R ( A ) = P ( A ) F ( B ) = 2 × P ( B ) × R ( B ) P ( B ) + R ( B ) = P ( B ) \left\{ \begin{aligned} &F_{(A)}=\frac{2\times P_{(A)}\times R_{(A)}}{P_{(A)}+R_{(A)}}=P_{(A)} \\ &F_{(B)}=\frac{2\times P_{(B)}\times R_{(B)}}{P_{(B)}+R_{(B)}}=P_{(B)} \\ \end{aligned} \right. F(A)=P(A)+R(A)2×P(A)×R(A)=P(A)F(B)=P(B)+R(B)2×P(B)×R(B)=P(B)
    故 F 1 ( A ) > F 1 ( B ) F1_{(A)}>F1_{(B)} F1(A)>F1(B).

4.试述真正例率( T P R TPR TPR)、假正例率( F P R FPR FPR)与查准率( P P P)、查全率( R R R)之间的联系。

答:
{ P = T P T P + F N R = T P T P + F P \left\{ \begin{aligned} &P=\frac{TP}{TP+FN} \\ &R=\frac{TP}{TP+FP} \\ \end{aligned} \right. P=TP+FNTPR=TP+FPTP
{ T P R = T P T P + F N F P R = F P F P + T N \left\{ \begin{aligned} TPR=\frac{TP}{TP+FN} \\ FPR=\frac{FP}{FP+TN} \\ \end{aligned} \right. TPR=TP+FNTPFPR=FP+TNFP P = T P R P=TPR P=TPR F P R FPR FPR P , R P,R P,R无关系。

5.试证明 A U C = 1 − l r a n k AUC=1−l_{rank} AUC=1lrank

答:我们在《周志华《机器学习》第二章:模型评估与选择(1)》已经做过解释:

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}\displaystyle{\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1})} AUC=21i=1m1(xi+1xi)(yi+yi+1)
ROC曲线体现的是预测结果的排序质量,所以AUC与排序误差密切相关。从这个角度去理解AUC,可得:
A U C = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − Ⅱ ( f ( x + ) > f ( x − ) ) AUC=\frac{1}{m_+m_-}\displaystyle{\sum_{x^+\in D^+}}\displaystyle{\sum_{x^-\in D^-}}Ⅱ(f(x^+)>f(x^-)) AUC=m+m1x+D+xD(f(x+)>f(x))
从反方向定义排序“损失”:
l r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( Ⅱ ( f ( x + ) < f ( x − ) ) + 1 2 Ⅱ ( f ( x + ) = f ( x − ) ) ) l_{rank}=\frac{1}{m_+m_-}\displaystyle{\sum_{x^+\in D^+}}\displaystyle{\sum_{x^-\in D^-}}(Ⅱ(f(x^+)<f(x^-))+\frac{1}{2}Ⅱ(f(x^+)=f(x^-))) lrank=m+m1x+D+xD((f(x+)<f(x))+21(f(x+)=f(x)))
显然 A U C = 1 − l r a n k AUC=1-l_{rank} AUC=1lrank

    其实,书中给出的 R O C ROC ROC曲线的示例图不完整,除了x和y方向,曲线还可以沿斜线向上,这种情况对应的是“正例与反例的预测值相同,排序所处的位置是相同的,在计算面积的时候要 × 0.5 \times0.5 ×0.5”。这就对应了 l r a n k l_{rank} lrank 1 2 Ⅱ ( f ( x + ) = f ( x − ) \frac{1}{2}Ⅱ(f(x^+)=f(x^-) 21(f(x+)=f(x)

6.试述错误率与ROC曲线之间的关系

回顾 R O C ROC ROC曲线是怎么画出来的:我们将学习器做出的预测结果排序,逐个把样例预测为正例,每次计算出两个数值,并以这两个数值为坐标轴绘制ROC曲线。横轴为“假正例率”(FPR),纵轴为“真正例率”(TPR)。

     R O C ROC ROC曲线上每个点都对应一个错误率。粗略的来看,错误率越低, R O C ROC ROC曲线越“上扬”。

7.试证明任意一条ROC曲线都有一条代价曲线与之对应,反之亦然。

答: R O C : { x : F P R = F P F P + T N y : T P R = T P T P + F N ROC:\left\{ \begin{aligned} x :FPR=\frac{FP}{FP+TN} \\ y :TPR=\frac{TP}{TP+FN} \\ \end{aligned} \right. ROC:x:FPR=FP+TNFPy:TPR=TP+FNTP
代 价 曲 线 : { x : P ( + ) c o s t = p × c o s t 01 p × c o s t 01 + ( 1 − p ) × c o s t 10 y : o s t n o r m = F N R × p × c o s t 01 + F P R × ( 1 − p ) × c o s t 10 p × c o s t 01 + ( 1 − p ) × c o s t 10 代价曲线:\left\{ \begin{aligned} &x :P(+)cost=\frac{p\times cost_{01}}{p\times cost_{01}+(1-p)\times cost_{10}} \\ &y :ost_{norm}=\frac{FNR\times p\times cost_{01}+FPR\times (1-p)\times cost_{10}}{p\times cost_{01}+(1-p)\times cost_{10}} \\ \end{aligned} \right. 线:x:P(+)cost=p×cost01+(1p)×cost10p×cost01y:ostnorm=p×cost01+(1p)×cost10FNR×p×cost01+FPR×(1p)×cost10
R O C ROC ROC曲线是 ( F P R , T P R ) (FPR,TPR) (FPR,TPR)的函数,代价曲线是 ( F P R , 1 − T P R ) (FPR,1-TPR) (FPR,1TPR)的函数,故错误率与ROC曲线一一对应。

8.Min-Max规范化与z-score规范化如下所示。试析二者的优缺点。

M i n − M a x 规 范 化 : x ′ = x m i n ′ + x − x m i n x m a x − x m i n × ( x m a x ′ − x m i n ′ ) , z − s c o r e 规 范 化 : x ′ = x − x ‾ σ x . \begin{aligned} \\ Min-Max规范化:x^{'}=&x_{min}^{'}+\frac{x-x_{min}}{x_{max}-x_{min}} \times(x_{max}^{'}-x_{min}^{'}), \\ z-score规范化:x^{'}=&\frac{x-\overline{x}}{\sigma{x}}. \end{aligned} MinMax:x=zscore:x=xmin+xmaxxminxxmin×(xmaxxmin),σxxx.
答: 1. Min-Max规范化只是简单的做了一个尺度变换,相当于拉伸 x x x的变化范围,将其迁移到正半轴。使用 x m a x x_{max} xmax x m i n x_{min} xmin的一个弊端就是:如果存在一个异常数据,导致这二者中有一个数值过大(过小),就会造成 x ′ x^{'} x对数据变化的不敏感性。
     2.z-score规范化后的数据分布在原点两侧,有正有负;且对数据异常变化不是很敏感。

9.试述卡方检验过程。

答:参见《概率与统计》。

10*.试述在使用Friedman检验中使用式(2.34)与(2.35)的区别

    Friedman检验可以检验多个学习算法是否性能都相同,若果性能相同,它们的平均序值应该相同。假定在N个数据集上检验k个算法,令 r i r_i ri表示第i个算法的平均序值,如果不考虑平分序值的情况,则 r i r_i ri的均值和方差分别为 ( k + 1 ) / 2 (k+1)/2 (k+1)/2 ( k 2 − 1 ) / 12 N (k^2-1)/{12N} (k21)/12N.变量
τ χ 2 = k − 1 k ⋅ 12 N k 2 − 1 ⋅   ∑ i = 1 k ( r i − k + 1 2 ) 2 = 12 N k ( k + 1 ) ( ∑ i = 1 k r i 2 − k ( k + 1 ) 2 4 ) \tau_{\chi^2}=\frac{k-1}{k}\cdot \frac{12N}{k^2-1}\cdot\ \displaystyle{\sum_{i=1}^k}\left(r_i-\frac{k+1}{2}\right)^2=\frac{12N}{k(k+1)}\left(\displaystyle{\sum_{i=1}^k}r_i^2-\frac{k(k+1)^2}{4}\right) τχ2=kk1k2112N i=1k(ri2k+1)2=k(k+1)12N(i=1kri24k(k+1)2)
    在k和N都较大的时候服从自由度为 k − 1 k-1 k1 χ 2 \chi^2 χ2分布。这样的“原始Friedman检验”过于保守,现在通常使用服从自由度为 k − 1 k-1 k1 ( k − 1 ) ( N − 1 ) (k-1)(N-1) (k1)(N1)的F分布的变量: τ F = ( N − 1 ) τ χ 2 N ( k − 1 ) − τ χ 2 \tau_F=\frac{(N-1)\tau_{\chi^2}}{N(k-1)-\tau_{\chi^2}} τF=N(k1)τχ2(N1)τχ2

    从 r i r_i ri的方差为 ( k 2 − 1 ) / 12 N (k^2-1)/{12N} (k21)/12N可知,这个只是在不同的数据集上简单的均分:离散型均匀分布的方差 k 2 − 1 12 \frac{k^2-1}{12} 12k21。这没有考虑到数据集不同对方差的影响,因此“保守”。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值