机器学习笔记3 - 模型评估与性能度量

模型在训练集上误差称为训练误差,在测试集上的误差称为测试误差,在未知数据上误差称为泛化误差;测试误差可以作为泛化误差的近似。

评估方法

  • 评估模型的泛化能力,用以指导模型参数的确定。

1. 留出法(hold-out)

  • 将数据集划分为互斥的两部分(训练集和测试集)
  • 数据集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入的额外偏差而对最终的结果产生影响。
  • 单次使用留出法得到的估计结果往往不够稳定可靠,一般要采用若干次不同划分方式的随机划分重复进行试验评估后取平均值作为留出法的评估结果。

2. 交叉验证法(corss validation)

k-fold验证:

将数据集随机均分成k个子集(也要尽可能保证数据分布的一致性),选取k-1个子集作为训练集,余下的1个子集作为测试集,用测试集的数据评估训练的模型,得到一个评估指标(如SSE),总共进行k次这样的测试,然后对k个评估指标进行“一定的处理”(如取均值等),得到最终的模型评估指标。


image.png

p次k-fold验证:

将数据集划分为k个子集有多种划分方式,为减少因样本划分不同而引入的差别,k-fold交叉检验通常要随机使用不同的划分重复p次,最终的评估结果是这p次k-fold交叉检验的结果。

补充

  • k的取值需要考虑算力的问题,极端情况下,可以进行m次(m为样本数)。

3. 自助法(bootstrapping)

  • 留出法和交叉验证法在训练模型时都只使用了部分数据,这可能会引入由训练样本规模不同导致的估计偏差。
  • 自助采样:从原数据集中有放回的取m个样本构成新的数据集,作为训练集(原数据集中会有一些样本在测试集中出现多次,而有的样本则不会出现)。原数据集中去掉训练集的部分作为测试集(约占原数据集的)。 需要注意的是,这种方法获得的训练集改变了原来数据集的分布,这会引入偏差。
  • 自助法在数据集较小难以有效划分训练/测试集时很有用,当数据量足够时,最好不要用这种方法。

4、调参(parameter tuning)

  • 对选定的模型涉及的参数在一定范围内按一定步长来设置不同参数,以评估模型的泛化误差。
  • 对于给定的数据集,由于在模型的评估与选择过程中留了一部分数据做测试,也就是说只用了部分数据进行了模型训练;故,在模型选择完成后,学习算法和参数配置已选定,此时应该用全部数据重新训练模型

性能度量

  • 性能度量反应了任务需求,在比较不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;模型的“好坏”不仅取决于数据和算法,还取决于任务需求。
  • 对于有的任务(如回归问题)其模型评估和性能度量用的是一套方法(如用交叉熵来构建的损失函数来评估模型的泛化能力和回归的误差),对于有的任务(如分类问题)其模型评估和性能度量用的并不是一套方法(如用交叉熵评估模型的泛化能力,用准确率、召回率等评估模型的分类效果)。

1. 回归任务常用的性能度量

1.1 残差平方和(SSE)

  • 可用于评估回归模型
  • 衡量预测值与真实值间的差异

损失函数(Loss Function)

  • 损失函数是关于模型参数的函数,其被用来评估需要求参数值的模型
  • SSELoss,计算方法和SSE基本一致,只不过残差平方和中是包含了模型参数的一个变量。
  • 逻辑回归模型的损失函数可采用极大似然估计构建损失函数,也可采用交叉熵来构建损失函数,两者效果是相同的。

1.2 均方误差(MSE)

MSE = ; 校正了由于测试样本数引起的误差

1.3 RMSE

1.4 决定系数(R-squre)

拟合优度检验
在回归分析中,SSR表示聚类中类似的组间平方和概念,表意为Sum of squares of the regression,由预测数据与标签均值之间差值的平方和计算的出:

而SST(Total sum of squares)则是实际值和均值之间的差值的平方和计算得到:

并且,可由计算得出。而决定系数,则由和共同决定:

故,决定系数是一个鉴于[0,1]之间的值,并且约趋近于1,模型拟合效果越好。

  • 并不是模型评估指标好,该模型就可以被应用;还需要考虑到评估指标的可信度

2. 分类任务常用的性能度量

2.1 正确率


  • 精度受样本集构成的影响,在极端的分类样本构成时(如样本集中阳性样本比例极低),模型的精度很高所代表的意义主要是精确的识别出了阴性样本,然而这并不是分类问题所期待的结果(希望精确的识别出阳性样本)。

2.2 混淆矩阵(confusion matrix)

  • 对于二分类问题,可将样本根据真实类别与模型预测的类别的组合划分为以下4种情况,表示成这样的表格被称为“混淆矩阵”
    image.png

2.3 精确率/查准率 (precision)

阳性预测结果中阳性样本的比例

2.4 查全率/召回率(recall)

阳性样本中预测结果为阳性的比例

  • 查准率和查全率是一对矛盾的度量,两者不可兼顾。
  • 以查准率为纵轴、查全率为横轴绘制的曲线被称为“P-R曲线”;简便起 见,可以取P=R的点(平衡点)的大小来比较不同模型的性能。

2.5

  • 是查准率与查全率的调和平均。
  • 更一般的,
  • , 度量了查全率对查准率的相对重要性;当时查全率有更大的影响,当时查准率有更大的影响,当时,即,查全率和查准率影响相同。
  • 很多时候,我们会得到多个混淆矩阵(进行了多次训练或测试),此时希望在多个混淆矩阵上综合考察查全率和查准率,则可以先在每一个混淆矩阵上计算出,,然后对和分别取均值,得到和,此时有
  • 也可以先对各个混淆矩阵中的元素进行平均,然后计算出和,此时有

2.6 ROC(Recevier Operating Characteristic)和AUC(Area Under ROC Curve)

  • 很多模型(如神经网络)为测试样本产生一个实值或概率预测,然后将这个预测值与一个阈值(截断点,cut point)进行比较,大于阈值的为阳性样本,否则为阴性样本。
  • 截断点的选取与任务和排序方式都有关系。
  • ROC曲线的纵轴为“真阳性率”(),横轴为“假阳性率”()
  • 实际操作过程中往往是根据有限个样本来ROC曲线,此时绘制的曲线并不光滑。绘制过程如下:1、根据预测结果(一个实值或概率预测)对样本进行排序;2、把分类阈值设到最大,即将所有样本均预测为阴性样本,也就是再处有一个点;3、将分类阈值依次设为每个样本的预测值,即将每个样本依次划分为阳性样本,计算对应的和;4、依次连接相邻的点。
  • 可通过比较ROC曲线下的面积(AUC)来比较两个不同模型的性能。
  • AUC可通过对ROC曲线下各部分(以样本进行划分,需要考虑样本的排序)的面积求和而得到。


    48d8759fff5b317d7af2eb524110e05.png

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

  • 不同类型的错误(取伪、弃真)造成的后果是不同的,为衡量不同类型错误造成的不同损失,可为错误赋以“非均等代价”,即不同的错误根据实际需求赋以不同的罚分或代价。


    image.png
  • 在非均等代价下,ROC曲线不能直接反应出模型的期望总代价,此时需要用到“代价曲线”(cost curve);代价曲线的纵轴为归一化代价,横轴为正例概率代价
  • ROC曲线上每一个点()对应代价曲线上一条线段:绘制从到的一条线段。取ROC曲线上所有的点,绘制所有的线段,然后取所有线段的下界,围成的面积就是在所有条件下该模型的期望总体代价


    image.png

3. 聚类任务常用的性能度量

比较检验

这部分需要复习一下假设检验相关的统计学基础

  • 在对模型进行性能评估和比较时,我们希望比较的是模型的泛化性能,然而这是一个极其复杂的问题:1、前面提到的评估都是在测试集上进行的,然后将“测试误差”近似“泛化误差”;2、测试集上的性能与测试集的选取有很大关系;3、很多模型本身具有一定的随机性,即使使用同样的参数和数据,运行多次也不一定能得到一致性的结果。 此时需要引入统计假设检验来衡量’用前面提到的评估方法计算出不同模型的度量指标‘以比较不同模型性能所得到差异 是否在统计学意义上具有显著差异。

假设检验

  • 在一个数据集上对对单个模型的泛化性能进行假设检验?
  • “假设”是对模型泛化错误分布的某种判断或猜想
  • 由测试错误的分布推断泛化错误的分布
  • 二项检验(只做了依次测试/验证时)
  • t检验(当有多次测试/验证时)

交叉验证t检验

  • 在一个数集上比较不同模型的泛化性能
  • 成对t检验,假设两个模型性能相同

McNemar检验

  • 针对二分类问题,假设两个模型的性能相同,定义McNemar检验需要考虑的变量,其满足卡方分布。

Friedman检验与Nemenyi后续检验

  • 当需要在一个数据集上比较多个算法/模型的性能时,可以采用两两比较;也可使用基于算法排序的Friedman检验。
  • Friedman检验时,1、在每个数据集上计算出每种算法的测试结果;2、根据测试结果对该数据集上不同算法进行排序并标上排序的序号,若若干个模型测试结果相同,则它们平分排序值(如,有两个模型测试结果一致被排在2和3位置,则这两个模型的排序值均为2.5);3、列出来算法(行)* 排序值(列)的表格,在最后一行对列求均值;4、使用Friedman检验来判断这些模型的性能是否相同。
  • 原始的Friedman检验中用到的变量近似服从卡方分布;修正后变量服从F分布。
  • 若”所有算法性能相同“的这个假设被拒绝,则说明所发的性能显著不同,此时需要进行‘后续检验’以区分不同算法。
  • 常用的后续检验方法是Nemenyi检验,其变量服从Tukey分布。
  • Friedman检验图:纵轴为不同算法,横轴为平均序值;图中的线段以该算法的平均序值为中心,两端为临界区域。若算法对应的线段在图中有重叠,则表示它们的性能没有显著差异。

偏差与方差

  • ‘偏差与方差分解’是解释学习算法泛化性能的一种重要工具。
  • 泛化误差可以分解为偏差方差噪声之和;其中偏差度量了学习算法的期望预测与真实结果的偏离程度,衡量算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,衡量了数据扰动所造成的影响;噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,衡量了学习问题本身的难度。
  • 泛化性能由学习算法的能力、数据的充分性、学习任务本身的难度共同决定;因此对于给定的学习任务,为了获得好的泛化性能,需要使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响较小。
  • 类似P和R,偏差和方差也存在一定的冲突,两者不可兼得。

你可能感兴趣的:(机器学习笔记3 - 模型评估与性能度量)