起源:机器之心
编辑:一点人工一点智能
原文:综述:机器学习中的模型评估、模型抉择与算法抉择!
本论文回顾了用于解决模型评估、模型抉择和算法抉择三项工作的不同技术,并参考实践和实证钻研探讨了每一项技术的次要劣势和劣势。进而,给出倡议以促成机器学习钻研与利用方面的最佳实际。
论文链接:https://sebastianraschka.com/pdf/manuscripts/model-eval.pdf
摘要:模型评估、模型抉择和算法抉择技术的正确应用在学术性机器学习钻研和诸多产业环境中异样要害。本文回顾了用于解决以上三项工作中任何一个的不同技术,并参考实践和实证钻研探讨了每一项技术的次要劣势和劣势。进而,给出倡议以促成机器学习钻研与利用方面的最佳实际。
本文涵盖了用于模型评估和抉择的常见办法,比方留出办法,然而不举荐用于小数据集。不同格调的 bootstrap 技术也被介绍,以评估性能的不确定性,以作为通过正态空间的置信区间的代替,如果 bootstrapping 在计算上是可行的。在探讨偏差 - 方差衡量时,把 leave-one-out 穿插验证和 k 折穿插验证进行比照,并基于实证证据给出 k 的最优抉择的理论提醒。论文展现了用于算法比照的不同统计测试,以及解决多种比照的策略(比方综合测试、多比照纠正)。最初,当数据集很小时,本文举荐代替办法(比方 5×2cv 穿插验证和嵌套穿插验证)以比照机器学习算法。
01 简介:根本的模型评估项和技术
机器学习曾经成为咱们生存的核心,无论是作为消费者、客户、研究者还是从业人员。无论将预测建模技术利用到钻研还是商业问题,我认为其共同点是:做出足够好的预测。用模型拟合训练数据是一回事,但咱们如何理解模型的泛化能力?咱们如何确定模型是否只是简略地记忆训练数据,无奈对未见过的样本做出好的预测?还有,咱们如何抉择好的模型呢?兴许还有更好的算法能够解决眼前的问题呢?
模型评估当然不是机器学习工作流程的起点。在解决数据之前,咱们心愿当时打算并应用适合的技术。本文将概述这类技术和抉择办法,并介绍如何将其利用到更大的工程中,即典型的机器学习工作流。
1.1 性能评估:泛化性能 vs. 模型抉择
让咱们思考这个问题:「如何评估机器学习模型的性能?」典型的答复可能是:「首先,将训练数据馈送给学习算法以学习一个模型。第二,预测测试集的标签。第三,计算模型对测试集的预测准确率。」然而,评估模型性能并非那么简略。兴许咱们应该从不同的角度解决之前的问题:「为什么咱们要关怀性能评估呢?」实践上,模型的性能评估能给出模型的泛化能力,在未见过的数据上执行预测是利用机器学习或开发新算法的次要问题。通常,机器学习蕴含大量试验,例如超参数调整。在训练数据集上用不同的超参数设置运行学习算法最终会失去不同的模型。因为咱们感兴趣的是从该超参数设置中抉择最优性能的模型,因而咱们须要找到评估每个模型性能的办法,以将它们进行排序。
咱们须要在微调算法之外更进一步,即不仅仅是在给定的环境下试验单个算法,而是比照不同的算法,通常从预测性能和计算性能方面进行比拟。咱们总结一下评估模型的预测性能的次要作用:
· 评估模型的泛化性能,即模型泛化到未见过数据的能力;
· 通过调整学习算法和在给定的假如空间中抉择性能最优的模型,以晋升预测性能;
· 确定最实用于待解决问题的机器学习算法。因而,咱们能够比拟不同的算法,抉择其中性能最优的模型;或者抉择算法的假如空间中的性能最优模型。
尽管下面列出的三个子工作都是为了评估模型的性能,然而它们须要应用的办法是不同的。本文将概述解决这些子工作须要的不同办法。
咱们当然心愿尽可能准确地预测模型的泛化性能。然而,本文的一个要点就是,如果偏差对所有模型的影响是等价的,那么偏差性能评估根本能够完满地进行模型抉择和算法抉择。如果要用排序抉择最优的模型或算法,咱们只须要晓得它们的绝对性能就能够了。例如,如果所有的性能评估都是有偏差的,并且低估了它们的性能(10%),这不会影响最终的排序。更具体地说,如果咱们失去如下三个模型,这些模型的预测准确率如下:
M2: 75% > M1: 70% > M3: 65
如果咱们增加了 10% 的性能偏差(低估),则三种模型的排序没有产生扭转:
M2: 65% > M1: 60% > M3: 55%.
然而,留神如果最佳模型(M2)的泛化准确率是 65%,很显著这个精度是非常低的。评估模型的相对性能可能是机器学习中最难的工作之一。
图 2 留出验证办法的图示
02 Bootstrapping 和不确定性
本章介绍一些用于模型评估的高级技术。咱们首先探讨用来评估模型性能不确定性和模型方差、稳定性的技术。之后咱们将介绍穿插验证办法用于模型抉择。如第一章所述,对于咱们为什么要关怀模型评估,存在三个相干但不同的工作或起因。
· 咱们想评估泛化准确度,即模型在未见数据上的预测性能。
· 咱们想通过调整学习算法、从给定假如空间中抉择性能最好的模型,来改善预测性能。
· 咱们想确定手头最适宜待解决问题的机器学习算法。因而,咱们想比照不同的算法,选出性能最好的一个;或从算法的假如空间中选出性能最好的模型。
图 3 偏差和方差的不同组合的图示
图 4 在 MNIST 数据集上 softmax 分类器的学习曲线
图 5 二维高斯分布中的重复子采样
03 穿插验证和超参数优化
简直所有机器学习算法都须要咱们机器学习研究者和从业者指定大量设置。这些超参数帮忙咱们管制机器学习算法在优化性能、找出偏差方差最佳均衡时的行为。用于性能优化的超参数调整自身就是一门艺术,没有固定规定能够保障在给定数据集上的性能最优。后面的章节提到了用于评估模型泛化性能的留出技术和 bootstrap 技术。偏差 - 方差衡量和计算性能预计的不稳定性办法都失去了介绍。本章次要介绍用于模型评估和抉择的不同穿插验证办法,包含对不同超参数配置的模型进行排序和评估其泛化至独立数据集的性能。
本章生成图像的代码详见:https://github.com/rasbt/model-eval-article-supplementary/blob/master/code/resampling-and-kfold.ipynb。
图 11 logistic 回归的概念图示
咱们能够把超参数调整(又称超参数优化)和模型抉择的过程看作元优化工作。当学习算法在训练集上优化指标函数时(懈怠学习器是例外),超参数优化是基于它的另一项工作。这里,咱们通常想优化性能指标,如分类准确度或接受者操作特色曲线(ROC 曲线)下面积。超参数调整阶段之后,基于测试集性能抉择模型仿佛是一种正当的办法。然而,多次重复应用测试集可能会带来偏差和最终性能预计,且可能导致对泛化性能的预期过分乐观,能够说是「测试集泄露信息」。为了防止这个问题,咱们能够应用三次宰割(three-way split),将数据集宰割成训练集、验证集和测试集。对超参数调整和模型抉择进行训练 - 验证能够保障测试集「独立」于模型抉择。这里,咱们再回顾一下性能预计的「3 个指标」:
· 咱们想评估泛化准确度,即模型在未见数据上的预测性能。
· 咱们想通过调整学习算法、从给定假如空间中抉择性能最好的模型,来改善预测性能。
· 咱们想确定最适宜待解决问题的机器学习算法。因而,咱们想比照不同的算法,选出性能最好的一个,从算法的假如空间中选出性能最好的模型。
图 12 超参数调整中三路留出办法(three-way holdout method)图示
图 13 k 折穿插验证步骤图示
图 16 模型抉择中 k 折穿插验证的图示
1. 深度解读深度学习在主动驾驶规控中的利用
2. 书籍举荐 -《计算机视觉的特征描述》
3. 书籍举荐 -《TinyML 教程》
4. 书籍举荐 -《深度强化学习》
5. 盘点多模态深度学习这几年!