机器学习综述:机器学习中的模型评价模型选择与算法选择

Posted 旅途中的宽~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习综述:机器学习中的模型评价模型选择与算法选择相关的知识,希望对你有一定的参考价值。

文章目录

一、前言

最近在做实验的时候,发现树模型有过拟合的情况发生,为此,去看了几篇关于模型评价等的综述文章,回顾了用于解决模型评估、模型选择和算法选择三项任务的不同技术,并参考理论和实证研究讨论了每一项技术的主要优势和劣势。

https://sebastianraschka.com/pdf/manuscripts/model-eval.pdf

二、论文摘要

模型评估、模型选择和算法选择技术的正确使用在学术性机器学习研究和诸多产业环境中异常关键。

本文回顾了用于解决以上三项任务中任何一个的不同技术,并参考理论和实证研究讨论了每一项技术的主要优势和劣势。进而,给出建议以促进机器学习研究与应用方面的最佳实践。

本文涵盖了用于模型评估和选择的常见方法,比如留出方法,但是不推荐用于小数据集。不同风格的 bootstrap 技术也被介绍,以评估性能的不确定性,以作为通过正态空间的置信区间的替代,如果 bootstrapping 在计算上是可行的。在讨论偏差-方差权衡时,把 leave-one-out 交叉验证和 k k k 折交叉验证进行对比,并基于实证证据给出 k k k 的最优选择的实际提示。

论文展示了用于算法对比的不同统计测试,以及处理多种对比的策略(比如综合测试、多对比纠正)。

最后,当数据集很小时,本文推荐替代方法(比如 5 × 2 5\\times 2 5×2cv 交叉验证和嵌套交叉验证)以对比机器学习算法。

三、简介:基本的模型评估项和技术

机器学习已经成为我们生活的中心,无论是作为消费者、客户、研究者还是从业人员。无论将预测建模技术应用到研究还是商业问题,我认为其共同点是:做出足够好的预测。用模型拟合训练数据是一回事,但我们如何了解模型的泛化能力?我们如何确定模型是否只是简单地记忆训练数据,无法对未见过的样本做出好的预测?还有,我们如何选择好的模型呢?也许还有更好的算法可以处理眼前的问题呢?

模型评估当然不是机器学习工作流程的终点。在处理数据之前,我们希望事先计划并使用合适的技术。本文将概述这类技术和选择方法,并介绍如何将其应用到更大的工程中,即典型的机器学习工作流。

3.1 性能评估:泛化性能 vs. 模型选择

让我们考虑这个问题:如何评估机器学习模型的性能?

典型的回答可能是:

  • 首先,将训练数据馈送给学习算法以学习一个模型;
  • 第二,预测测试集的标签;
  • 第三,计算模型对测试集的预测准确率。

然而,评估模型性能并非那么简单。也许我们应该从不同的角度解决之前的问题:「为什么我们要关心性能评估呢?」理论上,模型的性能评估能给出模型的泛化能力,在未见过的数据上执行预测是应用机器学习或开发新算法的主要问题。通常,机器学习包含大量实验,例如超参数调整。在训练数据集上用不同的超参数设置运行学习算法最终会得到不同的模型。由于我们感兴趣的是从该超参数设置中选择最优性能的模型,因此我们需要找到评估每个模型性能的方法,以将它们进行排序。

我们需要在微调算法之外更进一步,即不仅仅是在给定的环境下实验单个算法,而是对比不同的算法,通常从预测性能和计算性能方面进行比较。我们总结一下评估模型的预测性能的主要作用:

  • 评估模型的泛化性能,即模型泛化到未见过数据的能力;
  • 通过调整学习算法和在给定的假设空间中选择性能最优的模型,以提升预测性能;
  • 确定最适用于待解决问题的机器学习算法。因此,我们可以比较不同的算法,选择其中性能最优的模型;或者选择算法的假设空间中的性能最优模型。

虽然上面列出的三个子任务都是为了评估模型的性能,但是它们需要使用的方法是不同的。本文将概述解决这些子任务需要的不同方法。

我们当然希望尽可能精确地预测模型的泛化性能。然而,本文的一个要点就是,如果偏差对所有模型的影响是等价的,那么偏差性能评估基本可以完美地进行模型选择和算法选择。如果要用排序选择最优的模型或算法,我们只需要知道它们的相对性能就可以了。例如,如果所有的性能评估都是有偏差的,并且低估了它们的性能(10%),这不会影响最终的排序。更具体地说,如果我们得到如下三个模型,这些模型的预测准确率如下:

M 2 M_2 M2: 75% > M 1 M_1 M1: 70% > M 3 M_3 M3: 65

如果我们添加了 10% 的性能偏差(低估),则三种模型的排序没有发生改变:

M 2 M_2 M2: 65% > M 1 M_1 M1: 60% > M 3 M_3 M3: 55%.

但是,注意如果最佳模型( M 2 M_2 M2)的泛化准确率是 65%,很明显这个精度是非常低的。评估模型的绝对性能可能是机器学习中最难的任务之一。

留出验证法的图示如下图所示:

四、Bootstrapping 和不确定性

本章介绍一些用于模型评估的高级技术。我们首先讨论用来评估模型性能不确定性和模型方差、稳定性的技术。之后我们将介绍交叉验证方法用于模型选择。如第一章所述,关于我们为什么要关心模型评估,存在三个相关但不同的任务或原因。

  • 我们想评估泛化准确度,即模型在未见数据上的预测性能;
  • 我们想通过调整学习算法、从给定假设空间中选择性能最好的模型,来改善预测性能;
  • 我们想确定手头最适合待解决问题的机器学习算法。因此,我们想对比不同的算法,选出性能最好的一个;或从算法的假设空间中选出性能最好的模型。

偏差和方差不同组合的图示:

在 MNIST 数据集上 softmax 分类器的学习曲线:

二维高斯分布中的重复子采样:

五、交叉验证和超参数优化

几乎所有机器学习算法都需要我们机器学习研究者和从业者指定大量设置。这些超参数帮助我们控制机器学习算法在优化性能、找出偏差方差最佳平衡时的行为。用于性能优化的超参数调整本身就是一门艺术,没有固定规则可以保证在给定数据集上的性能最优。前面的章节提到了用于评估模型泛化性能的留出技术和 bootstrap 技术。偏差-方差权衡和计算性能估计的不稳定性方法都得到了介绍。本章主要介绍用于模型评估和选择的不同交叉验证方法,包括对不同超参数配置的模型进行排序和评估其泛化至独立数据集的性能。

本章生成图像的代码详见:

https://github.com/rasbt/model-eval-article-supplementary/blob/master/code/resampling-and-kfold.ipynb。

logistic 回归的概念图示:

我们可以把超参数调整(又称超参数优化)和模型选择的过程看作元优化任务。当学习算法在训练集上优化目标函数时(懒惰学习器是例外),超参数优化是基于它的另一项任务。这里,我们通常想优化性能指标,如分类准确度或接受者操作特征曲线(ROC 曲线)下面积。超参数调整阶段之后,基于测试集性能选择模型似乎是一种合理的方法。但是,多次重复使用测试集可能会带来偏差和最终性能估计,且可能导致对泛化性能的预期过分乐观,可以说是「测试集泄露信息」。为了避免这个问题,我们可以使用三次分割(three-way split),将数据集分割成训练集、验证集和测试集。对超参数调整和模型选择进行训练-验证可以保证测试集「独立」于模型选择。这里,我们再回顾一下性能估计的「3 个目标」:

  • 我们想评估泛化准确度,即模型在未见数据上的预测性能;
  • 我们想通过调整学习算法、从给定假设空间中选择性能最好的模型,来改善预测性能;
  • 我们想确定最适合待解决问题的机器学习算法。因此,我们想对比不同的算法,选出性能最好的一个,从算法的假设空间中选出性能最好的模型。

超参数调整中三路留出方法(three-way holdout method)图示:

k k k 折交叉验证步骤图示:

模型选择中 k k k 折交叉验证的图示:

机器学习面试--算法评价指标

机器学习分为三个阶段

  • 第一阶段:学习模型。采用学习算法,通过对训练集进行归纳学习得到分类模型;

  • 第二阶段:测试模型。将已经学习得到的分类模型用于测试集,对测试集中未知类别的实例进行分类。

  • 第三阶段:性能评估。显然,通过测试集产生的分类未必是最佳的,这就导致对测试集的分类可能产生错误。而人们希望尽量得到信呢个最佳的分类模型,就是的对分类器性能评价至关重要。只有通过优秀的评价标准才能选择出性能更好的分类器。

不同机器学习算法的评价指标:

技术分享图片

 

回归评估

回归是对连续的实数值进行预测,即输出值是连续的实数值,而分类中是离散值。

  • (1)平均绝对误差(Mean Absolute Error,MAE)又被称为 l1 范数损失(l1-norm loss)

    技术分享图片

  • (2)平均平方误差(Mean Squared Error,MSE)又被称为 l2 范数损失(l2-norm loss)

    技术分享图片

  •  

 

分类评估

准确率(accuracy)

计算公式Accuracy = (TP+TN)/(TP+TN+FP+FN) 

正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用Accuracy,即使全部预测成负类(不点击)Accuracy也有 99% 以上,没有意义。

精确率(precision)

  • 定义:正确分类的正例个数占分类为正例的实例个数的比例,也称查准率

  • 计算公式TP/(TP+FP)

召回率(recall)

  • 定义:正确分类的正例个数占实际正例个数的比例 也称查全率

  • 计算公式TP/(TP+FN)

F-值(F-Measure)

    • 定义:F-Measure是查全率与查准率加权调和平均,又称为F-Score

    • 计算公式:(1)F1 = 2PR/(P+R)=2TP/(2TP+FP+FN)
      (2)F- = (α^2+1)PR/(α^2)P + R)

一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。F值就是用来

权衡Precision和Recall这两个指标的。

上述的评价标准对于类分布的改变较敏感。

MCC 马修斯相关系数

MCC(Matthews correlation coefficient):是应用在机器学习中,用以测量二分类的分类性能的指标[83]。该指标考虑了真阳性、真阴性和假阳性和假阴性,通常认为该指标是一个比较均衡的指标,即使是在两类别的样本含量差别很大时,也可以应用它。MCC本质上是一个描述实际分类与预测分类之间的相关系数,它的取值范围为[-1,1],取值为1时表示对受试对象的完美预测,取值为0时表示预测的结果还不如随机预测的结果,-1是指预测分类和实际分类完全不一致。

技术分享图片

衡量不平衡数据集的指标比较好。

 

对数损失函数(Log-loss)
??在分类输出中,若输出不再是0-1,而是实数值,即属于每个类别的概率,那么可以使用Log-loss对分类结果进行评价。这个输出概率表示该记录所属的其对应的类别的置信度。比如如果样本本属于类别0,但是分类器则输出其属于类别1的概率为0.51,那么这种情况认为分类器出错了。该概率接近了分类器的分类的边界概率0.5。Log-loss是一个软的分类准确率度量方法,使用概率来表示其所属的类别的置信度。Log-loss具体的数学表达式为:

 
技术分享图片
 

其中,yi是指第i个样本所属的真实类别0或者1,pi表示第i个样本属于类别1的概率,这样上式中的两个部分对于每个样本只会选择其一,因为有一个一定为0,当预测与实际类别完全匹配时,则两个部分都是0,其中假定0log0=0。

 

AUC(Area Under Curve)

ctr(click through rate)在线广告的点击率。

不可见曝光的ctr大概在1/1000左右,对于可见曝光的广告,其点击率则是在1/100左右,可见多数的曝光是没有click发生的。因此,投放一个可能会被高
概率点击的广告是非常重要的,一方面有效利用了本次曝光,同时一方面也实现了流量变现。

因此,展现的广告完成准确的点击率预估显得非常重要。

ctr预估过程:

即利用历史log,进行训练model,线上server加载这个
model。当有广告展现请求时候,server根据请求的上下文信息计算出候选广告的预估点击率,从其中选择出
最高预估ctr进行展现。

常见的feature有:

  • 广告主特征:如行业分类
  • 受众特征:如cookie,性别等
  • 广告自身特征:如物料的类型(文字链、图片、flash等类型)、广告的核心词等。

AUC在特征选择中的作用

在优化模型的时候,我们期望能够加入足够多有典型区分度的特征。特征有良好的区分度,有助于在筛选广告
阶段进行准确的排序。

对于同一个网页上的广告位而言,用户在浏览页面的时候,从页面上方到下方,广告位的点击率是骤降的,甚至第二位的position,其ctr相对第一position
的ctr会下降90%。

在这种情况下,假定候选广告按照预估ctr(pCTR)进行降序排列后,top前2个广告(命名为a、b)需要选择出
进行展现。一个特征的加入或者缺失,都会影响到a、b的排名。假设a的收益更大,如果排序为b、a,那显然
a的ctr会下降较多,而b的收益又较小,那总体上,本次广告的曝光展现并不是最优的。所以,任何一个特征
的引入或者删除,都要基于实际的历史样本来进行评估这么做的影响,而AUC恰好是用来量化这种影响的重要
指标,或者说AUC是用来评估模型排序能力的重要指标。

 

在介绍AUC之前,需要引入两个前提概念:ROC以及confusion matrix。

  • ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线
  • ——ROC curve。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)

技术分享图片

定义roc曲线下面的面积称之为AUC(area under curve)。

总面积为单位矩形(1*1),而AUC的值范围是0~1。一般的,当加入一个高区分度的特征时候,模型的AUC通常是增加的,图片
中的虚线下的面积是0.5。
AUC的计算,需要引入confusion matrix(混淆矩阵)

一个典型的两类混淆矩阵如下:
| 正样本个数P | 负样本个数N | predict |
| ————– | :————: | ——: |
| true positive | false positive | Y |
| false negative | true negative | N |

在AUC的计算中,我们站在正样本的角度来看问题,即使用相关的两个数据项,true positive以及false
positive。在上述的分类结果下,正样本都被分正确的比率是:

tpr  =  tp / P(真实正样本的个数TP+FN)
,而false positive的比率为:

fpr = fp / N(真实负样本的个数 FP+TN)
将所有广告按照pCTR降序排列,再结合实际的样本数据,就可以计算AUC了。

discrimination threshold,直译为”区分阈值”。 指的是,每次在一个pCTR 上进行划分,取划
分这个pCTR 为阈值,高于这个阈值的是预估的正样本,低于这个阈值,是预估的负样本。在这种情况下,计
算当前这个划分的tpr 和fpr 。得到一个点对( fpr , tpr )。每个划分都会得到一个点对,那么就可以绘
制出ROC,进而计算出AUC。

技术分享图片

为了计算简答,给出了8个样本,4个正样本,4个负样本。(当然,实际情况下,正负样本的比例远比这个大
的,是imbalance的)为了区分,其中1表示实际的样本是发生了click,而0则表示实际情况下并没法有产生

click。而pCTR为预估的ctr。我们的期望是我们的预估的ctr高的广告,其实际应该有click,这样就说明我的
预估是有效且准确的,当然没有click发生也是可以理解,预估目前还做不到100%的准确。

其划分区间的方式是:

  • 在0.9划分,认为>=0.9的都是正样本,<0.9的都是负样本。次划分下, , 。
  • 继续,在0.8处划分,认为>=0.8的都是正样本,即会高概率发生click的,<0.8则预估为负样本,此划
  • 分下, , 。
  • 继续,在0.7处划分,认为>=0.7的预估为正样本,<0.7的为负样本。此时,有1个是误报的。
  • , .
  • 以此类推,可以计算出所有的fpr、tpr,按照这些点对画出ROC曲线即可。当样本数量足够多情况下,ROC曲线就越平滑。计算的时候将曲线下的每个”小矩形”进行面积累加即可.

理想的排序能力是按照pCTR进行预估降序排列
后,所有的正样本都排在负样本的前面,即预估会排在前面的广告都会被click,此时靠前面的几次划分
fpr都是fpr  = 0 / N

模型优化的目标是就是努力向这个理想的目标靠拢。

 

 ROC曲线和AUC的优势:不受类分布的影响,适合与评估、比较类分布不平衡的数据集。因此ROC曲线与AUC已被广泛用于医疗决策制定、模式识别和数据挖掘等领域。但是ROC和AUC仅适合于两类问题 ,对多类问题 ,无法直接应用






























以上是关于机器学习综述:机器学习中的模型评价模型选择与算法选择的主要内容,如果未能解决你的问题,请参考以下文章

机器学习面试--算法评价指标

自动化机器学习神经网络架构搜索综述(NAS)

机器学习中的评价指标

机器学习分类算法模型训练与测试工具

经济学中的数据科学:机器学习与深度学习方法

机器学习笔记之生成模型综述监督学习与无监督学习