摘要:模型评估、模型选择和算法选择技术的正确使用在学术性机器学习研究和诸多产业环境中异常关键。
本文回顾了用于解决以上三项任务中任何一个的不同技术,并参考理论和实证研究讨论了每一项技术的主要优势和劣势。进而,给出建议以促进机器学习研究与应用方面的最佳实践。本文涵盖了用于模型评估和选择的常见方法,比如留出方法,但是不推荐用于小数据集。不同风格的 bootstrap 技术也被介绍,以评估性能的不确定性,以作为通过正态空间的置信区间的替代,如果 bootstrapping 在计算上是可行的。在讨论偏差-方差权衡时,把 leave-one-out 交叉验证和 k 折交叉验证进行对比,并基于实证证据给出 k 的最优选择的实际提示。论文展示了用于算法对比的不同统计测试,以及处理多种对比的策略(比如综合测试、多对比纠正)。最后,当数据集很小时,本文推荐替代方法(比如 5×2cv 交叉验证和嵌套交叉验证)以对比机器学习算法。
一、简介:基本的模型评估项和技术
机器学习已经成为我们生活的中心,无论是作为消费者、客户、研究者还是从业人员。无论将预测建模技术应用到研究还是商业问题,其共同点都是:做出足够好的预测。
(一)机器学习的性能评估
如何评估机器学习模型的性能?典型的回答是:第一,将训练数据馈送给学习算法以学习一个模型。第二,预测测试集的标签。第三,计算模型对测试集的预测准确率。实际上,评估模型性能并非那么简单。也许可以从不同的角度解决之前的问题:为什么我们会关心性能评估呢?理论上,模型的性能评估能给出模型的泛化能力,在未见过的数据上执行预测是应用机器学习或开发新算法的主要问题。通常,机器学习包含大量实验,例如超参数调整。在训练数据集上用不同的超参数设置运行学习算法最终会得到不同的模型。由于我们感兴趣的是从该超参数设置中选择最优性能的模型,因此我们需要找到评估每个模型性能的方法,以将它们进行排序。
鸢尾花的随机抽取的训练集和测试设置的分布
我们需要在微调算法之外对比不同的算法,通常从预测性能和计算性能方面进行比较。评估模型的预测性能的主要作用:
留出验证方法
二、Bootstrapping 和不确定性
这章主要介绍一些用于模型评估的高级技术。首先讨论用来评估模型性能不确定性和模型方差、稳定性的技术。之后介绍交叉验证方法用于模型选择。我们为什么要关心模型评估,存在三个相关但不同的任务或原因。
偏差和方差的不同组合
在 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