【机器学习】第二章-模型评估与选择-西瓜书笔记

news2024/11/30 0:44:19

文章目录

  • 为什么要进行模型评估?- 选择模型与参数
  • 在何种数据集上对训练误差进行评估?- 训练集
  • 在何种数据集上对泛化误差进行评估?- 测试集
      • 如何划分测试集?
        • 1 留出法
        • 2 交叉验证法
        • 3 自助法
  • 模型选择和调参的区别?
    • 如何模型选择?
    • 如何调参?
  • 什么是最终模型?
  • 如何评估模型(性能度量)?
    • 如何对模型泛化性能评估?
    • 如何评估回归任务模型?- 评价标准:均方误差
    • 如何评估分类任务模型?- 评价标准:错误率、精度、查全率、查准率、P-R、ROC
      • 错误率 & 精度
        • 有哪些错误率和精度不适用的任务需求?
      • 查准率(准确率)、查全率(召回率)、 F β F_\beta Fβ F 1 F_1 F1
        • 如何评估二分类问题模型?- P-R
          • 为什么P-R曲线可以评估模型性能?- P&R度量不同情况的准确率
          • 如何画P-R曲线?- 排序&求PR
          • 如何利用P-R曲线进行性能度量?- 包围 & 面积 & BEP & Fβ
      • N 二分类问题 模型评估
        • 如何计算 N 二分类问题的PR值?- 宏 & 微
          • 方法一:各自计算PR后求全部PR平均(宏)
          • 方法二:求TP、FP、TN、FN平均后求PR平均(微)
    • ROC & AUC
      • 为什么ROC曲线可以评估模型性能?- ROC评估排序质量
      • 如何画ROC曲线?
      • 如何利用ROC曲线性能度量? - 比较曲线
      • 如何求近似ROC曲线?
  • AP
  • mAP

为什么要进行模型评估?- 选择模型与参数

在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算 法,当使用不同的参数配置时,也会产生不同的模型.那么,我们该选用哪一个学习算法、使用哪一种参数配置呢?这就是机器学习中的“模型选择”(model selection)问题。

理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。然而,实际问题总无法直接获得泛化误差(因为事先并不知道新样本是什么样),实际能做的是努力使训练误差(又称经验误差)最小化,而训练误差又由于过拟合现象的存在而不适合作为标准。

可通过实验测试来对学习器的泛化误差进行评估并进而做出选择。

在何种数据集上对训练误差进行评估?- 训练集

在何种数据集上对泛化误差进行评估?- 测试集

“测试集”(testing set)来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似。

如何划分测试集?

测试样本也是从样本真实分布中独立同分布采样而得。但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过(可理解为学生偷看过答案去闭卷考试,该考试没预测出该学生的能力)。

1 留出法

“留出法”(hold-out)直接将数据集划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即 0 = S U T, S n T = 0。在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计。

需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似。

如果从采样(sampling)的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样 "(stratified sampling)。若划分后的训练集、测试集中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差。

2 交叉验证法

3 自助法

模型选择和调参的区别?

大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别。因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的“参数调节”或简称“调参” (parameter tuning)。

在研究对比不同算法的泛化性能时,用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参

如何模型选择?

模型选择:对每种参数配置都训练出模型,然后把对应最好模型的参数作为结果。

如何调参?

调参:学习算法的很多参数是在实数范围内取值,因此,对每种参数配置都训练出模型来是不可行的。现实中常用的做法,是对每个参数选定一个范围和变化步长,例如在 [ 0 , 0.2 ] [0,0.2] [0,0.2]范围内以0.05为步长,则实际要评估的候选参数值有5个,最终是从这5个候选值中产生选定值。显然,这样选定的参数值往往不是“最佳”值,但这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行。事实上,即便在进行这样的折中后,调参往往仍很困难。

可以简单估算一下:假定算法有3个参数,每个参数仅考虑5个候选值,这样对每一组训练/测试集就有53 = 125个模型需考察;很多强大的学习算法有大量参数需设定,这将导致极大的调参工程量,以至于在不少应用任务中, 参数调得好不好往往对最终模型性能有关键性影响。

什么是最终模型?

给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上只使用了一部分数据训练模型。因此,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型。这个模型在训练过程中使用了所有m个样本,这才是最终提交给用户的模型。

如何评估模型(性能度量)?

性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。

要评估学习器的性能,就要把学习器预测结果与真实标记进行比较。

如何对模型泛化性能评估?

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)。

如何评估回归任务模型?- 评价标准:均方误差

回归任务最常用的性能度量是“均方误差"(mean squared error)。

在这里插入图片描述

如何评估分类任务模型?- 评价标准:错误率、精度、查全率、查准率、P-R、ROC

错误率 & 精度

错误率精度是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务。

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

精度:分类正确的样本数占样本总数的比例。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有哪些错误率和精度不适用的任务需求?

错误率和精度虽常用,但并不能满足所有任务需求。以西瓜问题为例,假定瓜农拉来一车西瓜,用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误。但是若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或 者 “所有好瓜中有多少比例被挑了出来”,那么错误率显然就不够用了,这时需要使用其他的性能度量。

类似的需求在信息检索、Web搜索等应用中经常出现,例如在信息检索中,经常会关心 “检索出的信息中有多少比例是用户感兴趣的” “用户感兴趣的信息中有多少被检索出来了”。 “查准率”(precision)与 “查全率”(recall)是更为适用于此类需求的性能度量。

查准率(准确率)、查全率(召回率)、 F β F_\beta Fβ F 1 F_1 F1

如何评估二分类问题模型?- P-R

二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为 真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四种情形,令 TP、FP、T N、FN 分别表示其对应的样例数,则显然有TP + FP + TN + FN = 样例总数。分类结果的混淆矩阵 (confusion matrix) 如下图所示。

在这里插入图片描述
在这里插入图片描述

为什么P-R曲线可以评估模型性能?- P&R度量不同情况的准确率

以西瓜问题为例,假定瓜农拉来一车西瓜,用训练好的模型对这些西瓜进行判别,显然,错误率衡量了有多少比例的瓜被判别错误。但是若我们关心的是“挑出的西瓜中有多少比例是好瓜”,或 者 “所有好瓜中有多少比例被挑了出来”,那么错误率显然就不够用了,这时需要使用其他的性能度量。

类似的需求在信息检索、Web搜索等应用中经常出现,例如在信息检索中,经常会关心 “检索出的信息中有多少比例是用户感兴趣的” “用户感兴趣的信息中有多少被检索出来了”。 “查准率”(precision)与 “查全率”(recall)是更为适用于此类需求的性能度量。

查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

例如,若希望将好瓜尽可能多地选出来,则可通过增加选瓜的数量来实现,如果将所有西瓜都选上,那么所有的好瓜也必然都被选上了,但这样查准率就会较低;若希望选出的瓜中好瓜比例尽可能高,则可只挑选最有把握的瓜,但这样就难免会漏掉不少好瓜,使得查全率较低。通常只有在一些简单任务中,才可能使查全率和查准率都很高。

如何画P-R曲线?- 排序&求PR

1 根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在最后的则是学习器认为“最不可能”是正例的样本。

2 按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。

3 以查准率为纵轴、查全率为横轴作图,就得到了查准率-查全率曲线,简称 “P-R曲线”。显示该曲线的图称为“P-R图”。

在这里插入图片描述

为绘图方便和美观,示意图显示出单调平滑曲线;但现实任务中的P-R曲线常是非单调、不平滑的,在很多局部有上下波动。

如何利用P-R曲线进行性能度量?- 包围 & 面积 & BEP & Fβ

曲线无交叉:若一个学习器的 P-R 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。

曲线有交叉:P-R曲线下面积大小 -> 平衡点BEP -> F β F_\beta Fβ -> F 1 F_1 F1

曲线有交叉时,难以一般性地断言两者孰优孰劣,只能在具体的查准率或查全率条件下进行比较。然而,在很多情形下,人们往往仍希望把学习器A 与 B 比出个高低。这时一个比较合理的判据是比较P-R曲线下面积的大小。

P-R曲线下面积:在一定程度上表征了学习器在查准率和查全率上取得相对“双高”的比例。但这个值不太容易估算,因此,人们设计了一些综合考虑查准率、查全率的性能度量。

平衡点(Break-Event Point,BEP):“查准率 = 查全率”时的取值,BEP越大,学习器越优。BEP还是过于简化了些,更常用的是 F 1 F_1 F1度量。

F β F_\beta Fβ度量:在一些应用中 ,对查准率和查全率的重视程度有所不同。例如在商品推荐系统中,为了尽可能少打扰用户,更希望推荐内容确是用户感兴趣的,此时查准率更重要;而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要, β \beta β的取值能表达出对查准率/查全率的不同偏好。 β < 1 \beta<1 β<1 查准率有更大影响, β > 1 \beta>1 β>1 查准率有更大影响, β > 1 \beta>1 β>1 查准率与查全率同样的影响。

在这里插入图片描述

N 二分类问题 模型评估

很多时候有多个二分类混淆矩阵,例如进行多次训练/测试,每次得到一个混淆矩阵;或是在多个数据集上进行训练/测试,希望估计算法的“全局”性能;甚或是执行多分类任务,每两两类别的组合都对应一个混淆矩阵;总之,希望在n个二分类混淆矩阵上综合考察查准率和查全率。

如何计算 N 二分类问题的PR值?- 宏 & 微

方法一:各自计算PR后求全部PR平均(宏)

在这里插入图片描述

方法二:求TP、FP、TN、FN平均后求PR平均(微)

在这里插入图片描述

ROC & AUC

为什么ROC曲线可以评估模型性能?- ROC评估排序质量

根据学习器的预测结果对样例进行排序。

ROC、AUC 考虑的是样本预测的排序质量。

ROC、AUC 是从排序质量角度出发来研究学习器泛化性能的有力工具。

排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏。

如何画ROC曲线?

1 根据学习器的预测结果对样例进行排序。

2 按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量,分别是 “假正例率”(False Positive Rate,FPR)、“真正例率”(True Positive Rate,TPR) 。

3 以假正例率为横轴、真正例率为纵轴作图,最后得到 “ROC 曲线”。显示ROC曲线的图称为“ROC图”。

在这里插入图片描述

在这里插入图片描述

对角线对应于“随机猜测”模型,而点(0, 1)则对应于将所有正例排在所有反例之前的“理想模型”。

现实任务中通常是利用有限个测试样例来绘制ROC图,此时仅能获得有限个(真正例率,假正例率)坐标对,无法产生图2.4(a)中的光滑ROC曲线,只能绘制出如图2.4(b)所示的近似ROC曲线。

如何利用ROC曲线性能度量? - 比较曲线

进行学习器的比较时,与 P-R 图相似。

曲线无交叉:若一个学习器的ROC曲线被另一个学习器的曲线完全“包住"则可断言后者的性能优于前者;

曲线有交叉:若两个学习器的 ROC 曲线发生交叉,则难以一般性地断言两者孰优孰劣。此时如果一定要进行比较,则较为合理的判据是比较ROC曲线下的面积,即 AUC (Area Under ROC Curve)。面积越大,模型更优。

如何求近似ROC曲线?

AUC 可通过对 ROC 曲线下各部分的面积求和而得。

在这里插入图片描述
在这里插入图片描述

AP

mAP

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

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

相关文章

Pytest学习笔记

Pytest学习笔记 1、介绍 1.1、单元测试 单元测试是指在软件开发当中&#xff0c;针对软件的最小单位&#xff08;函数&#xff0c;方法&#xff09;进行正确性的检查测试 1.2、单元测试框架 测试发现&#xff1a;从多个py文件里面去找到我们测试用例测试执行&#xff1a;按…

WebDAV之葫芦儿·派盘+网盘精灵

网盘精灵 支持WebDAV方式连接葫芦儿派盘。 推荐一款让您的iPhone、iPod、iPad 变成WebDav客户端的软件,支持从WebDav服务器连接葫芦儿派盘服务进行上传和下载件。 网盘精灵让您的iPhone、iPod、iPad 变成WebDav客户端。功能:WebDav操作、文件共享、本地文件管理

jstack排查cpu占用高[复习]

这样就可以看到占用CPU高的代码位置。 总结&#xff1a;就是先查到占用高的应用和具体的线程&#xff0c;然后根据线程到堆积信息查找即可。 不过堆栈信息非十进制&#xff0c;需提前把线程号转为十六进制。 这样就可以看到占用CPU高的代码位置。 总结&#xff1a;就是先查到…

JavaScript------面向对象

目录 一、面向对象编程&#xff08;OOP&#xff09; 基本概念 二、类 1、语法 2、通过类创建对象 3、类的属性 4、类的方法 5、构造函数 三、面向对象的三个特点 1、封装 如何确保数据的安全&#xff08;实现封装的方式&#xff09;&#xff1a; 2、继承 在子类中&a…

【LeetCode】每日一题(4)

目录 题目&#xff1a;1124. 表现良好的最长时间段 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;1124. 表现良好的最长时间…

算法思想 - 回溯算法

Backtracking(回溯)属于 DFS, 本文主要介绍算法中Backtracking算法的思想。回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。回溯法是一种…

ChatGPT 类 AI 软件供应链的安全及合规风险

AIGC将成为重要的软件供应链近日&#xff0c;OpenAI推出的ChatGPT通过强大的AIGC&#xff08;人工智能生产内容&#xff09;能力让不少人认为AI的颠覆性拐点即将到来&#xff0c;基于AI将带来全新的软件产品体验&#xff0c;而AI也将会成为未来软件供应链中非常重要的一环。在O…

【项目精选】基于WEB的仓库管理系统的设计与实现(论文+视频+源码)

点击下载源码 仓库物品的管理是与我们的日常生活息息相关的一个重大问题。随着我国经济飞速的发展&#xff0c;改革开放的不断深入&#xff0c;企业要想在激烈的市场竞争中立于不败之地&#xff0c;要想继续的发展与生存&#xff0c;没有现代化的管理方式与方法是万万不行的&am…

torch.nn.parameter 生成可更新的 tensor (requires_grad = True)

torch.nn.parameter 是 PyTorch 中的一种特殊类型的 tensor&#xff0c;它主要用于存储神经网络中的参数。这些参数可以被自动求导和被优化器自动更新。使用 torch.nn.Parameter 定义的tensor 会被自动添加到模型的参数列表中。 \quadtorch.nn.Parameter 是继承自 torch.Tensor…

vite+vue3搭建的工程热更新失效问题

前段时间开发新的项目&#xff0c;由于没有技术上的限制&#xff0c;所以选择了vitevue3ts来开发新的项目&#xff0c;一开始用vite来开发新项目过程挺顺利&#xff0c;确实比vue2webpack的项目高效些&#xff08;为什么选择vite&#xff09;,但是过了一段时间后&#xff0c;不…

android组件化

学习流程&#xff1a;1.开源最佳实践&#xff1a;Android平台页面路由框架ARouter-阿里云开发者社区 (aliyun.com)2.中文ARouter使用API&#xff1a;https://github.com/alibaba/ARouter/blob/master/README_CN.md3.看当前文档后面的代码4.这是通俗易懂的文章&#xff1a;https…

使用 Nodejs、Express、Postgres、Docker 在 JavaScript 中构建 CRUD Rest API

让我们在 JavaScript 中创建一个 CRUD rest API&#xff0c;使用&#xff1a;节点.js表达续集Postgres码头工人码头工人组成介绍这是我们将要创建的应用程序架构的架构&#xff1a;我们将为基本的 CRUD 操作创建 5 个端点&#xff1a;创造阅读全部读一个更新删除我们将使用以下…

【H.264】码流解析 annexb vs avcc

H264码流解析及NALUAVCC和ANNEXB 前者是FLV容器、mp4 常用的。后者 是实时传输使用,所以是TS 一类的标准。VLC显示AVC1就是AVCC AVCC格式 也叫AVC1格式,MPEG-4格式,字节对齐,因此也叫Byte-Stream Format。用于mp4/flv/mkv, VideoToolbox。 – Annex-B格式 也叫MPEG-2 trans…

微信公众号扫码授权登录思路

引言 上学期研究了一下微信登录相关内容&#xff0c;也写了两三篇笔记&#xff0c;但是最后实际登录流程没有写&#xff0c;主要因为感觉功能完成有所欠缺&#xff0c;一直也没有好的思路&#xff1b;这两天我又看了看官方文档&#xff0c;重新构思了一下微信公众号登录相关的…

操作系统综合实验

实验目的 加深对进程概念理解&#xff0c;进一步认识进程并发执行掌握Linux系统的进程创建和终止操作掌握文件系统调用及文件标准子例程的编程方法掌握Linux下终端图形编程方法&#xff0c;能编写基于文本的图形界面掌握proc文件系统的使用 相关知识 Linux C编程中的头文件 …

知识点整合

⭐面试 自我介绍&#xff08;优势岗位匹配度&#xff09; 为什么来我们公司&#xff08;对公司的了解&#xff09; 讲讲做的项目&#xff08;为什么这么做&#xff0c;思路和贡献&#xff09; 跨部门涉案的业务流程 我们跨部门涉案业务主要是本系统、配合物流系统和罚没系…

二战字节跳动成功上岸,准备了小半年,拿27k也算不上很高吧~

先说下我基本情况&#xff0c;本科不是计算机专业&#xff0c;现在是学通信&#xff0c;然后做图像处理&#xff0c;可能面试官看我不是科班出身没有问太多计算机相关的问题&#xff0c;因为第一次找工作&#xff0c;字节的游戏专场又是最早开始的&#xff0c;就投递了&#xf…

SpringMVC传值

实现步骤 先看后台代码如何获取前端传过来的数据&#xff0c;直接在方法的参数列表中添加RequestParam(xxx)&#xff0c;再在后面加上参数列表即可 不过这样的方式会出现一个问题&#xff1a;当前端页面没有提交相应的数据过来的时候&#xff0c;后台会出现异常&#xff0c;所…

Elasticsearch7.8.0版本进阶——数据读流程

目录一、数据读流程概述二、数据读流程步骤2.1、数据读流程图2.2、数据读流程步骤&#xff08;从主分片或者副本分片检索文档的步骤顺序&#xff09;2.3、数据读流程注意事项一、数据读流程概述 从主分片或者从其它任意副本分片检索文档。 二、数据读流程步骤 2.1、数据读流…

5_机试_递归和分治

一、递归 本章介绍程序设计中的另一个非常重要的思想一递归策略。递归是指函数直接或间接调用自身的一种方法&#xff0c;它通常可把一个复杂的大型问题层层转化为与原问题相似但规模较小的问题来求解。递归策略只需少量的程序就可描述解题过程所需的多次重复计算&#xff0c;…