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

embedded/2024/11/17 4:38:57/

给定这个数据集,如果在上面画一条直线,它做得不太好,我们说这个算法有很高的偏差或者它不符合这个数据集,或者拟合一个四阶多项式,然后它有很高的方差,或者它太合身了,在中间,如果你拟合一个二次多项式,那看起来就很不错,这恰到好处因为这只是一个单一功能的问题,我们可以画出函数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/embedded/138172.html

相关文章

【C++】string模拟实现

各位读者老爷好,俺最近在学习string的一些知识。为了更好的了解string的结构,俺模拟实现了一个丐版string,有兴趣的老爷不妨垂阅!!! 目录 1.string类的定义 2.模拟实现成员函数接口 2.1.constructor&am…

深度学习神经网络在机器人领域应用的深度剖析:原理、实践与前沿探索

深度学习神经网络在机器人领域的应用非常广泛,以下是详细介绍: 主要应用方向 环境感知与识别: 物体识别与分类:机器人利用深度学习神经网络能够准确识别周围环境中的各种物体,比如区分不同形状、颜色、材质的物品&…

梧桐数据库分区表提高查询效率的策略分析

梧桐数据库分区表提高查询效率的策略分析 概述 在大数据时代,数据库的性能优化成为了一个重要议题。分区表作为一种有效的数据库优化手段,通过将大型表分割成多个小的、可管理的分区,可以显著提高查询效率和数据管理的便利性。本文将详细探…

设备接入到NVR管理平台EasyNVR多品牌NVR管理工具/设备的音视频配置参考

NVR管理平台EasyNVR是一款功能强大的安防视频监控平台,能够轻松实现视频流的导入、录像、存储和回放等功能。在将设备接入到海康NVR管理平台EasyNVR时,视音频配置是确保视频监控效果的重要步骤。本文将详细介绍如何将设备接入到EasyNVR平台,并…

【364】基于springboot的高校科研信息管理系统

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

MongoDB创建联合唯一性约束

在数据库中创建联合唯一性约束通常是在数据库模式定义时完成的。以下是如何在MongoDB中使用Mongoose(一个用于在Node.js环境中操作MongoDB的库)来定义具有联合唯一性约束的schema。 1.简单设置联合唯一性约束: id: { //id type: String, requ…

Shell基础2

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

【从零开始的LeetCode-算法】3300. 替换为数位和以后的最小元素

给你一个整数数组 nums 。 请你将 nums 中每一个元素都替换为它的各个数位之 和 。 请你返回替换所有元素以后 nums 中的 最小 元素。 示例 1: 输入:nums [10,12,13,14] 输出:1 解释:nums 替换后变为 [1, 3, 4, 5] &#xff0…