美文网首页
机器学习(西瓜书)第二章 模型评估与选择 课后习题

机器学习(西瓜书)第二章 模型评估与选择 课后习题

作者: 傑jay | 来源:发表于2019-12-12 16:57 被阅读0次

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

    • 题目分析:根据题意,我们需要划分出350个正例和反例作为样本的训练集,150个正例和反例作为样本的测试集,因此该题是一个典型的排列组合问题。
    • 答案{C^{350}_{500}}^2 或 {C^{150}_{500}}^2

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

    • 知识点

    十折交叉验证,英文名叫做10-fold cross-validation,用来测试算法准确性。是常用的测试方法。将数据集分成十份,轮流将其中9份作为训练数据,1份作为测试数据,进行试验。

    留一法,假定数据集D中包含m个样本,若令k=m,则得到了交叉验证法的一个特例:留一法(Leave-One-Out,简称LOO)。显然,留一法不受随机样本划分方式的影响,因为m个样本只有唯一的方式划分为m个子集——每个子集包含一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用D训练出的模型很相似。因此,留一法的评估结果往往被认为比较准确。然而,留一法也有其缺陷:在数据集比较大时,训练m个模型的计算开销可能是难以忍受的(例如数据集包含1百万个样本,则需训练1百万个模型),而这还是在未考虑算法调参的情况下。另外,留一法的估计结果也未必永远比其他评估方法准确;“没有免费的午餐”定理对实验评估方法同样适用。

    • 答案

    十折交叉验证:10折交叉验证时,每个训练集应该有45正例、45反例,验证集应该有5正例、5反例,由于训练集中正例、反例比例为1:1,则按照题目的预测算法,预测时会进行随机预测(因为训练样本数比例相同),所以错误率的期望为50%

    留一法:留下来做验证集的样本有两种情况:正例、反例。当留下来的是正例时,训练集中反例比正例多一个,按照题目的算法会将验证集预测为反例,预测错误;留下来的是反例时同理,会将验证集预测为正例。所以错误率的期望为100%

    2.3 若学习器A的F_1值比学习器B高,试分析A的BEP值是否也比B高。

    • 知识点

    F_1=\frac{2*P*R}{P+R}

    BEP是查准率和查全率相等的点,即BEP=P=R
    BEP=\frac{2*P*P}{P+P}=P

    • 分析:此题常见错误即认为F1与BEP相等,虽然BEP是F1的特殊情况,但F1的大小与BEP的大小没有明确的关系。由于是两个不同分类器,F_{1A}>F_{1B}并不能推算出P_A和P_B之间的大小关系。

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

    • 知识点

    分类结果混淆矩阵如下

    分类结果混淆矩阵
    • 分析

    查全率: 真正的正例被预测为正例的比率
    R=\frac{TP}{TP+FN}

    真正例率:真正的正例被预测为正例的比率
    TPR=\frac{TP}{TP+FN}

    显然查全率=真正例率

    查准率: 预测的正例中真正的正例所占的比率
    P=\frac{TP}{TP+FP}

    假正例率:真正的反例被预测为正例的比率
    FPR=\frac{FP}{TP+FP}

    查准率与假正例率没有数值上的关系

    2.5 试证明AUC=1-\ell_{rank}

    • 题目解释:根据定义知AUC可以通过ROC曲线下各部分面积求和而得,而此题即需要证明为何\ell_{rank} 表示的是ROC曲线之上的面积,即证明以下\ell_{rank}求得公式。
      \ell_{rank}=\frac{1}{m^+ m^-}\sum_{x^+ \in D^+}\sum_{x^- \in D^-}\mathbb{I}(f(x^+)<f(x^-))+\frac{1}{2}\mathbb{I}(f(x^+)=f(x^-))
    • 推导过程

    以下内容参考南瓜书PumpkinBook——第二章 模型评估

    假设某ROC曲线如下图所示:


    某ROC曲线

    观察ROC曲线易知:

    • 每增加一条绿色线段对应着有一个正样例x^+_i被模型正确判别为正例,且该线段在Y轴的投影长度恒为\frac{1}{m^+}
    • 每增加一条红色线段对应着有一个反样例x^-_i被模型正确判别为正例,且该线段在X轴的投影长度恒为\frac{1}{m^-}
    • 每增加一条蓝色线段对应着有a个正样例和b个反样例同时被判别为正例,且该线段在X轴上的投影长度为b*\frac{1}{m^-},在Y轴上的投影长度为a*\frac{1}{m^+}
    • 任何一条线段所对应的样例的预测值一定小于其左边和下边的线段所对应的样例的预测值,其中蓝色线段所对应的a+b个样例的预测值相等。

    公式里的\sum_{x^+ \in D^+}可以看成一个遍历x^+_i的循环:

    for x^+_i in D^+ :
    \frac{1}{m^+}\frac{1}{m^-}\sum_{x^- \in D^-}(\mathbb{I}(f(x^+_i)<f(x^-))+\frac{1}{2}\mathbb{I}(f(x^+_i)=f(x^-))) 将该式记为S
    由于每个x^+_i都对应着一条绿色或蓝色线段,所以遍历x^+_i 可以看成是在遍历每条绿色和蓝色线段,并用式S来求出每条绿色线段与Y轴构成的面积(例如上图中的m1)或者蓝色线段与Y轴构成的面积(例如上图中的m2+m3)

    对于每条绿色线段: 将其式S展开可得:
    \frac{1}{m^+}\frac{1}{m^-}\sum_{x^- \in D^-}\mathbb{I}(f(x^+_i)<f(x^-))+\frac{1}{m^+}\frac{1}{m^-}\sum_{x^- \in D^-}\frac{1}{2}\mathbb{I}(f(x^+_i)=f(x^-))
    其中x^+_i此时恒为该线段所对应的正样例,是一个定值。\sum_{x^- \in D^-}\frac{1}{2}\mathbb{I}(f(x^+_i)=f(x^-))是在通过遍历所有反样例来统计和x^+_i的预测值相等的反样例个数,由于没有反样例的预测值和x^+_i的预测值相等,所以\sum_{x^- \in D^-}\cfrac{1}{2}\mathbb{I}(f(x^+_i)=f(x^-))此时恒为0,于是其式S可以化简为:
    \frac{1}{m^+}\frac{1}{m^-}\sum_{x^- \in D^-}\mathbb{I}(f(x^+_i)<f(x^-))
    其中\cfrac{1}{m^+}为该线段在Y轴上的投影长度,\sum_{x^- \in D^-}\mathbb{I}(f(x^+_i)<f(x^-))同理是在通过遍历所有反样例来统计预测值大于x^+_i的预测值的反样例个数,也即该线段左边和下边的红色线段个数+蓝色线段对应的反样例个数,所以\cfrac{1}{m^-}\cdot\sum_{x^- \in D^-}(\mathbb{I}(f(x^+)<f(x^-)))便是该线段左边和下边的红色线段在X轴的投影长度+蓝色线段在X轴的投影长度,也就是该绿色线段在X轴的投影长度,观察ROC图像易知绿色线段与Y轴围成的面积=该线段在Y轴的投影长度 * 该线段在X轴的投影长度。

    对于每条蓝色线段: 将其式S展开可得:
    \frac{1}{m^+}\frac{1}{m^-}\sum_{x^- \in D^-}\mathbb{I}(f(x^+_i)<f(x^-))+\frac{1}{m^+}\frac{1}{m^-}\sum_{x^- \in D^-}\frac{1}{2}\mathbb{I}(f(x^+_i)=f(x^-))
    其中前半部分表示的是蓝色线段和Y轴围成的图形里面矩形部分的面积,后半部分表示的便是剩下的三角形的面积,矩形部分的面积公式同绿色线段的面积公式一样很好理解,而三角形部分的面积公式里面的\cfrac{1}{m^+}为底边长,\cfrac{1}{m^-}\cdot\sum_{x^- \in D^-}\mathbb{I}(f(x^+_i)=f(x^-))为高。
    综上分析可知,式S既可以用来求绿色线段与Y轴构成的面积也能求蓝色线段与Y轴构成的面积,所以遍历完所有绿色和蓝色线段并将其与Y轴构成的面积累加起来即得l_{rank}

    2.6 试述错误率与ROC曲线的联系

    • 知识点
      分类结果混淆矩阵

    错误率: 错误分类个数所占的比率
    错误率=\frac{FN+FP}{TP+TN+FN+FP}

    ROC曲线基于TPR与FPR表示了模型在不同截断点取值下的泛化性能。

    查全率: 真正的正例被预测为正例的比率
    R=\frac{TP}{TP+FN}

    查准率: 预测的正例中真正的正例所占的比率
    P=\frac{TP}{TP+FP}

    真正例率:真正的正例被预测为正例的比率
    TPR=\frac{TP}{TP+FN}

    假正例率:真正的反例被预测为正例的比率
    FPR=\frac{FP}{TP+FP}

    • 答案:ROC曲线上的点越靠近(1,0)学习器越完美,但是常需要通过计算等错误率来实现P、R的折衷,而P、R则反映了我们所侧重部分的错误率。

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

    • 答案
      ROC曲线上点的坐标为(TPR,FPR),而代价曲线则是一条从(0,FPR)到(1,FNR)的线段。

    其中FNR为假反例率,FNR=1-TPR

    因此在得知ROC曲线之后,TPR,FPR值已知,从而FNR和FPR的值也已知,能够做出代价曲线,反之亦然。

    2.8 Min-max规范化和z-score规范化是两种常用的规范化方法。令xx'分别表示变量在规范化前后的取值,相应的,令x_{min}x_{max}表示规范化前的最小值和最大值,x'_{min}x'_{max}表示规范化后的最小值和最大值,\overline{x}\sigma_x分别表示规范化前的均值和标准差,则min-max规范化、z-score规范化分别如下公式。试分析二者的优缺点。

    x'=x'_{min}+\frac{x-x_{min}}{x_{max}-x_{min}}\times (x'_{max}-x'_{min})
    x'=\frac{x-\overline{x}}{\sigma_x}

    • 答案
    Max-min z-score
    方法简单 计算量相对更大
    容易受到高杠杆点和离群点影响 对离群点敏感度相对低一些
    当加入新值拆除当前最大最小范围是重新计算所有之前的结果 没加入新值都要重新计算所有之前结果

    2.9 试述\chi^2检验过程。

    • 答案

    参考来源卡方检验原理及应用(白话)

    卡方检验是研究数据比率上的差异性,用于比较定类与定类数据的关系情况。

    通过实例简述四格表\chi^2检验过程

    1.建立无关性假设,通过数据构建四格表

    举个例子,假设我们有一堆新闻标题,需要判断标题中包含某个词(比如吴亦凡)是否与该条新闻的类别归属(比如娱乐)是否有关,我们只需要简单统计就可以获得这样的一个四格表:

    组别 属于\color{red}{娱乐} 不属于\color{red}{娱乐} 合计
    不包含\color{red}{吴亦凡} 19 24 43
    包含\color{red}{吴亦凡} 34 10 44
    合计 53 34 87

    通过这个四格表我们得到的第一个信息是:标题是否包含吴亦凡确实对新闻是否属于娱乐有统计上的差别,包含吴亦凡的新闻属于娱乐的比例更高,但我们还无法排除这个差别是否由于抽样误差导致。

    那么首先假设标题是否包含吴亦凡与新闻是否属于娱乐是独立无关的,随机抽取一条新闻标题,属于娱乐类别的概率是:(19 + 34) / (19 + 34 + 24 +10) = 60.9%

    2.根据假设生存新的理论四格表

    在第一步中,我们计算得出了新闻属于娱乐类别的概率是60.9%,通过此概率可以计算得到新的理论值四格表

    组别 属于\color{red}{娱乐} 不属于\color{red}{娱乐} 合计
    不包含\color{red}{吴亦凡} 43\times 60.9\%=26.2 43\times 39.1\%=16.8 43
    包含\color{red}{吴亦凡} 44\times 60.9\%=26.8 44\times 39.1\%=17.2 44

    \color{red}{显然,如果两个变量是独立无关的,那么四格表中的理论值与实际值的差异会非常小。}

    3.计算\chi^2的值

    \chi^2的计算公式为:
    \chi^2=\sum \frac{(A-T)^2}{T}

    其中A为实际值,也就是第一个四格表里的4个数据,T为理论值,也就是理论值四格表里的4个数据。

    \chi^2用于衡量实际值与理论值的差异程度(也就是卡方检验的核心思想),包含了以下两个信息:

    • 实际值与理论值偏差的绝对大小(由于平方的存在,差异是被放大的)
    • 差异程度与理论值的相对大小

    对上述场景可计算\chi^2值为10.01。

    4.根据\chi^2值查询卡方分布的临界值表

    既然已经得到了\chi^2值,我们又怎么知道\chi^2值是否合理?也就是说,怎么知道无关性假设是否可靠?
    答案是,通过查询卡方分布的临界值表。

    这里需要用到一个自由度的概念,自由度等于V = (行数 - 1) * (列数 - 1),对四格表,自由度V = 1。

    对V = 1,卡方分布的临界概率是:


    自由度=1时卡方分布的临界概率表

    可以看到10.01>7.88,也就是标题是否包含吴亦凡与新闻是否属于娱乐无关的可能性小于0.5%,反过来,就是两者相关的概率大于99.5%。

    卡方检验到此结束

    卡方检验的一个典型应用场景是衡量特定条件下的分布是否与理论分布一致,比如:特定用户某项指标的分布与大盘的分布是否差异很大,这时通过临界概率可以合理又科学的筛选异常用户。

    另外,\chi^2值描述了自变量与因变量之间的相关程度:\chi^2值越大,相关程度也越大,所以很自然的可以利用\chi^2值来做降维,保留相关程度大的变量。

    再回到刚才新闻分类的场景,如果我们希望获取和娱乐类别相关性最强的100个词,以后就按照标题是否包含这100个词来确定新闻是否归属于娱乐类,怎么做?很简单,对娱乐类新闻标题所包含的每个词按上述步骤计算\chi^2值,然后按\chi^2值排序,取\chi^2值最大的100个词。

    2.10 试述在Friedman检验中使用下两式的区别。

    式1:\tau_{\chi^2}=\frac{k-1}{k}\cdot \frac{12N}{k^2-1} \sum^k_{i=1}(r_i-\frac{k+1}{2})^2
    =\frac{12N}{k(k+1)}(\sum^k_{i=1}r^2_i-\frac{k(k+2)^2}{4})
    式2:\tau_F=\frac{(N-1)\tau_{\chi^2}}{N(k-1)-\tau_{\chi^2}}

    答案:式1是标准的弗里德曼检验计算公式,但是在样本量较小的情况下,式1计算结果明显偏离卡方分布。此时需利用式2计算,然后通过专门弗里德曼检验临界值表进行检验。
    对于涉及6个以上总体的小样本量Friedman检验,如果不能从有关书籍中查到临界值,便只能采用卡方检验了 [1]

    [1] 陶澍.应用数理统计方法:中国环境科学出版社,1994年08月第1版

    相关文章

      网友评论

          本文标题:机器学习(西瓜书)第二章 模型评估与选择 课后习题

          本文链接:https://www.haomeiwen.com/subject/dqfigctx.html