✨机器学习笔记(七)—— 交叉验证、偏差和方差、学习曲线、数据增强、迁移学习、精确率和召回率

机器学习笔记(七)

  • 1️⃣评估模型
    • 🎗️使用测试集评估模型
    • 🎗️交叉验证集(cross validation)
  • 2️⃣偏差和方差(Bias / Variance)
  • 3️⃣学习曲线(Learning curves)
    • 🎗️High bias
    • 🎗️High variance
  • 4️⃣数据增强(Data augmentation)
  • 5️⃣迁移学习(Transfer learning)
  • 6️⃣评估指标
    • 🎗️精度(Accuracy)
    • 🎗️精确率(Precision)
    • 🎗️召回率(Recall)
    • 🎗️F 值(Fmeasure)

1️⃣评估模型

🎗️使用测试集评估模型

🎈使用数据集训练模型时,可能会导致过拟合现象,模型很好的拟合了训练数据,但是无法泛化到新的数据样例中。

在这里插入图片描述

🤓 为了更好的评估模型,可以将数据集中的70%划分为训练集,30%划分为测试集。比较一下在训练集训练出来的模型在测试集的表现如何,大概可以评估模型好坏。

在这里插入图片描述

✨计算测试集和训练集中的代价 J t e s t J_{test} Jtest J t r a i n J_{train} Jtrain,两者的数值差距可以反映一些模型的问题。

在这里插入图片描述

🎈对于过拟合的情况, 通过对比 J t e s t J_{test} Jtest J t r a i n J_{train} Jtrain 可以看出这不是一个好模型,这就达到了评估模型的目的。

在这里插入图片描述

🎗️交叉验证集(cross validation)

🎈我们可以通过训练集和测试集去选择一个相对较好的模型,对于一个多项式模型,可以通过训练集训练出 d d d 阶的模型 d : d: d: 1~10),我们想知道哪个模型的泛化程度最好,这时候可以拿测试集去评估,计算 J t e s t J_{test} Jtest J t e s t J_{test} Jtest 最小的 d d d 阶模型的就是最好的模型,泛化程度最好。但是,相当于是使用测试集去选择了 d d d,可以看作测试集“变相”参与了最终模型的训练,其实它的泛化误差是一个乐观的估计,它比实际上的泛化误差要小。

在这里插入图片描述

✨要更好的评估模型的话,我们需要用一个完全和模型无关的测试集去评估,那么谁去选出这个 d d d 呢?这时需要我们去多划分一个交叉验证集

在这里插入图片描述

🤓这样可以通过训练集训练出多个模型的参数,交叉验证集选择出性能最好模型,最后用测试集评估模型。由于测试集完全没有参与到最终模型的选择中,这时的测试集对模型的泛化程度的评估是公平的而不是乐观的,这种方法是模型选择的一种最佳实践。

在这里插入图片描述

✨同样,可以将该最佳实践应用到神经网络架构的选择中,通过训练集拟合参数 w w w, b b b,再通过交叉验证集选择性能最好的模型(即 J c v J_{cv} Jcv 最小的模型),最后使用测试集的 J t e s t J_{test} Jtest 去评估模型的泛化程度。

在这里插入图片描述

2️⃣偏差和方差(Bias / Variance)

🎈对于单个特征时,我们可以通过图表直接看出模型是欠拟合还是过拟合,左图中的模型为欠拟合,通常欠拟合也成为高偏差;右图中的模型为过拟合,通常过拟合成为高方差。而对于多个特征时,不好用图像之间展示,我们可以直接考察模型的偏差和方差来诊断模型的好坏。

✨对于欠拟合的模型,它有 J t r a i n J_{train} Jtrain J c v J_{cv} Jcv 都高的性质,因为它即不能很好的拟合训练数据,泛化性也差;对于过拟合的数据,它有低 J t r a i n J_{train} Jtrain 和高 J c v J_{cv} Jcv 的性质,因为它非常好的拟合了训练数据,但泛化性相当差;而一个好的模型 J t r a i n J_{train} Jtrain J c v J_{cv} Jcv 都比较低。我们通过偏差和方差来诊断模型就是去研究它们的 J t r a i n J_{train} Jtrain J c v J_{cv} Jcv

在这里插入图片描述

🤓可以看到随着模型多项式次数的变化, J t r a i n J_{train} Jtrain J c v J_{cv} Jcv 的值是如何变化的。

在这里插入图片描述

✨下图说明了如何去诊断模型的偏差和方差,总得来说偏差的高低就是看 J t r a i n J_{train} Jtrain 的大小,方差的高低就是看 J c v J_{cv} Jcv J t r a i n J_{train} Jtrain 的差值大小。(注意:通常总是 J c v J_{cv} Jcv > J t r a i n J_{train} Jtrain

在这里插入图片描述

同时具有高偏差和高方差的情况:

在这里插入图片描述


🎈正则化参数对偏差和方差的影响:

在这里插入图片描述

3️⃣学习曲线(Learning curves)

在这里插入图片描述

🎗️High bias

✨对于高偏差(欠拟合)的情况,一开始数据量很小甚至只有 1 个时, J t r a i n J_{train} Jtrain 将非常小, J c v J_{cv} Jcv 会比较大;数据量越来越多的话,模型会为了最小化 J c v J_{cv} Jcv 逐渐去调整,显然 J c v J_{cv} Jcv 会越来越小,但是数据量上来了,模型拟合训练数据就不想拟合1、2个点那么准确,所以 J t r a i n J_{train} Jtrain 越来越大。最终达到一个稳定状态(欠拟合),高 J t r a i n J_{train} Jtrain J t r a i n ≈ J c v J_{train} ≈ J_{cv} JtrainJcv,此后再怎么添加数据和基准水平的差距都难以缩小,所以添加数据量将不能帮助解决高偏差问题

在这里插入图片描述

🎗️High variance

✨对于高方差(过拟合)的情况,在低数据量时出现过拟合, J c v J_{cv} Jcv >> J t r a i n J_{train} Jtrain J t r a i n J_{train} Jtrain 很低。增加数据量后可以很好的解决高方差问题,让模型达到基准水平。

在这里插入图片描述

4️⃣数据增强(Data augmentation)

🎈增加数据量经常可以帮助我们得到更好的模型,但是提供的数据量可能就那么多,无法得到更多的数据量或者可能得到更多数据量需要很多资金成本,而数据增强方法可以在现有的数据样例上创建新的数据

✨对图像数据通过放大、缩小、旋转不同角度、改变对比度、镜像、网格随机扭曲等方法创造更多新的图像数据;对音频数据通过剪辑增加不同噪声等方式,创造更多新的音频数据。这些新数据也非常具有挑战性,可以让模型有更强的泛化程度。

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

5️⃣迁移学习(Transfer learning)

🎈Transfer learning: using data from a different task.

✨使用其他任务已经训练好的模型作为自己的预训练模型,这就是迁移学习。例如,我们要训练一个数字识别的模型,但是我们可以使用别人训练好的大型动物识别模型作为我们的预训练模型,只需将最后一层输出层替换,训练出输出层的参数,就成为了一个数字识别模型。① 可以选择只训练输出层的参数。② 可以重新训练整个模型的参数,导入的模型参数作为初始化参数,这样也比随机初始化参数的梯度下降更快。(小型模型倾向于选择 ①,大型模型倾向于选择 ②)

在这里插入图片描述
🧐为什么可以迁移学习?因为对于同样的输入类型,图像、文字、音频等,在训练过程中会有一些共通的训练情况。例如,对于训练图像,不管是什么任务,对于图像类型的训练都会存在边缘特征训练、拐角特征训练、曲线特征训练等情况。所以如果想搭建一个图像处理模型,直接迁移其他模型来训练,总比自己随机初始化的效果要好。(类比会骑单车的人学习骑电动车总比小白学电动车要更快更好)

6️⃣评估指标

🎈有一个回归问题,对图像是横向的还是纵向的进行了分类,关于分类是否成功就有4种情况:
● 图像是横向的,被正确分类了
● 图像被分类为横向,但实际上不是横向的
● 图像不是横向的,被正确分类了
● 图像被分类为非横向,但实际上是横向的

在这里插入图片描述
🎈分类结果为正的情况是 Positive、为负的情况是 Negative。分类成功为 True、分类失败为 False。

在这里插入图片描述

🎗️精度(Accuracy)

✨对于一个模型,我们希望它分类正确的数据越多越好,这才是一个好的模型。可以使用 精度(Accuracy) 来衡量模型整体的正确率。
A c c u r a c y = T P + T N T P + F P + F N + T N ,它表示的是在整个数据集中,被正确分类的数据 T P 和 T N 所占的比例。 Accuracy = \frac {TP+TN} {TP + FP + FN + TN},它表示的是在整个数据集中,被正确分类的数据 TP 和 TN 所占 的比例。 Accuracy=TP+FP+FN+TNTP+TN,它表示的是在整个数据集中,被正确分类的数据TPTN所占的比例。

假如 100 个数据中 80 个被正确地分类了, A c c u r a c y = 80 100 = 0.8 Accuracy = \frac {80} {100}= 0.8 Accuracy=10080=0.8,值越高精度越高,也就意味着模型越好。

🧐但是对于数据量极其不平衡的情况:

在这里插入图片描述
😞假设有 100 个数据,其中 95 个是 Negative。那么,哪怕出现模型把数据全部分类为 Negative 的极端情况,Accuracy 值也为 0.95,也就是说模型的精度是 95%。但是一个把所有数据都分类为 Negative 的模型,不能说它是好模型。这种情况,只看精度就看不出来模型存在的问题了,所以需要引入一些其他指标。

对于这种情况,我们假设模型的结果:

在这里插入图片描述

个数
Positive 数据5 个
Negative 数据95 个
True Positive1 个
False Positive2 个
False Negative4 个
True Negative93 个
Accuracy94%

🎗️精确率(Precision)

P r e c i s i o n = T P T P + F P Precision = \frac {TP} {TP+FP} Precision=TP+FPTP
✨这个指标只关注 TP 和 FP。根据表达式来看,它的含义是在被分类为 Positive 的数据中,实际就是 Positive 的数据所占的比例:

在这里插入图片描述

计算得出: P r e c i s i o n = 1 1 + 2 = 1 3 = 0.333... 计算得出:Precision = \frac {1}{1+2}=\frac13=0.333... 计算得出:Precision=1+21=31=0.333...

🤓这个值越高,说明分类错误越少。拿这个例子来说,虽然被分类为 Positive 的数据有 3 个,但其中只有 1 个是分类正确的。所以计算得出的精确率很低。

🎗️召回率(Recall)

R e c a l l = T P T P + F N Recall=\frac {TP} {TP+FN} Recall=TP+FNTP

✨这个指标只关注 TP 和 FN。根据表达式来看,它的含义是在Positive 数据中,实际被分类为 Positive 的数据所占的比例:

在这里插入图片描述
计算得出: R e c a l l = 1 1 + 4 = 1 5 = 0.2 计算得出:Recall=\frac 1 {1+4}=\frac 1 5=0.2 计算得出:Recall=1+41=51=0.2

🤓这个值越高,说明被正确分类的数据越多。拿这个例子来说,虽然 Positive 数据共有 5 个,但只有 1 个被分类为 Positive。所以计算得出的召回率也很低。

🎗️F 值(Fmeasure)

🎈由上可知,如果是一个精确率和召回率都很高的模型,它当然是个好模型,不过通常情况下精确率和召回率会一个高一个低,需要我们取舍。那取它们的平均值怎么样?假设现在有两个模型,
它们的精确率和召回率如下:

在这里插入图片描述

🧐可以看出模型B过于极端。如果将所有的数据都分类为 Positive,那么召回率就是 1.0。但是这样一来,Negative 数据也会被分类为 Positive,所以精确率会变得很低。但是对于两个模型的平均值,会发现模型 B 的更高。但它是把所有数据都分类为 Positive 的模型,精确率极低,仅为 0.02,并不能说它是好模型。所以只看平均值确实无法知道模型的好坏。

✨这时需要评定综合性能的指标 F F F出场了:

F m e a s u r e = 2 1 P r e c i s i o n + 1 R e c a l l Fmeasure=\frac 2 {\frac 1 {Precision} + \frac 1 {Recall}} Fmeasure=Precision1+Recall12

🎈此时,精确率和召回率只要有一个低,就会拉低 F 值。再计算一下前面两个模型的 F F F 值:

在这里插入图片描述

和简单取平均值时得到的结果不同,模型 A 的 F F F 值更高。这说明该指标考虑到了精确率和召回率的平衡。(有时称 F F F 值为 F 1 F1 F1 值会更准确, F 1 F1 F1 值在数学上是精确率和召回率的调和平均值。)

✨除 F1 值之外,还有一个带权重的 F F F 值指标:
W e i g h t e d F m e a s u r e = ( 1 + β 2 ) ⋅ P r e c i s i o n ⋅ R e c a l l β 2 ⋅ P r e c i s i o n + R e c a l l WeightedFmeasure=\frac{(1+β^2) · Precision · Recall} {β^2 · Precision + Recall} WeightedFmeasure=β2Precision+Recall(1+β2)PrecisionRecall

我们可以认为 F F F 值指的是带权重的 F F F 值,当权重为 1 时才是刚才介绍的 F 1 F1 F1 值。

🧐前面介绍的精确率和召回率都是以 TP 为主进行计算的,那么也能以 TN 为主吗?完全没问题,以 TN 为主来计算精确率和召回率的表达式是这样的:
P r e c i s i o n = T N T N + F N Precision=\frac {TN} {TN+FN} Precision=TN+FNTN
R e c a l l = T N T N + F P Recall=\frac {TN} {TN+FP} Recall=TN+FPTN

🌹当数据不平衡时,使用数量少的那个会更好。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

获取时隔半个钟的三天

摘要&#xff1a; 今天遇到需求是配送时间&#xff0c;时隔半个钟的排线&#xff01;所以需要拼接时间&#xff01;例如2024-10-08 14&#xff1a;30&#xff0c;2024-10-08 15&#xff1a;00&#xff0c;2024-10-08 15&#xff1a;30 <el-form-item label"配送时间&a…

【HarmonyOS】HMRouter使用详解(四)路由拦截

路由拦截器 可以对指定或全局路由跳转时添加拦截器&#xff0c;作用是可以实现在页面切换前做判断是否有进入当前页面的权限。这篇文章将实现登录的全局路由拦截样式。 新建拦截器类 通过继承IHMInterceptor接口实现生命周期接口的方法重写。 通过添加HMInterceptor装饰器&…

2022年黄河流域旅游资源空间分布数据(shp)

数据介绍 黄河是中华民族的母亲河。黄河流域旅游资源丰富且极具特色。黄河流域旅游资源空间分布数据是黄河流域旅游资源开发与决策的基础。本数据集以县&#xff08;区&#xff09;域行政边界为单元、以国家旅游资源分类标准为依据&#xff0c;收集整理了黄河流域各县&#xf…

ART 光学跟踪系统:通过 VR HMD 解锁完全沉浸式 VR 体验

在虚拟现实体验中&#xff0c;完全沉浸式虚拟现实体验应该既准确又舒适。当与现实世界的物体融合时&#xff0c;虚拟现实的表现必须与现实精确匹配。这意味着所使用的运动跟踪系统必须为整套项目提供可靠且可重复的高精度运动数据&#xff0c;以及体感无法察觉到的超低延迟。AR…

HECTOR:一种新型多模态深度学习模型用于预测子宫内膜癌复发风险|顶刊精析·24-10-12

小罗碎碎念 这篇文章是关于一项名为HECTOR&#xff08;histopathology-based endometrial cancer tailored outcome risk&#xff09;的研究&#xff0c;它是一个基于多模态深度学习的预测模型&#xff0c;用于预测子宫内膜癌&#xff08;EC&#xff09;的复发风险。 作者角色作…

高级软件测试工程师:我的2024面试经验!干货满满!

最近行业里有个苦涩的笑话&#xff1a;公司扛过了之前的三年&#xff0c;没扛过摘下最近的一年&#xff0c;真是让人想笑又笑不出来。年前听说政策的变化&#xff0c;大家都满怀希望觉得年后行情一片大好&#xff0c;工作岗位激增&#xff0c;至少能有更多的机会拥抱未来。然而…

mac电脑如何删除应用程序?怎么删除苹果电脑里的软件

在使用Mac电脑的过程中&#xff0c;随着时间的推移&#xff0c;我们可能会安装大量的应用程序。然而&#xff0c;这些应用程序中有很多可能只是临时使用&#xff0c;或者已经不再需要了。这些无用的应用程序不仅占据了宝贵的硬盘空间&#xff0c;还可能拖慢Mac系统的运行速度。…

Qt 自绘开关按钮以及设计器中的提升为用法

文章目录 自绘按钮实现概要效果图代码 提升为用法介绍步骤 总结 自绘按钮实现 概要 当我们需要一个开关样式的QPushbutton&#xff0c;没有图片的话&#xff0c;我们可以采用自绘的形式实现。且使用QtDesinger中提升为Promote to的功能加入界面中&#xff0c;而不是使用代码的…

godot帧同步-关于“显示与逻辑分离”

很多教程说帧同步的关键是“显示与逻辑分离”&#xff0c;但是又没有具体讲解&#xff0c;我起初也没有搞懂这句话的意思&#xff0c;就直接上手开发帧同步了。在开发的过程中&#xff0c;一下子就悟了&#xff0c;所以分享一下。 显示与逻辑未分离&#xff08;单机&#xff0…

《系统架构设计师教程(第2版)》第18章-安全架构设计理论与实践-02-安全模型

文章目录 1. 安全模型概述1.1 信息安全的目标1.2 安全模型 2. 状态机模型2.1 概念2.2 状态机模型工作步骤 3. Bell-LaPadula模型3.1 概念3.2 模型安全规则3.3 示例 3. Biba模型3.1 概念3.2 模型安全规则3.3 示例 4. Clark-Wilson模型&#xff08;CWM&#xff09;4.1 概述4.2 模…

低代码赋能汽车制造产业链场景系列

当前汽车行业数字化智能化转型浪潮下&#xff0c;整车及其上下游产业链的协同创新正变得至关重要。头部车企与上下游供应链企业正逐步解决在生产管理、业务互通、系统集成等方面的痛点与挑战。电动化、智能化、网联化作为汽车产业的三大趋势&#xff0c;正共同推动未来汽车产业…

记录一些yolo-world训练数据集的报错

参考的这个文章 https://blog.csdn.net/ITdaka/article/details/138863017?spm1001.2014.3001.5501 openai快捷下载&#xff1a;https://download.csdn.net/download/qq_43767886/89876720 然后我打算训练coco数据集&#xff0c;遇到了以下的问题 问题一 原因&#xff1a;…

AWS MySQL 升级(三)—— TAZ - 近0停机的小版本升级方案

与AWS交流了解到的新方案&#xff0c;没有实际试过&#xff0c;所以本篇主要是些原理 一、 TAZ的含义 TAZ实际上就是 3 AZ&#xff0c;扩展一些就是 Multi-AZ DB Cluster&#xff0c;即在3个可用区部署DB&#xff0c;具备两个只读备用实例。 二、 TAZ的主要用途 1. 近0停机的小…

Sublime快捷键的使用和修改

sublime快捷键 1.选择类 CtrlD 选中光标所占的文本&#xff0c;继续操作则会选中下一个相同的文本。 AltF3 选中文本按下快捷键&#xff0c;即可一次性选择全部的相同文本进行同时编辑。举个栗子&#xff1a;快速选中并更改所有相同的变量名、函数名等。 CtrlL 选中整行&#…

基于Web的停车场管理系统(论文+源码)_kaic

摘要 我国经济的发展愈发迅速&#xff0c;车辆也随之增加的难以想象&#xff0c;因此车位的治理也越来越繁杂&#xff0c;为了方便停车位相关信息的管理&#xff0c;设计开发一个合理的停车位管理系统尤为重要。因而&#xff0c;具有信息方便读取和操作简便的停车位管理系统的设…

Qt和c++面试集合

目录 Qt面试 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 什么是Meta-Object系统&#xff1f; 什么是Qt的MVC模式&#xff1f; 1. QT中connect函数的第五个参数是什么&#xff1f;有什么作用&#xff1f; 3. 在QT中&#xff…

Linux使用Docker部署Paperless-ngx结合内网穿透打造无纸化远程办公

文章目录 前言1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux系统本地部署Paperless-ngx开源文档管理系统&#xff0c;并结合cpolar内网穿透工具解决本地部署…

Redis持久化机制(RDBAOF详解)

目录 一、Redis持久化介绍二、Redis持久化方式1、RDB持久化(1) 介绍(2) RDB持久化触发机制(3) RDB优点和缺点(4) RDB流程 2、AOF(append only file)持久化(1) 介绍(2) AOF优点和缺点(3) AOF文件重写(4) AOF文件重写流程 三、AOF和RDB持久化注意事项 一、Redis持久化介绍 Redis…

plpo vue实战版教程

vue实战版教程 什么是plpo安装1.将plop添加到您的项目2.全局安装plop(可选&#xff0c;但建议使用方便)3.在项目根目录下创建一个 plopfile.js vue 实战&#xff08;后台管理系统 - 增删改查&#xff09;所需文件文件介绍创建配置文件 plopfile.js创建模板和脚本命令文件模板创…

ELK中L的filebeat配置及使用(超详细)

上一次讲解了如何在linux服务器上使用docker配置ELK中的E和K&#xff0c;这期着重讲解一下L怎么配置。 首先L在elk中指的是一个数据处理管道&#xff0c;可以从多种来源收集数据&#xff0c;进行处理和转换&#xff0c;然后将数据发送到 Elasticsearch。L的全称就是&#xff1…