推荐|机器学习中的模型评价、模型选择和算法选择!

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

推荐|机器学习中的模型评价、模型选择和算法选择!

 

本文回顾了用于解决以上三项任务中任何一个的不同技术,并参考理论和实证研究讨论了每一项技术的主要优势和劣势。进而,给出建议以促进机器学习研究与应用方面的最佳实践。本文涵盖了用于模型评估和选择的常见方法,比如留出方法,但是不推荐用于小数据集。不同风格的 bootstrap 技术也被介绍,以评估性能的不确定性,以作为通过正态空间的置信区间的替代,如果 bootstrapping 在计算上是可行的。在讨论偏差-方差权衡时,把 leave-one-out 交叉验证和 k 折交叉验证进行对比,并基于实证证据给出 k 的最优选择的实际提示。论文展示了用于算法对比的不同统计测试,以及处理多种对比的策略(比如综合测试、多对比纠正)。最后,当数据集很小时,本文推荐替代方法(比如 5×2cv 交叉验证和嵌套交叉验证)以对比机器学习算法。


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

机器学习已经成为我们生活的中心,无论是作为消费者、客户、研究者还是从业人员。无论将预测建模技术应用到研究还是商业问题,其共同点都是:做出足够好的预测。


(一)机器学习的性能评估

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

推荐|机器学习中的模型评价、模型选择和算法选择!

鸢尾花的随机抽取的训练集和测试设置的分布

我们需要在微调算法之外对比不同的算法,通常从预测性能和计算性能方面进行比较。评估模型的预测性能的主要作用:

  1. 评估模型的泛化性能,即模型泛化到未见过数据的能力;

  2. 通过调整学习算法和在给定的假设空间中选择性能最优的模型,以提升预测性能;

  3. 确定最适用于待解决问题的机器学习算法。因此,我们可以比较不同的算法,选择其中性能最优的模型;或者选择算法的假设空间中的性能最优模型。

推荐|机器学习中的模型评价、模型选择和算法选择!

留出验证方法


二、Bootstrapping 和不确定性

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

  1. 我们想评估泛化准确度,即模型在未见数据上的预测性能。

  2. 我们想通过调整学习算法、从给定假设空间中选择性能最好的模型,来改善预测性能。

  3. 我们想确定手头最适合待解决问题的机器学习算法。因此,我们想对比不同的算法,选出性能最好的一个;或从算法的假设空间中选出性能最好的模型。


推荐|机器学习中的模型评价、模型选择和算法选择!

偏差和方差的不同组合


推荐|机器学习中的模型评价、模型选择和算法选择!

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


推荐|机器学习中的模型评价、模型选择和算法选择!

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

推荐|机器学习中的模型评价、模型选择和算法选择!

推荐|机器学习中的模型评价、模型选择和算法选择!



三、超参数优化和模型选择

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

推荐|机器学习中的模型评价、模型选择和算法选择!

logistic 回归的概念


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

  • 我们想评估泛化准确度,即模型在未见数据上的预测性能。

  • 我们想通过调整学习算法、从给定假设空间中选择性能最好的模型,来改善预测性能。

  • 我们想确定最适合待解决问题的机器学习算法。因此,我们想对比不同的算法,选出性能最好的一个,从算法的假设空间中选出性能最好的模型。


推荐|机器学习中的模型评价、模型选择和算法选择!

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


推荐|机器学习中的模型评价、模型选择和算法选择!

k 折交叉验证步骤


推荐|机器学习中的模型评价、模型选择和算法选择!

模型选择中 k 折交叉验证


总结:预测模型泛化性能的评价方法有多种。到目前为止,本文覆盖层的方法,不同类型的Bootstrap方法,和K-折交叉验证法;实际工作中遇到比较大的数据样本时,使用流出法绝对是最好的模型评价方式。


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

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

公众号回复“AI”

邀你加入{AI机器学习圈}


推荐|机器学习中的模型评价、模型选择和算法选择!

IT派 - {技术青年圈}持续关注互联网、区块链、人工智能领域推荐|机器学习中的模型评价、模型选择和算法选择!


往期精彩回顾推荐|机器学习中的模型评价、模型选择和算法选择!

2018年,人工智能 VS 区块链,谁更牛逼?

AI人才大迁徙:如何迅速成为机器学习内行?

一个视频带你看懂区块链将如何改变世界