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

机器学习

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


文章目录

  • 机器学习
  • 一、经验误差与过拟合
    • 1.1、经验误差与泛化误差
    • 1.2、过拟合与欠拟合
  • 二、 三个问题
  • 三、评估方法
    • 3.1、留出法(hold-out)
    • 3.2、k折-交叉验证法(k-fold cross validation)
    • 3.3、自助法(bootstrap)
    • 3.4、调参与最终模型
  • 四、性能度量
    • 4.1、错误率与精度
    • 4.2、查准率、查全率与F1
    • 4.3、ROC与AUC
    • 4.4、代价敏感错误率与代价曲线
  • 五、比较检验
    • 5.1、针对单个学习器
      • 5.1.1、二项检验
      • 5.1.2、t检验
    • 5.2、针对多个学习器
      • 5.2.1、交叉验证t检验
      • 5.2.2、McNemar检验
      • 5.2.3、Friedman检验与Nemenyi后续检验
  • 六、偏差与方差


一、经验误差与过拟合

1.1、经验误差与泛化误差

  • 错误率:分类错误的样本占总样本数的比例
  • 精度:1-错误率
  • 误差:学习器的实际预测输出与样本的真实输出之间的差异
    • 训练(/经验)误差:训练集上的误差
    • 泛化误差:新样本上的误差
      我们希望学习器的泛化误差越小越好,但我们事先无法确认新样本是啥样的,所以只能努力做到经验误差越小越好。

1.2、过拟合与欠拟合

但是当经验误差过低,学习器会将训练样本一些特点当成一般性质,这时候就会产生过拟合(/过配)
相对的,尚未学好训练模型的一般性质,被称为欠拟合(/欠配)

  • 欠拟合由于学习能力低下导致,增加算法复杂度就容易解决
  • 过拟合问题是不可避免的
  • 运用算法时要询问自己两个问题,这个算法是靠什么来缓解过拟合问题的,它又会在什么程度失效
    机器学习学习笔记——第二章:模型评估与选择_第1张图片
  • 实际情况中可能是经验误差显示的误差越来越小,但是泛化误差却呈现出先下降后上升的趋势,机器学习的目标正是使得模型的误差接近最小处,也正是因为存在了过拟合现象,且不可避免,才存在了机器学习这样的学科。

二、 三个问题

如何获得测试结果?——评估方法(评估该模型在未来的表现)
如何评估性能优劣?——性能度量(评估该模型是否符合需求)
如何判断实质差别?——比较检验(评估改模型的统计学表现)

三、评估方法

  • 评估方法:用来评判面对同一个数据集,哪个算法(哪些参数)更加适合的,但无论用哪个方法(参数)得出算法的性能,最后都要将完整的数据集D投入训练,重新获得新的模型。
  • 泛化误差通常被认为是学习器好坏的评估标准
  • 通常可以利用测试集去测试学习器,得到的测试误差被作为泛化误差的近似
    • 假设测试样本从真实样本中独立同分布采样获得,同时测试集也尽可能与训练集互斥
  • 但是实际生活中,我们一般只有一个有限数量的数据集D,一般需要利用下述几种办法来拆分数据集,用于训练与测试。

3.1、留出法(hold-out)

  • 留出法:将数据集D划分为训练集S和测试集T,其中D=S∪T,S∩T=Ø
    机器学习学习笔记——第二章:模型评估与选择_第2张图片
  • 遵守准则
    • 保持数据分布一致性(例如: 分层采样,训练集与测试集中样本类型占比应相近/等)
    • 多次重复划分(例如: 100次随机划分后返回平均)
    • 测试集不能太大(训练集与原数据差别大)、不能太小(评估结果不稳定)(例如: 1/5~1/3)
      • 一般而言,测试集至少应该包含30个样例

3.2、k折-交叉验证法(k-fold cross validation)

  • 留出法存在着一个潜在的隐患,即使随机划分了100次,但仍然有可能有一两个样本未被用于测试,但这两个样本恰好又对模型有着影响,为了照顾到每个样本,就有了k折-交叉验证法。
  • k折-交叉验证法:将数据集D划分为k个大小相似的互斥子集,既D=D1∪D2∪…∪Dk, Di∪Dj=Ø ( i ≠ j ),取k-1个子集做训练集,1个子集做测试集。通常k=10。
    机器学习学习笔记——第二章:模型评估与选择_第3张图片
  • 注意
    • 每个子集都是从D中分层采样获得。
    • 为了保证将数据集划分为k个这步操作对模型造成印象,这一步通常要随机使用不同的划分重复p次,(当k=10,重复划分10次时)此时就是10*10,训练/测试次数仍为100次。
  • 留一法(Leave-One-Out, LOO)
    • 定义:数据集D中包含m个样本,另k=m。
    • 优点
      • 留一法不受随机划分影响。
      • 绝大多数情况下,留一法训练出来的模型与期望用D数据集训练出来的模型很相似,评估结果更准确。
    • 缺点
      • 成本随数据量增大而增大。
      • 测试数据量过少,模型结果可能存在偏差。
      • NFL定理,表明此方法并非任何情况下的最优解。

3.3、自助法(bootstrap)

  • 上述两种方法虽然保留了数据分布,但是却都需要保留一部分样本用于测试,利用此训练集获得的模型与用数据集D训练出来的模型终究会存在一些偏差(留一法相对而言,计算复杂度高)。
  • 为了减少训练规模变化,高效进行实验评估,设计出自助法。
  • 自助法:基于自助采样(boostrap sampling)(亦称”有放回采样“,”可重复采样“),对一个包含有m个样本的数据集D,对其进行采样产生数据集D’,每次挑选一个样本,拷贝后放入D‘,原数据放回数据集D,如此重复m次。如此存在一部分样本在数据集D‘中重复出现,另一部分不出现,将另一部分的样本作为测试集。这样的结果,亦称包外估计(out-of-bag estimate)
    • 样本不被采集到的概率约为0.368
      在这里插入图片描述

机器学习学习笔记——第二章:模型评估与选择_第4张图片

  • 优点:训练集与原样本集同规模
  • 缺点:数据分布有所改变
  • 适用场景:数据集较小,或数据分布对训练影响较小时适用

3.4、调参与最终模型

调参数和选算法实际上都是在进行模型的选择(实际上只要是在机器学习中涉及变化的步骤都是在进行模型选择),两者的选法也差不多,均是产生多个模型后,基于某种评估方法来进行选择。

  • 超参数:算法的参数,一般由人工设定(数目常在10以内,常常会对每个参数设定一个范围和步长,来限制最后形成的模型数量,从而降低成本)
  • 参数:模型的参数,一般由学习确定
  • 训练集,验证集,测试集:验证集的作用就是用来调参,用训练集训练出来模型后,导入验证集去验证模型的好坏,从而进行调参后在进行训练,重复步骤,直至模型性能差异不大时,确认算法参数,将训练集与验证集合并后,再次训练确认模型,最后用测试集进行测试。
  • 最终模型:在确认完算法和参数后,将完整的数据集D投入训练,重新获得新的模型。

四、性能度量

  • 性能度量:衡量模型泛化能力的评估标准(模型的好坏由算法,数据与任务需求决定)
  • 回归任务的性能度量:均方误差(mean squared error)
    机器学习学习笔记——第二章:模型评估与选择_第5张图片
    其中yi为xi的真实标记(结果),f为模型,f(xi)为模型的预测结果。
  • 下面介绍分类任务常用的指标

4.1、错误率与精度

  • 错误率:分类错误的样本占总样本数的比例

  • 精度:1-错误率,分类正确的样本占总样本数的比例

  • 分类错误率
    机器学习学习笔记——第二章:模型评估与选择_第6张图片

  • 分类精度
    机器学习学习笔记——第二章:模型评估与选择_第7张图片

4.2、查准率、查全率与F1

错误率与精度并不能满足所有任务需求,需要引入新的指标。

  • 查准率(precision):检查出来的信息中有多少比例是用户感兴趣的
  • 查全率(recall):用户感兴趣的信息中有多少被检索出来了
  • 混淆矩阵(confusion matrix)
    机器学习学习笔记——第二章:模型评估与选择_第8张图片
    T:true,F:false,P:positive,N:negative
  • 定义
    机器学习学习笔记——第二章:模型评估与选择_第9张图片
  • 一般情况下(除开一些简单任务)查准率与查全率是一对矛盾的数值,例如有一批西瓜,我们希望尽可能多的获得好瓜,这时只要把全部的瓜选上,这时所有好瓜必都被选上,但是查准率会偏低;若希望选出好瓜的比例尽可能高,这时只要挑选最有把握的瓜即可,此时查全率会偏低。
  • 既然这两者是矛盾的属性,那就可能存在针对同一数据集,A算法P高R低,B算法P低R高的情况,那这时候要如何判断哪种算法更优秀呢?
  • P-R曲线:以P为纵轴,R为横轴,预测结果为正例的可能性为顺序(从最有可能到最不可能)绘制P-R曲线
    • 如果某学习器的曲线完全包裹另一学习器,则认为其性能更优(如A优于C)
    • 如果俩曲线产生交叉(如A和B),则难以定论(可以通过计算曲线下面积来定论,不过其较难估算)
    • 由此引入平衡点 (Break Even Point):P=R时的点,此时认为A优于B(A的BEP=0.8, B的BEP=0.7),不过BEP还是过于简化了,更常用的为F1度量
      机器学习学习笔记——第二章:模型评估与选择_第10张图片
  • F1度量:F1是基于查准率和查全率的调和平均(harmonic mean) 定义的相较于算数平均 P × R 2 \frac{P\times R}{2} 2P×R与几何平均 P × R \sqrt{P\times R} P×R ,调和平均更重视较小值
    机器学习学习笔记——第二章:模型评估与选择_第11张图片
  • 权重β:一些应用中,对查全率与查准率有不同的偏好,引入F1度量的一般形式Fβ
    机器学习学习笔记——第二章:模型评估与选择_第12张图片
  • 存在多个二分类混淆矩阵
    • 方法一:先计算每个矩阵的P和R,再计算平均值,宏查准率(macro-P),宏查全率(macro-R),宏F1(macro-F1)
    • 方法二:先计算得到TP,FP,TN,FN的平均值得,再得到微查准率(micro-P),微查全率(micro-R),微F1(micro-F1)
      机器学习学习笔记——第二章:模型评估与选择_第13张图片

4.3、ROC与AUC

  • 受试者工作特征(Receiver Operating Characteristic, ROC):与P-R曲线类似,不过横轴改为了假正例率(False Positive Rate, FPR),纵轴为真正例率(True Positive Rate, TPR)
    机器学习学习笔记——第二章:模型评估与选择_第14张图片
  • 这里可以看出TPR查全率R同义
  • ROC曲线
    机器学习学习笔记——第二章:模型评估与选择_第15张图片
  • 实际应用中数据集是有限的,无法绘制上图那种光滑曲线,只能绘制出下图的近似ROC曲线
    • 绘图步骤:给定M个正例和m个反例,根据学习器的预测结果对样例排序,然后将分类阈值设为最大,既所有样例预测为反例,此时FPR与TPR都是0,在坐标轴(0,0)处标记一个点,然后将分类与之依次设为每个样例的预测值(既把依次把每个样例设为正例)。设前一个标记点为(x,y),若当前为正例则对应标记坐标点为(x,y+1/M),若当前为反例则对应标记坐标点为(x+1/m,y),依次相连。
      机器学习学习笔记——第二章:模型评估与选择_第16张图片
  • 同P-R曲线,如果曲线A将曲线B完全包裹,则认为曲线A对应的算法优于曲线B对应的算法,如果产生交集,则比较ROC曲线的下面积AUC(Area Under ROC Curve)
  • AUC:从定义可得,AUC可以是曲线下各部分面积之和。
    • 若ROC曲线由{(x1,y1), (x2,y2), …, (xm,ym)}组成,其中(x1=0,xm=1),则AUC可以估算为
      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}{(x_{i+1}-x_i)\bullet(y_i+y_{i+1})} AUC=21i=1m1(xi+1xi)(yi+yi+1)

4.4、代价敏感错误率与代价曲线

  • 前面的评估方法大多隐式的假设了均等代价。
  • 但现实生活中会出现这样的情况,不同类型的错误造成的后果也不同,为权衡不同类型错误造成的损失,可为错误赋予非均等代价(unequal cost)
    机器学习学习笔记——第二章:模型评估与选择_第17张图片
  • 一般关注代价比值,而非其确切值(如Cost01:Cost11=3:1)
  • 此时ROC曲线已经不能直接反映学习器的期望总体代价了,引入了代价曲线
  • 代价曲线
    • ROC曲线上每一个点对应代价平面(横纵轴为[0-1])上一条线,设ROC曲线上点坐标为(FPR,TPR),在代价平面上画出一条从(0,FPR)到(1,1-TPR)的线段,每一个点都绘制为一条线,最终围出的下面积,就是学习器的总体期望代价。
      机器学习学习笔记——第二章:模型评估与选择_第18张图片

五、比较检验

  • 在通过评估方法测得学习器的某个性能度量后,能否直接用于比较以评判优劣呢?
  • 有三个方面指出其不可行。
    • 测试性能不等于泛化性能测试
    • 性能随着测试集的变化而变化
    • 很多机器学习算法本身有一定的随机性
  • 这边利用了统计学上的假设检验,来评判学习器的性能。(默认以错误率ε为性能度量)
  • 假设检验:由于现实中只能确认测试错误率ε0,而无法获得泛化错误率ε,两者未必相同,但两者接近的可能性较大,因此可以依据ε0去估推出ε的范围。
  • 下面内容涉及大量数学与统计学知识,看着令人头疼,加上现在软件可以直接调用相关的算法来实现效果,我个人觉得了解下概念,知道有这么个东西即可。除非你想深入了解,可以参考西瓜书p37-p44,或者看下这篇博客,里面和书籍内容相差不大。

5.1、针对单个学习器

5.1.1、二项检验

5.1.2、t检验

5.2、针对多个学习器

5.2.1、交叉验证t检验

5.2.2、McNemar检验

5.2.3、Friedman检验与Nemenyi后续检验

六、偏差与方差

  • 偏差-方差分解(bisa-variance decomposition) :用于解释学习算法泛化性能的一个工具
    • 泛化误差可以被分解为偏差方差噪声之和
    • 偏差(期望输出与真实标记的差别):度量了学习算法的期望预测与真实结果的偏离程度( 既刻画了学习算法本身的拟合能力)
    • 方差:度量了同样大小的训练集的变化所导致的学习性能的变化(既刻画了数据扰动所造成的影响)
    • 噪声:表达了当前任务上任何学习算法所能达到的期望泛化误差的下届(既刻画了学习问题本身的难度)
  • 总结:泛化性能由学习算法的能力,数据的充分性以及学习任务本身决定。

你可能感兴趣的:(机器学习,机器学习,人工智能)