机器学习学习笔记——第二章:模型评估与选择

news2024/11/22 6:55:18

机器学习

机器学习学习笔记——第二章:模型评估与选择


文章目录

  • 机器学习
  • 一、经验误差与过拟合
    • 1.1、经验误差与泛化误差
    • 1.2、过拟合与欠拟合
  • 二、 三个问题
  • 三、评估方法
    • 3.1、留出法(hold-out)
    • 3.2、k折-交叉验证法(k-fold cross validation)
    • 3.3、自助法(bootstrap)
    • 3.4、调参与最终模型
  • 四、性能度量
    • 4.1、错误率与精度
    • 4.2、查准率、查全率与F1
    • 4.3、ROC与AUC
    • 4.4、代价敏感错误率与代价曲线
  • 五、比较检验
    • 5.1、针对单个学习器
      • 5.1.1、二项检验
      • 5.1.2、t检验
    • 5.2、针对多个学习器
      • 5.2.1、交叉验证t检验
      • 5.2.2、McNemar检验
      • 5.2.3、Friedman检验与Nemenyi后续检验
  • 六、偏差与方差


一、经验误差与过拟合

1.1、经验误差与泛化误差

  • 错误率:分类错误的样本占总样本数的比例
  • 精度:1-错误率
  • 误差:学习器的实际预测输出与样本的真实输出之间的差异
    • 训练(/经验)误差:训练集上的误差
    • 泛化误差:新样本上的误差
      我们希望学习器的泛化误差越小越好,但我们事先无法确认新样本是啥样的,所以只能努力做到经验误差越小越好。

1.2、过拟合与欠拟合

但是当经验误差过低,学习器会将训练样本一些特点当成一般性质,这时候就会产生过拟合(/过配)
相对的,尚未学好训练模型的一般性质,被称为欠拟合(/欠配)

  • 欠拟合由于学习能力低下导致,增加算法复杂度就容易解决
  • 过拟合问题是不可避免的
  • 运用算法时要询问自己两个问题,这个算法是靠什么来缓解过拟合问题的,它又会在什么程度失效
    在这里插入图片描述
  • 实际情况中可能是经验误差显示的误差越来越小,但是泛化误差却呈现出先下降后上升的趋势,机器学习的目标正是使得模型的误差接近最小处,也正是因为存在了过拟合现象,且不可避免,才存在了机器学习这样的学科。

二、 三个问题

如何获得测试结果?——评估方法(评估该模型在未来的表现)
如何评估性能优劣?——性能度量(评估该模型是否符合需求)
如何判断实质差别?——比较检验(评估改模型的统计学表现)

三、评估方法

  • 评估方法:用来评判面对同一个数据集,哪个算法(哪些参数)更加适合的,但无论用哪个方法(参数)得出算法的性能,最后都要将完整的数据集D投入训练,重新获得新的模型。
  • 泛化误差通常被认为是学习器好坏的评估标准
  • 通常可以利用测试集去测试学习器,得到的测试误差被作为泛化误差的近似
    • 假设测试样本从真实样本中独立同分布采样获得,同时测试集也尽可能与训练集互斥
  • 但是实际生活中,我们一般只有一个有限数量的数据集D,一般需要利用下述几种办法来拆分数据集,用于训练与测试。

3.1、留出法(hold-out)

  • 留出法:将数据集D划分为训练集S和测试集T,其中D=S∪T,S∩T=Ø
    在这里插入图片描述
  • 遵守准则
    • 保持数据分布一致性(例如: 分层采样,训练集与测试集中样本类型占比应相近/等)
    • 多次重复划分(例如: 100次随机划分后返回平均)
    • 测试集不能太大(训练集与原数据差别大)、不能太小(评估结果不稳定)(例如: 1/5~1/3)
      • 一般而言,测试集至少应该包含30个样例

3.2、k折-交叉验证法(k-fold cross validation)

  • 留出法存在着一个潜在的隐患,即使随机划分了100次,但仍然有可能有一两个样本未被用于测试,但这两个样本恰好又对模型有着影响,为了照顾到每个样本,就有了k折-交叉验证法。
  • k折-交叉验证法:将数据集D划分为k个大小相似的互斥子集,既D=D1∪D2∪…∪Dk, Di∪Dj=Ø ( i ≠ j ),取k-1个子集做训练集,1个子集做测试集。通常k=10。
    在这里插入图片描述
  • 注意
    • 每个子集都是从D中分层采样获得。
    • 为了保证将数据集划分为k个这步操作对模型造成印象,这一步通常要随机使用不同的划分重复p次,(当k=10,重复划分10次时)此时就是10*10,训练/测试次数仍为100次。
  • 留一法(Leave-One-Out, LOO)
    • 定义:数据集D中包含m个样本,另k=m。
    • 优点
      • 留一法不受随机划分影响。
      • 绝大多数情况下,留一法训练出来的模型与期望用D数据集训练出来的模型很相似,评估结果更准确。
    • 缺点
      • 成本随数据量增大而增大。
      • 测试数据量过少,模型结果可能存在偏差。
      • NFL定理,表明此方法并非任何情况下的最优解。

3.3、自助法(bootstrap)

  • 上述两种方法虽然保留了数据分布,但是却都需要保留一部分样本用于测试,利用此训练集获得的模型与用数据集D训练出来的模型终究会存在一些偏差(留一法相对而言,计算复杂度高)。
  • 为了减少训练规模变化,高效进行实验评估,设计出自助法。
  • 自助法:基于自助采样(boostrap sampling)(亦称”有放回采样“,”可重复采样“),对一个包含有m个样本的数据集D,对其进行采样产生数据集D’,每次挑选一个样本,拷贝后放入D‘,原数据放回数据集D,如此重复m次。如此存在一部分样本在数据集D‘中重复出现,另一部分不出现,将另一部分的样本作为测试集。这样的结果,亦称包外估计(out-of-bag estimate)
    • 样本不被采集到的概率约为0.368
      在这里插入图片描述

在这里插入图片描述

  • 优点:训练集与原样本集同规模
  • 缺点:数据分布有所改变
  • 适用场景:数据集较小,或数据分布对训练影响较小时适用

3.4、调参与最终模型

调参数和选算法实际上都是在进行模型的选择(实际上只要是在机器学习中涉及变化的步骤都是在进行模型选择),两者的选法也差不多,均是产生多个模型后,基于某种评估方法来进行选择。

  • 超参数:算法的参数,一般由人工设定(数目常在10以内,常常会对每个参数设定一个范围和步长,来限制最后形成的模型数量,从而降低成本)
  • 参数:模型的参数,一般由学习确定
  • 训练集,验证集,测试集:验证集的作用就是用来调参,用训练集训练出来模型后,导入验证集去验证模型的好坏,从而进行调参后在进行训练,重复步骤,直至模型性能差异不大时,确认算法参数,将训练集与验证集合并后,再次训练确认模型,最后用测试集进行测试。
  • 最终模型:在确认完算法和参数后,将完整的数据集D投入训练,重新获得新的模型。

四、性能度量

  • 性能度量:衡量模型泛化能力的评估标准(模型的好坏由算法,数据与任务需求决定)
  • 回归任务的性能度量:均方误差(mean squared error)
    在这里插入图片描述
    其中yi为xi的真实标记(结果),f为模型,f(xi)为模型的预测结果。
  • 下面介绍分类任务常用的指标

4.1、错误率与精度

  • 错误率:分类错误的样本占总样本数的比例

  • 精度:1-错误率,分类正确的样本占总样本数的比例

  • 分类错误率
    在这里插入图片描述

  • 分类精度
    在这里插入图片描述

4.2、查准率、查全率与F1

错误率与精度并不能满足所有任务需求,需要引入新的指标。

  • 查准率(precision):检查出来的信息中有多少比例是用户感兴趣的
  • 查全率(recall):用户感兴趣的信息中有多少被检索出来了
  • 混淆矩阵(confusion matrix)
    在这里插入图片描述
    T:true,F:false,P:positive,N:negative
  • 定义
    在这里插入图片描述
  • 一般情况下(除开一些简单任务)查准率与查全率是一对矛盾的数值,例如有一批西瓜,我们希望尽可能多的获得好瓜,这时只要把全部的瓜选上,这时所有好瓜必都被选上,但是查准率会偏低;若希望选出好瓜的比例尽可能高,这时只要挑选最有把握的瓜即可,此时查全率会偏低。
  • 既然这两者是矛盾的属性,那就可能存在针对同一数据集,A算法P高R低,B算法P低R高的情况,那这时候要如何判断哪种算法更优秀呢?
  • P-R曲线:以P为纵轴,R为横轴,预测结果为正例的可能性为顺序(从最有可能到最不可能)绘制P-R曲线
    • 如果某学习器的曲线完全包裹另一学习器,则认为其性能更优(如A优于C)
    • 如果俩曲线产生交叉(如A和B),则难以定论(可以通过计算曲线下面积来定论,不过其较难估算)
    • 由此引入平衡点 (Break Even Point):P=R时的点,此时认为A优于B(A的BEP=0.8, B的BEP=0.7),不过BEP还是过于简化了,更常用的为F1度量
      在这里插入图片描述
  • F1度量:F1是基于查准率和查全率的调和平均(harmonic mean) 定义的相较于算数平均 P × R 2 \frac{P\times R}{2} 2P×R与几何平均 P × R \sqrt{P\times R} P×R ,调和平均更重视较小值
    在这里插入图片描述
  • 权重β:一些应用中,对查全率与查准率有不同的偏好,引入F1度量的一般形式Fβ
    在这里插入图片描述
  • 存在多个二分类混淆矩阵
    • 方法一:先计算每个矩阵的P和R,再计算平均值,宏查准率(macro-P),宏查全率(macro-R),宏F1(macro-F1)
    • 方法二:先计算得到TP,FP,TN,FN的平均值得,再得到微查准率(micro-P),微查全率(micro-R),微F1(micro-F1)
      在这里插入图片描述

4.3、ROC与AUC

  • 受试者工作特征(Receiver Operating Characteristic, ROC):与P-R曲线类似,不过横轴改为了假正例率(False Positive Rate, FPR),纵轴为真正例率(True Positive Rate, TPR)
    在这里插入图片描述
  • 这里可以看出TPR查全率R同义
  • ROC曲线
    在这里插入图片描述
  • 实际应用中数据集是有限的,无法绘制上图那种光滑曲线,只能绘制出下图的近似ROC曲线
    • 绘图步骤:给定M个正例和m个反例,根据学习器的预测结果对样例排序,然后将分类阈值设为最大,既所有样例预测为反例,此时FPR与TPR都是0,在坐标轴(0,0)处标记一个点,然后将分类与之依次设为每个样例的预测值(既把依次把每个样例设为正例)。设前一个标记点为(x,y),若当前为正例则对应标记坐标点为(x,y+1/M),若当前为反例则对应标记坐标点为(x+1/m,y),依次相连。
      在这里插入图片描述
  • 同P-R曲线,如果曲线A将曲线B完全包裹,则认为曲线A对应的算法优于曲线B对应的算法,如果产生交集,则比较ROC曲线的下面积AUC(Area Under ROC Curve)
  • AUC:从定义可得,AUC可以是曲线下各部分面积之和。
    • 若ROC曲线由{(x1,y1), (x2,y2), …, (xm,ym)}组成,其中(x1=0,xm=1),则AUC可以估算为
      A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ∙ ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}{(x_{i+1}-x_i)\bullet(y_i+y_{i+1})} AUC=21i=1m1(xi+1xi)(yi+yi+1)

4.4、代价敏感错误率与代价曲线

  • 前面的评估方法大多隐式的假设了均等代价。
  • 但现实生活中会出现这样的情况,不同类型的错误造成的后果也不同,为权衡不同类型错误造成的损失,可为错误赋予非均等代价(unequal cost)
    在这里插入图片描述
  • 一般关注代价比值,而非其确切值(如Cost01:Cost11=3:1)
  • 此时ROC曲线已经不能直接反映学习器的期望总体代价了,引入了代价曲线
  • 代价曲线
    • ROC曲线上每一个点对应代价平面(横纵轴为[0-1])上一条线,设ROC曲线上点坐标为(FPR,TPR),在代价平面上画出一条从(0,FPR)到(1,1-TPR)的线段,每一个点都绘制为一条线,最终围出的下面积,就是学习器的总体期望代价。
      在这里插入图片描述

五、比较检验

  • 在通过评估方法测得学习器的某个性能度量后,能否直接用于比较以评判优劣呢?
  • 有三个方面指出其不可行。
    • 测试性能不等于泛化性能测试
    • 性能随着测试集的变化而变化
    • 很多机器学习算法本身有一定的随机性
  • 这边利用了统计学上的假设检验,来评判学习器的性能。(默认以错误率ε为性能度量)
  • 假设检验:由于现实中只能确认测试错误率ε0,而无法获得泛化错误率ε,两者未必相同,但两者接近的可能性较大,因此可以依据ε0去估推出ε的范围。
  • 下面内容涉及大量数学与统计学知识,看着令人头疼,加上现在软件可以直接调用相关的算法来实现效果,我个人觉得了解下概念,知道有这么个东西即可。除非你想深入了解,可以参考西瓜书p37-p44,或者看下这篇博客,里面和书籍内容相差不大。

5.1、针对单个学习器

5.1.1、二项检验

5.1.2、t检验

5.2、针对多个学习器

5.2.1、交叉验证t检验

5.2.2、McNemar检验

5.2.3、Friedman检验与Nemenyi后续检验

六、偏差与方差

  • 偏差-方差分解(bisa-variance decomposition) :用于解释学习算法泛化性能的一个工具
    • 泛化误差可以被分解为偏差方差噪声之和
    • 偏差(期望输出与真实标记的差别):度量了学习算法的期望预测与真实结果的偏离程度( 既刻画了学习算法本身的拟合能力)
    • 方差:度量了同样大小的训练集的变化所导致的学习性能的变化(既刻画了数据扰动所造成的影响)
    • 噪声:表达了当前任务上任何学习算法所能达到的期望泛化误差的下届(既刻画了学习问题本身的难度)
  • 总结:泛化性能由学习算法的能力,数据的充分性以及学习任务本身决定。

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

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

相关文章

银河麒麟系统无法进入桌面拷贝备份文件

最近使用VMWare搭建银河麒麟系统升级后,无法进入桌面,而是进入tty1界面 这个时候如何想导出里面的文件就可以用文件共享的方式右键到虚拟机设置-选项,如图所示 选择一个共享目录 如d盘vm目录 登录tty1账号密码 ls列出文件 如图进行文件拷贝…

.NetCore录屏生成Gif动图程序(Form)的开发过程[代码已上传GitCode]

🌮.NetCore录屏生成Gif动图程序(Form)的开发过程 前言: 开发环境:.NetCore3.1 GitCode地址:罗马苏丹默罕默德 / RecordDesktopGif GitCode FrameWork版本地址:尚未同步功能 实现功能 选中屏幕的一块矩形区域按照设置的参数录制…

Qt中QMainWindow的相关介绍

目录 菜单栏 工具栏 状态栏: 停靠窗口: QMainWindow 是标准基础窗口中结构最复杂的窗口,其组成如下: 提供了菜单栏 , 工具栏 , 状态栏 , 停靠窗口 菜单栏:只能有一个,位于窗口的最上方 工具栏:可以有多…

《爱的教育》超全思维导图

思维导图是帮助理解和记忆的高效生产力工具! 思维导图以图形的形式表达信息,可视化和关联性,可以更好的激发创作和想象力。 在思维导图中,我们使用简洁的关键词或短语来表达思想,而不是完整的句子或段落。可以帮助我们…

MAYA鲨鱼的绑定

最后一个柚有问题 轴向正确的旋转,成C型 弄乱了 W整体移动 D单个移动 X轴没指向下一个关节 控制器创建 根控制器 控制器很好匹配关节 建组 出来了,控制器位置还在 确保旋转关节是0 处理层级 控制器不跟着 没办法刷蒙皮 # 错误: file: H:/Autodesk/May…

安达发|如何选择适合企业的APS排程系统?

APS是一个优化的排程调度工具,归根结底,APS追求的是企业生产效率的提升,而不是替代人工排程。如何验证呢?对于APS用户来说,检验衡量的最简单的方法就是,拿出过去某一个月实际生产计划的历史数据&#xff0c…

微信小程序创建步骤图文

1.登录微信公众平台 首先,通过网址登录https://mp.weixin.qq.com/,找到立即注册 进行点击。 2.进入该页面时,选择点击小程序 3.注册开发者账号点击立即注册 4.进入该页面 账号信息注册 5.下一步 邮箱激活 注意 :登录邮箱&…

【AntD】Antd Table组件的头部单元格水平居中,单元格居左:

文章目录 一、效果图:二、实现代码: 一、效果图: 二、实现代码: customHeaderCell: () > ({ style: { textAlign: center } }),//头部单元格水平居中

Vue3间距(Space)

可自定义设置以下属性: 对齐方式(align),类型:‘start’|‘end’|‘center’|‘baseline’,默认 undefined间距方向(direction),类型:‘horizontal’|‘vert…

小程序Url Link跳转怎么获取query参数?

onLoad(options){if (options) {let value1 decodeURIComponent(options.value1)let value2 decodeURIComponent(options.value2)...调用后台接口查询数据} } 我是通过这种方式接收参数的,如果想验证可以通过编译器模拟:

阿里云使用SMC进行服务器迁移

操作文档 阿里云SMC适用于所有的可以公网访问的主机 1、资源准备 1、我们必须要要有相关AliyunSMCFullAccess的权限,如果操作RAM账号具有足够的权限可以自动授权 2、我们的源主机要可以公网访问,并且可以ssh且密码登录 2、在控制台点击迁移源 配置我们源…

Linux Ubuntu安装RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

2023年最新金融银行测试面试题分享(附解析大全)

1、网上银行转账是怎么测的,设计一下测试用例。 回答思路: 宏观上可以从质量模型(万能公式)来考虑,重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主,先列出转账的基本流和备选流。…

什么是服务雪崩解决思路

文章目录 1、雪崩问题2、雪崩问题的四种解决思路3、服务保护技术选型对比 1、雪崩问题 假设有一个微服务A,它调用了服务B、服务D,而某时刻服务D挂掉: 服务A要等待服务D的结果,而服务D已经不能正常响应了,此时服务A内部…

基于linux下的高并发服务器开发(第一章)- Makefile(3)1.12

04 / 变量 修改:上一小节的makefile内容 (1)将如下的 app:sub.o add.o mult.o div.o main.ogcc sub.o add.o div.o main.o 改成 srcsub.o add.o mult.o div.o main.otargetapp$(target):$(src)$(CC) $(src) -o $(target) 截图&#xff1a…

vue中使用Pinia和Vuex详解

最具有争议的Pinia和Vuex那个更好? 我们使用Vue2的时候,Vuex作为一个状态管理工具在组件中使用方便了很多。Vue3推出后,虽然相对于Vue2很多东西都变了,但是核心的东西还是没有变的,比如说状态管理、路由等等。实际上&a…

怎么修复vcruntime140_1.dll缺失,vcruntime140_1.dll丢失的解决方案

vcruntime140_1.dll是什么? vcruntime140_1.dll是Windows操作系统中的一个动态链接库文件,它属于Microsoft Visual C Redistributable的一部分。这个文件包含了一些在运行使用了C语言编写的程序时所需的函数和资源。当系统无法找到或加载vcruntime140_1…

视频号自曝核心算法,流量获取攻略解析

我是卢松松,点点上面的头像,欢迎关注我哦! 近日,视频号爆出了一项重要消息:微信视频号竟然自爆了自己的核心算法逻辑。 这在一般平台是比较罕见的。因为一旦自曝了算法,就会有人根据这个算法去作弊&…

【已解决】Flask项目报错TypeError: tuple indices must be integers or slices, not str

文章目录 问题情境报错及分析报错代码分析 解决方案必要的解决方法可能有用的解决方法 问题情境 本解决方案适用情境:在本地可以正常运行的flask项目,放到云服务器报错TypeError: tuple indices must be integers or slices, not str,即代码…

有哪些记事本app可以用来整理个人笔记?

我总是在思考一个问题,为什么现在越来越多的人选择使用记事本app?它们相比传统笔记本,又有什么吸引人的地方呢?这其实并不难理解。因为,记事本app不仅可以让我们及时记录重要信息,还能对这些信息进行系统、…