机器学习—诊断偏差和方差

devtools/2024/11/20 13:54:55/

给定这个数据集,如果在上面画一条直线,它做得不太好,我们说这个算法有很高的偏差或者它不符合这个数据集,或者拟合一个四阶多项式,然后它有很高的方差,或者它太合身了,在中间,如果你拟合一个二次多项式,那看起来就很不错,这恰到好处因为这只是一个单一功能的问题,我们可以画出函数f,但如果你有更多的功能,你不能很容易地描绘出f并想象它做得很好,如果算法有高偏差或高方差,将是看看你的算法的性能,在训练集上,特别是在交叉验证集上。

先看一下左边的例子,如果你计算Jtrain算法在训练集上做得怎么样,这里的Jtrain比较高,因为在例子和模型的实际预测之间实际上有相当大的误差,Jcv也会很高,因为如果你有一些新的例子,也许像这样的例子是算法以前在这里没有看到的,该算法在以前从未见过的示例上也做得不太好,高偏差算法的一个特点是在训练中甚至做的不太好,所以当Jtrain很高时,这给了你一个强有力的迹象,表明这个算法有很高的偏差。

再看右边的例子,如果是Jtrain,这个在训练集上做的有多好,它在训练场上表现得很好,与训练数据非常吻合,所以这里的Jtrain会很低,但如果你用其他房子来评估这个模型,不在训练集里,然后你会发现Jcv交叉验证误差会很高,因此,算法具有高方差的特征签名或特征cu将是如果Jcv比Jtrain高得多,换句话说,它在看到的数据上比没有看到的数据上做的更好,这是一个很好的指标,表明你的算法有很高的方差,我们要做的是通过计算Jtrain和Jcv看看Jtrain是否高,或者如果Jcv比Jtrain高得多,即使你不能画出你的算法是否有很高的函数f,偏差或高方差。

最后是中间的例子,如果Jtrain比较低,因为它在训练场上表现得好,交叉验证集,你发现Jcv也很低,所以Jtrain不是太高,表明这没有高偏差问题Jcv不比Jtrain差多少,这表明它也没有高方差问题,对于这个应用程序来说,二次模型似乎是一个很好的模型。

分享另一种关于偏差和方差的观点,总结一下,当d=1的线性多项式,Jtrain很高,Jcv很高,当d=4时,Jtrain低,但是Jcv高,当d=2时,两者都很低,现在让我们对偏差和方差有不同的看法,所以画一个数字,这个图的横轴是多项式的度,我们正在拟合数据,左边对应d的一个小值,比如d=1,它对应于一条直线的拟合,在右边会相应地说d=4,甚至更高的d值都符合这个高阶多项式,所以如果你画Jtrain的WB,作为多项式次数的函数,你会发现,当你在这里拟合一个越来越高次的多项式时,假设我们没有使用正则化,但是当你拟合一个越来越高阶的多项式,训练误差会下降,因为你有一个非常简单的线性函数,它与训练数据不太吻合,当你拟合一个二次函数,或三阶多项式或四阶多项式,越来越符合训练数据,所以随着多项式次数的增加,Jtrain通常会在下一个。让我们看看Jcv这就是它在数据上做得有多好,因为它不适合,我们看到当d=1时,当多项式的次数很低时,Jcv很高,因为它不适合,所以它在交叉验证集上做的不好,右边也是,当多项式的次数非常大时,假设4在交叉验证集上也做的不好,因为它也很高,但如果d在两者之间,然后它实际上做得更好,所以如果你改变多项式的次数,你实际上会得到一个曲线,看起来像这样,他下降然后又上升,如果多项式的次数太低,它不适合,所以在交叉验证集上做的不好,如果太高,它过于适合,在交叉验证集上也做的不好,它过于适合,在交叉验证集上也做得不好,只有在中间的某个地方才是合适的,所以二阶多项式,示例最终得到了一个较低的交叉验证错误,既没有高偏差也没有高方差。

如何诊断学习算法中的偏差和方差?

如果你的学习算法有很高的偏差或不适合数据,关键指标将是Jtrain是否高,所以这对应于曲线的最左边部分,这就是Jtrain高的地方,通常有Jtrain,Jcv会很接近对方,如果有高方差,高差异的关键指标是如果Jcv比Jtrain大得多,在数学中,这个双大于号指的是大得多,最右边部分是Jcv比Jtrain大得多的地方,通常Jtrain会很低,但关键的指标是Jcv是否比Jtrain大得多,这就是发生的事情,当我们将一个非常高阶的多项式拟合到这个小数据集时,即使我们刚刚看到了偏差和方差,在某些情况下,同时具有高偏差和高方差是可能的,对于线性回归,不会看到这种情况发生这么多,但事实证明,如果你训练一个神经网络,在某些应用中,不幸的是,有高偏差和高方差,识别这种情况的一个方法是,如果Jtrain很高,所以在训练场上表现得不是很好,更糟糕的是,交叉验证误差再次比训练集大得多,高偏差和高方差的概念对于一个线性模型来说,这并不真正发生,但要给出它看起来像什么的直觉,就好像部分输入,你有一个非常复杂的模型,所以它超出了输入部分,但出于某种原因,其它部分的输入,甚至与训练数据不太吻合,在本例中,看上去像是人造的,因为它是一个单一的特征输入,很适合训练,我们过度适应了部分输入,我们甚至不能很好的拟合训练数据,我们不适合输入的部分,这就是为什么在一些应用程序中可能会得到高偏差或高方差,如果算法在训练集上表现不佳,这将是一个指标,它甚至比在训练场上做的更糟,对于大多数学习应用程序,可能主要有一个高偏差或高方差问题而不是同时两者,有时两者同时存在是可能的,高偏见意味着甚至在训练场上都做的不好,高方差均值在交叉验证集上比训练集差得多。


http://www.ppmy.cn/devtools/135492.html

相关文章

【金融风控项目-07】:业务规则挖掘案例

文章目录 1.规则挖掘简介2 规则挖掘案例2.1 案例背景2.2 规则挖掘流程2.3 特征衍生2.4 训练决策树模型2.5 利用结果划分分组 1.规则挖掘简介 两种常见的风险规避手段: AI模型规则 如何使用规则进行风控 **使用一系列逻辑判断(以往从职人员的经验)**对客户群体进行区…

Uniapp 引入 Android aar 包 和 Android 离线打包

需求: 原生安卓 apk 要求嵌入到 uniapp 中,并通过 uniapp 前端调起 app 的相关组件。 下面手把手教你,从 apk 到 aar,以及打包冲突到如何运行,期间我所遇到的问题都会 一 一 进行说明,相关版本以我文章内为…

【学习心得】算力云平台上的大模型部署并实现远程调用

以AutoDL算力云平台为例,部署国产开源ChatGLM3b模型。 一、准备工作 (1)准备一台算力服务器 首先,进入AutoDL官网的算力时长选择算力服务器资源。 创建好后会自动跳转控制台的“容器实例”界面,稍等片刻后选择“快捷…

全面击破工程级复杂缓存难题

目录 一、走进业务中的缓存 (一)本地缓存 (二)分布式缓存 二、缓存更新模式分析 (一)Cache Aside Pattern(旁路缓存模式) 读操作流程 写操作流程 流程问题思考 问题1&#…

matlab建模入门指导

本文以水池中鸡蛋温度随时间的变化为切入点,对其进行数学建模并进行MATLAB求解,以更为通俗地进行数学建模问题入门指导。 一、问题简述 一个煮熟的鸡蛋有98摄氏度,将它放在18摄氏度的水池中,五分钟后鸡蛋的温度为38摄氏度&#x…

vue2 + iview(view-design) 中封装使用 vxe-table 处理表格渲染大量数据卡顿现象

今天遇到需求,iview组件分页每页100页时候页面卡顿现象严重,改造为使用vxe-table cell-mouseenter"handleCellMouseEnter" cell-mouseleave"handleCellMouseLeave" 这两个用来处理vxe-table 内容过多鼠标悬浮上去滚动 tooltip直接…

【Unity基础】对比Unity中两种粒子系统

在Unity中,Particle System和Visual Effect Graph (VFX) 都是用于创建粒子效果的工具,但它们的设计目标、使用场景和功能特点有所不同。以下是详细对比: 1. Particle System 特点 传统粒子系统,Unity自带的模块化粒子特效工具。…

基于 PyTorch 从零手搓一个GPT Transformer 对话大模型

一、从零手实现 GPT Transformer 模型架构 近年来,大模型的发展势头迅猛,成为了人工智能领域的研究热点。大模型以其强大的语言理解和生成能力,在自然语言处理、机器翻译、文本生成等多个领域取得了显著的成果。但这些都离不开其背后的核心架…