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

0c72a6e8aee3d54537088b4962a07622.jpeg

源|机器之心

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

8604cef3c6920045a1bd9f5330d3c8d1.png

论文链接:
https://sebastianraschka.com/pdf/manuscripts/model-eval.pdf

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

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

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

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

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

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

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

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

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

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

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

M2: 75% > M1: 70% > M3: 65%,

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

M2: 65% > M1: 60% > M3: 55%.

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

88923fb935e4322ff5ae6dcd9f86ad58.png
▲图 2:留出验证方法的图示。

2、Bootstrapping 和不确定性

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

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

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

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

e4a0386338d9b3596036d2f9df75f980.png
▲图 3:偏差和方差的不同组合的图示。
ef6421101e27485203273c61699c1252.png
▲图 4:在 MNIST 数据集上 softmax 分类器的学习曲线。
b92ba38567c2eb21b107ea8859b193d9.png
▲图 5:二维高斯分布中的重复子采样。

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

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

本章生成图像的代码详见:
https://github.com/rasbt/modelevalarticlesupplementary/blob/master/code/resampling-and-kfold.ipynb。

d57b39f455d2e477b465bd6540983d6c.png
▲图6:logistic 回归的概念图示。

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

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

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

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

b2e1c76988e59cb0af205dddcdf2cbd8.png
▲图7:超参数调整中三路留出方法(three-way holdout method)图示。
3fee4c929b00bf2f163adb1765ec382e.png
▲图8:k 折交叉验证步骤图示。
734ac3ef314ea41902ca9281fc6f56f7.png
▲图9:模型选择中 k 折交叉验证的图示。

af343816adacedf2c17be91cd224e29d.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴后台的使用体验

今天花了点时间,使用了一下阿里巴巴的会员后台,感叹一句“它的成功是有它的道理的”。在功能模块的使用上,它都提供了帮助,这种帮助不是简单的一个列表或者一篇文章,而是一种层次性的服务。首先会有一个所对应的功能模…

LeetCode 167. 两数之和 II - 输入有序数组(双指针)

1. 题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。你可…

lcd液晶字体_等离子电视与液晶电视的区别

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅,请放心关注。注:本文转载自网络,不代表本平台立场,仅供读者参考&…

母版中menu控件上传后出现脚本错误

这几天帮朋友做个小网站,为了网站更容易扩展,所以使用了.menu控件做网站导行.本来在做的时候没出错,可上 传之后却显示不出,动态菜单的部分,并且提示脚本错误.于是乎上网开始找答案,…

python编程入门课_程序设计入门—Python

知识单元一:程序设计语言基础第1周:程序设计的基础知识教学内容:计算的基本概念,计算机程序设计语言的历史,Python语言的发展简史及语言的特点,程序设计语言的基本语法教学要求:了解冯诺依曼计算…

稚晖君被曝离职华为!两年前加入华为天才少年计划,下一步创业方向是机器人...

文|羿阁 萧箫 发自 凹非寺源|量子位以“天才少年”身份加入华为的稚晖君,被曝已经离职,将开启创业!虽然本人还没公开确认这一消息,但据华为员工爆料,目前华为内部已经搜不到对应的工号。要知道&…

python调用shell该引用到什么类_python调用shell, shell 引用python

标签:python 调用 shellget_line_num"wc -l as_uniq_info | awk ‘{print $1}‘" ###get the lines of "as_uniq_info"line_num os.popen(get_line_num).read().strip(‘\n‘)get_line_num 作为shell执行的命令,会取得文件as_uniq_i…

对抗机器学习逐年火爆,成蓝海赛道|附6篇必刷论文

对抗机器学习,是一种利用对抗博弈思想的机器学习技术,通过在Google Trends上对“对抗机器学习”进行检索发现,该领域检索热度逐年上升。今天给大家分享一个好出文章的对抗机器学习研究方向——人脸识别!人脸对抗样本攻击的形式主要…

Windows CE.0002.ERROR:Image is too large for current RAM and RAMIMAGE settings.

在编译WinCE项目时,遇到ERROR:Image is too large for current RAM and RAMIMAGE settings.时,请将 下图所示选项选中,即可解决。 转载于:https://www.cnblogs.com/dingzhaofeng/archive/2008/10/16/1312538.html

王喆:计算广告技术综述与思考

‍编|王喆 源|DataFunTalk导读:大家好,我是《深度学习推荐系统》的作者王喆,很多同行可能读过这本系统性介绍推荐系统的书,但大多数人可能不知道我职业生涯的头四年都在做广告系统,之后才在推荐…

cpython 标准库_Python re标准库

re模块包含对正则表达式的支持。一、什么是正则表达式正则表达式是可以匹配文本片段的模式。最简单的正则表达是就是普通字符串,可以匹配其自身。你可以用这种匹配行为搜索文本中的模式,或者用计算后的值替换特定模式,或者将文本进行分段。1、…

NHibernate之旅(4):探索查询之条件查询(Criteria Query)

本节内容 NHibernate中的查询方法条件查询(Criteria Query)1.创建ICriteria实例2.结果集限制3.结果集排序4.一些说明根据示例查询(Query By Example)实例分析结语上一节,我们介绍了NHibernate查询语言的一种:NHibernate查询语言(HQL,NHiberna…

LeetCode 205. 同构字符串(哈希map)

1. 题目 给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。 两个字符不能映射到同一个字符上,但字符可…

soapui返回值类型都有哪些_法兰的类型都有哪些以及法兰的设计

法兰的类型都有哪些呢?1. 压力容器的法兰可以按照法兰总体的结构,分为一般法兰还有反向法兰。2 .按照法兰垫片布置的类型来说,我们可以分为窄面法兰还有宽面法兰两个大类。a.窄面法兰指的是垫片的接触面,位于法兰螺栓孔所包围的圆…

别等ChatGPT开源了,升级版OPT开源模型来了!

源|新智元编|Joey 昕朋今年五月,MetaAI官宣发布了基于1750亿参数的超大模型OPT-175B,还对所有社区免费开放。12月22日,该模型的更新版本OPT-IML(Open Pre-trained Transformer)正式上线&#xf…

浅谈“三层结构”原理与用意(转帖)

浅谈“三层结构”原理与用意 序 在刚刚步入“多层结构”Web应用程序开发的时候,我阅读过几篇关于“asp.net三层结构开发”的文章。但其多半都是对PetShop3.0和Duwamish7的局部剖析或者是学习笔记。对“三层结构”通体分析的学术文章几乎没有。 2005年2月11日&#…

python bottle支持https_python bottle 简介

bottle是一个轻量级的pythonweb框架, 可以适配各种web服务器,包括python自带的wsgiref(默认),gevent, cherrypy,gunicorn等等。bottle是单文件形式发布,源码在这里可以下载,代码量不多&#xff…

NVIDIA重磅发布NVAIE 3.0,AI时代的操作系统来了

文|卖萌酱近年来,AI技术发展迅速,随着以Pytorch、TensorFlow为代表的深度学习框架的成熟,AI模型的训练流程已经变得相对清晰、成熟。然而,预训练模型和后续一系列超大模型的出现,使得对于大部分AI开发者和企…

python序列符号_Python中的文本和字节序列

导语:本文章记录了本人在学习Python基础之数据结构篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流。本章重点:1、了解字符字节等概念,编解码问题;2、熟悉字符的规范化处理和双模式API。一、基本概…

LeetCode 258. 各位相加

1. 题目 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 8 11, 1 1 2。 由于 2 是一位数,所以返回 2。 进阶: 你可以不使用循环或者递归&#xff0…