搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
爱喝兽奶帝天荒
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Mac上Flutter开发环境搭建_flutter macos (desktop) macos darwin-arm64 m
2
ArcGIS API For JavaScript 开发(二)基础地图
3
SpringBean默认是单例的,高并发情况下,如何保证并发安全?_单例bean的并发访问问题
4
vue+uniapp音乐播放器系统 微信小程序hbpp0_uniapp免费音乐
5
Ubuntu20.04 部署 k8s_ubuntu20.04虚拟机配置kubernetes
6
数码管在c语言中显示时间,用LED数码管显示电脑中的时间
7
容器核心技术之Namespace与Cgroup_namespace和cgroup
8
Facebook 开源计算机视觉 (CV) 和 增强现实 (AR) 框架 Ocean
9
oracle初级入门教程,超详细讲解,适合初学者和入门者_oracle database 教程
10
Kafka生产与消费示例_kafka生产者实例
当前位置:
article
> 正文
白话机器学习的数学-3-评估_白话机器学习中的数学
作者:爱喝兽奶帝天荒 | 2024-07-24 07:24:57
赞
踩
白话机器学习中的数学
1、
模型评估
那我们如何测量预测函数 fθ(x)的正确性,也就是精度呢?
观察函数的图形,看它能否很好地拟合训练数据:
这是只有一个变量的简单问题,所以才能在图上展 示出来。
过像多重回归这样的问题,变量增加后就不能在图上展示了。
所以我们需要能够定量地表示机器学习模型的精度。
2、
交叉验证
回归问题的验证
把获取的全部训练数据分成两份:一份用于测试,一份用于训练,然后用前者来评估模型。
如果变量增加,就不能画图了,就算能画图,也会很麻烦。
对于回归的情况,只要在训练好的模型上计算测试数据的误差的平方,再取其平均值就可以了。假设测试数据有 n 个,那么可以 这样计算:
这个值被称为均方误差或者
MSE
,全称 Mean Square Error。
这个误差越小,精度就越高,模型也就越好。
分类问题的验证
由于回归是连续值,所以可以从误差入手, 但是在分类中我们必须要考虑分类的类别是否正确。
我们是根据图像为横向的概率来分类的, 关于分类是否成功就会有下面 4 种情况:
设横向的情况为正、非横向的情况为负,那么一般来 说,二分类的结果可以用这张表来表示:
分类结果为正的情况是 Positive、为负的情况是 Negative。分类 成功为 True、分类失败为 False。
我们可以使用表里的 4 个记号来计算分类的精度。精 度的英文是 Accuracy,它的计算表达式是这样的:
它表示的是在整个数据集中,被正确分类的数据 TP 和 TN 所占 的比例。
假如 100 个数据中 80 个被正确地分类了,那么精度就是这样:
精确率和召回率
一般来说,只要计算出这个 Accuracy 值,基本上就可以掌握分类 结果整体的精度了。
但是有时候只看这个结果会有问题,所以还 有别的指标。
假设图中的圆点是 Positive 数据、叉号是 Negative 数据,我们来考虑一下数据量极其不平衡的情况:
假设有 100 个数据,其中 95 个是 Negative。那么,哪怕出现模型把数据全部分类为 Negative 的极端情况,Accuracy 值也为 0.95, 也就是说模型的精度是 95%。
但是不管精度多高,一个把所有数据都分类为 Negative 的模型, 不能说它是好模型。
假设分类如下:
首先我们来看第一个指标——
精确率
。它的英文是 Precision:
这个指标只关注 TP 和 FP。根据表达式来看,它的含义是在被分类为 Positive 的数据中,实际就是 Positive 的数据所占的比例:
(这个值越高,说明分类错误越少。)
还有一个指标是
召回率
,英文是 Recall:
这个指标只关注 TP 和 FN。根据表达式来看,它的含义是在 Positive 数据中,实际被分类为 Positive 的数据所占的比例:
(
这个值越高,说明被正确分类的数据越多。
)
基于这两个指标来考虑精度是比较好的,不过一般来说,精确率和召回率会一个高一个低,需要我们取舍,有些麻烦。
F 值
假设现在有两个模型, 它们的精确率和召回率是这样的:
如果将所有的数据都分类为 Positive,那么召回率就是 1.0。但是 这样一来,Negative 数据也会被分类为 Positive,所以精确率会变得很低。
看一下两个模型的平均值,会发现模型 B 的更高。但它是把所有 数据都分类为 Positive 的模型,精确率极低,仅为 0.02,并不能说它是好模型。
所以就出现了评定综合性能的指标 F 值。表达式中的 Fmeasure 就是 F 值,Precision 是前面说的精确率,Recall 是召回率:
精确率和召回率只要有一个低,就会拉低 F 值。计算一下前面两个模型的 F 值就知道了:
这说明该指标考虑到了精确率和召回率的平衡。其实,也有很多人把前面那个 F 值的表达式变形,写成下面这样,二者是相同的:
有时称 F 值为 F1 值会更准确,这一点需要注意。
F 和 F1 有的时候含义相同,有的时候却并不相同。
除 F1 值之外,还有一 个带权重的 F 值指标:
我们可以认为
F 值指的是带权重的 F 值
,当权重为 1 时才 是刚才介绍的 F1 值。
F1 值在数学上是精确率和召回率的调和平均值。关于调和平均值,不需要太深入地了解。
之前介绍的精确率和召回率都是以 TP 为主进行计 算的,那么也能以 TN 为主:
以哪个为主都可以吗?
当数据不平衡时,使用数量少的那个会更好。最开始的例子中 Positive 极少,所以我们使用了 Positive 来计算,反之如果 Negative 较少,那就使用 Negative。
对于回归和分类,我们都可以这样来评估模型。
把全部训练数据分为测试数据和训练数据的做法称为交叉验证,这是非常重要的方法。
交叉验证的方法中,尤为有名的是
K 折交叉验证
,掌握这种方法很有好处:
● 把全部训练数据分为 K 份
● 将 K − 1 份数据用作训练数据,剩下的 1 份用作测试数据
● 每次更换训练数据和测试数据,重复进行 K 次交叉验证
● 最后计算 K 个精度的平均值,把它作为最终的精度
假如我们要进行 4 折交叉验证,那么就会这样测量精度:
如果全部训练数据的量较大,这种方法必须训练多次,会比较花时间。
不切实际地增加 K 值会非常耗费时间,所以我们必须要确定一个合适的 K 值。
3、正则化
过拟合
之前我们提到过的模型只能拟合训练数据的状态被称为过拟合, 英文是 overfitting。
如: 过度增加函数 fθ(x)的次数会导致过拟合。
有几种方法可以避免过拟合:
● 增加全部训练数据的数量
● 使用简单的模型
● 正则化
首先,重要的是增加全部训练数据的数量。
机器 学习是从数据中学习的,所以数据最重要。
另外,
使用更简单的模型也有助于防止过拟合
。
正则化的方法
在讲解回归的时候提到的目标函数:
我们要向这个目标函数增加下面这样的正则化项:
得到新的目标函数:
我们要对这个新的目标函数进行最小化,这种方法就称为 正则化。
不过一般来说不对 θ0 应用正则化,所以仔细看会发现 j 的 取值是从 1 开始的。
这也就是说,假如预测函数的表达式为 fθ(x) = θ0 + θ1x + θ2x^2 , 那么 m = 2 就意味着正则化的对象参数为 θ1 和 θ2。
θ0 这种只有参数的项称为偏置项,一般不对它进行正则化。
λ 是决定正则化项影响程度的正的常数,这个值需要我们自己来定。
正则化的效果
首先把目标函数分成两个部分:
所以我们实际地 把这两个函数的图形画出来,加起来看看。
把这两个函数的图形画出来,加起来看看。
不过参数太多就画不出图来了,所以这里我们只关注 θ1。而且为了更加易懂,先不考 虑 λ。
不用太在意形状是否精确, 假设它的形状是这样的:
C(θ) :θ1 = 4.5 附近是最小值。
E(θ) = C(θ) + R(θ): θ1 = 0.9 附近是最小值。
与加正则化项之前相比,θ1 更接近 0 了。
这就是正则化的效果。它可以防止参数变得过大,有助于参数接近较小的值。
虽然我们只考虑了 θ1,但其他 θj 参数的情况也是类似的。
参数的值变小,意味着该参数的影响也会相应地变小。比如,有这样的一个预测函数 fθ(x):
再极端一点,假设 θ2 = 0,这个表达式就从二次变为一次了:
这就意味着本来是曲线的预测函数变为直线了。
这正是通过减小不需要的参数的影响,将复杂模型替换为简单模型来防止过拟合的方式。
不过刚才的只是个例子,并不是一定要减小次数最高项的参数值。
就是为了防止参数的影响过大,在训练时要对参数施加一些惩罚。
那一开始就提到的 λ,是可以控制正则化惩罚的强度:
比如令 λ = 0,那就相当于不使用正则化。
反过来 λ 越大,正则化的惩罚也就越严厉:
分类的正则化
刚才讨论的是回归的情况,对于分类也可以应用正则化。
逻辑回归的目标函数:
分类也是在这个目标函数中增加正则化项就行了, 道理是相同的:
为什么在原来的目标函数上加上负号?
对数似然函数本来以最大化为目标。但是,这次我想让它变成和回归的目标函数一样的最小化问题,所以加了负号。这样就可以 像处理回归一样处理它,所以只要加上正则化项就可以了。
反转符号是为了将最大化问题替换为最小化问题。
反转了符号之后,在更新参数时就要像回归一样,与微分的函数的符号反方向移动才行。
包含正则化项的表达式的微分
目标函数分成了 C(θ) 和 R(θ):
因为是加法,所以对各部分进行偏微分:
C(θ) 是原来的目标函数,讲解回归的时候我们已经求过它 的微分形式了:
所以接下来只要对正则化项进行微分就行了:
最终的微分结果就是这样:
剩下要做的就是把这个微分结果代入到参数更新表达式里去:
不过,我们之 前说过一般不对 θ0 应用正则化。R(θ) 对 θ0 微分的结果为 0,所 以 j = 0 时表达式的 λθj 就消失了。因此,实际上我们需 要像这样区分两种情况:
逻辑回归的流程也是一样的:
不过现在考虑的是最小化问题,所以要注意在前面加上负号:
最后得到:
刚才介绍的方法其实叫
L2 正则化
。
除 L2 正则化方法之外,还有
L1 正则化
方法,它的正则化项 R 是这样的:
L1 正则化的特征是被判定为不需要的参数会变为 0,从而减少变 量个数。
L2 正则化不会把参数变为 0。
刚才说过二次式变为 一次式的例子,用 L1 正则化就真的可以实现了。
L2 正则化会抑制参数,使变量的影响不会过大,而 L1 会直接去除不要的变量。
使用哪个正则化取决于要解决什么问题,不能一概而论。
4、学习曲线
欠拟合
前面我们聊了很多过拟合的话题,而反过来又有一种叫作欠拟合的状态,用英文说是 underfitting。在这种情况下模型的性能也会变差。
欠拟合是与过拟合相反的状态,所以它是没有拟合训练数据的状态。
比如用直线对图中这种拥有复杂边界线的数据进行分类的情况,无论怎样做都不能很好地分类,最终的精度会很差:
出现这种情况的主要原因就是模型相对于要解决的问题来说太简单了。
过拟合与欠拟合基本上是相反关系,原因不同,解决方案 也不同。
区分过拟合与欠拟合
只根据精度不能判断是哪种不好的拟合。
我们以数据的数量为横轴、以精度为纵轴,然后把用于训练的数据和用于测试的数据画成图来看一看就知道了:
这里我想说的就是如果模型过于简单,那么随着数据量的增加,误差也会一点点变大。换句话说就是精度会一点点下降。
用测试数据先评估根据 2 个训练数据训练好的模型,再评估根据 10 个训练数据训练好的模型,然后依次求出精度。
训练数据较少时训练好的模型难以预测未知的数据,所以精度很低;
反过来说,训练数据变多时,预测精度就会一点点地变高。
用图来展示就是这样的:
将两份数据的精度用图来展示后,如果是这种形状,就说明出现 了欠拟合的状态。
也有一种说法叫作
高偏差
,指的是一回事。
这是一种即使增加数据的数量,无论是使用训练数据还是测试数据,精度也都会很差的状态。
图中需要注意的点在这里:
该图为欠拟合:
而在过拟合的情况下,图是这样的,这也叫作
高方差
:
随着数据量的增加,使用训练数据时的精度一直很高,而使用测试数据时的精度一直没有上升到它的水准。 只对训练数据拟合得较好,这就是过拟合的特征。
像这样展示了数据数量和精度的图称为学习曲线。
通过学习曲线判断出是过拟合还是欠拟合之后,就可以采 取相应的对策以便改进模型了。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/873493?site
推荐阅读
article
9.
机器
学习
汇总
(
数据
、
模型
、
流程
、
心血管
疾病预测)...
机器
学习
汇总
(
数据
、
模型
、
流程)9.
机器
学习
汇总
(
数据
、
模型
、
流程
、
心血管
疾病预测) ...
赞
踩
article
用
turtle
库画
旋转
太极图
_
python
利用
turtle
库
绘制
图形并
旋转
...
之前写过一篇用Python的
turtle
库画
太极图
的文章,当时画出来的
太极图
是静态的,现在就想着能不能让太极转起来,废话...
赞
踩
article
头歌
实训
MySQL
数据库
-
连接
查询
_
头歌
第
1
关:内
连接
查询
...
头歌
实训
MySQL
数据库
-
连接
查询
_
头歌
第
1
关:内
连接
查询
头歌
第
1
关:内
连接
查询
头...
赞
踩
article
《
鞋匠
的
AI
之
旅》- 5.
Transformer
【中】
之
“
解码器
的
自
回归
”...
解码器
综合分析“编码器
的
输出”以及“模型已生成序列”两部分输入后进行下一个token
的
预测,这样不停
的
循环,直到预测任务...
赞
踩
article
数据结构
-
树
(
Tree
)
的
基本概念
_
数据结构
中
树
的
定义...
1.什么是
树
:
树
状图是一种
数据结构
,它是由n(n>=1)个有限节点组成一个具有层次关系
的
集合。把它叫做"
树
"是因为它看起...
赞
踩
article
Android
进阶之深入理解
ContentProvider
_
android
contentprovi...
1 介绍
ContentProvider
(内容提供者):为存储和获取数据提供统一的接口。使用ContentProvid...
赞
踩
article
宽客的福音—
QMT
,
策略
本地运行最安全的
量化
实盘
交易
软件_
qmt
下载
...
QMT
支持python模型和vba模型编写
策略
,支持极速回测,支持算法
交易
,支持历史数据和行情数据
下载
;开通
QMT
/PT...
赞
踩
article
Linux
服务器
为什么被黑?_
linux
能通过应用
漏洞
登录
到
服务器
吗...
安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折射出了很多安全问题,处理好信息安全问题已变得刻不容缓。因此...
赞
踩
article
一张照片,AI
生成
抽象画
(
CLIPasso
项目
安装
使用) | 机器学习_
抽象画
生成
...
最近看到一个比较有意思的
项目
,可以将照片
生成
对应的
抽象画
。AI帮你一键
生成
一张
抽象画
。_
抽象画
生成
抽象画
生成
...
赞
踩
article
DCMM
(
数据
管理
能力
成熟度
模型
)对企业的
价值
_“
数据
价值
模型
(dvm) ”...
综上所述,
DCMM
对企业的
价值
体现在多个方面,包括提升
数据
管理
能力
、实现
数据
资产
价值
最大化、加强
数据
安全和隐私保护、提升...
赞
踩
article
AIGC
浪潮下
,
鹅厂新一代
前端
人
的
真实
工作
感受_
aigc
前端
...
感兴趣
的
小伙伴
,
赠送全套
AIGC
学习资料
,
包含AI绘画、AI
人
工智能等前沿科技教程和软件工具
,
具体看这里。
AIGC
技术...
赞
踩
article
python
显示
图片
的方法_
python
显示
图片
...
1.import matplotlib.pyplot as pltplt.imshow(mat)plt.show()2....
赞
踩
article
linux
安装
jdk
教程
(手动
安装
/
yum
安装
) 保姆级
教程
_
linux
yum
安装
jdk
...
该
教程
包含了手动
安装
jdk
和自动
安装
教程
很详细......
_
linux
yum
安装
jdk
linux
yum
安装
jdk
...
赞
踩
article
谷粒
商城
项目(学习笔记十一)
_
谷粒
商城
catalogloader
文件
跳转
地址
改不掉
...
第八章:检索服务一、前端整合1.引入thymeleaf依赖
org.s...
赞
踩
article
数字
人
:
创建
空
骨骼
并
绑定
肢体动画_
数字
人
驱动
骨骼
节点
绑定
...
uinity
创建
一个空的gameobject 挂在一个自定义脚本AvatarCreator,AvatarCreator...
赞
踩
article
贪心
算法
总结
篇_
贪心
算法
难
吗...
周
总结
里会对每周的题目中大家的疑问、相关
难
点或者笔误之类的进行复盘和
总结
。如果大家发现文章哪里有问题,那么在周
总结
里或者...
赞
踩
article
【笔记】
Android
Studio
版本
信息_
android
studio
版本
...
Android
Studio
是开发
Android
应用的官方 IDE,包含构建
Android
应用所需的所有功能。...
赞
踩
article
Java
语言
生成
一个
图片
卡通人物
形象
,
呆萌
,
可爱
,
新颖(chatgtp3.5创作演示)_
java
如何
...
仔细阅读下面的程序代码
,
发现chatgpt直接给出了
一个
卡通人物
生成
器的代码
,
不过不能直接运行
,
给了
一个
大体的思路。使用...
赞
踩
article
【
Hot100
】
LeetCode
—
152
.
乘积
最大
子
数组
...
【代码】【
Hot100
】
LeetCode
—
152
.
乘积
最大
子
数组
。【
Hot100
】
LeetCode
—
152
.
乘积
最大
...
赞
踩
article
探索
字符
到
向量
的
魔法
:
Chars2Vec
深度解析与应用推荐...
探索
字符
到
向量
的
魔法
:
Chars2Vec
深度解析与应用推荐项目地址:https://gitcode.com/Intuit...
赞
踩
相关标签
机器学习
人工智能
python
算法
数据库
mysql
transformer
回归
embedding
神经网络
ai
数据结构
树
二叉树
树的存储
森林
安全
Linux服务器安全
计算机视觉
pytorch
大数据
DCMM
深圳DCMM
DCMM认证