当前位置: 首页 > article >正文

机器学习—正则化和偏差或方差

正则化参数的选择对偏差和方差的影响

用一个四阶多项式,要用正则化拟合这个模型,这里的lambda的值是正则化参数,它控制着你交易的金额,保持参数w与训练数据拟合,从将lambda设置为非常大的值的示例开始,例如,lambda=10000,如果这样做,你最终会安装一个大致像这样的模型,因为lambda非常大,然后算法被高度激励以保持这些参数w非常小,所以你最终得到W1,W2,实际上,所有这些参数都非常接近于零,所以这个模型的结果是f(x)近似为一个常数,这就是为什么最终会有这样一个模型,这个模型显然有很高的偏差它不符合训练数据因为它在训练场上表现都不好而且Jtrain很大,来看一下另一个极端,假设你设定了lambda是一个非常小的值,所以用一个很小的值,把lambda设置为零的极端,选择lambda,没有正规化,所以我们只是拟合了一个四次多项式,没有正规化,最终看到的就是蓝色的曲线,太符合数据了,所以我们之前看到的是当你有一个这样的模型,Jtrain很小,但是Jcv比Jtrain大得多,这表明我们有很高的方差,它超过了这个数据,如果有一个lambda中间值,不是很大,看起来的模型就会恰到好处,与数据很吻合,Jtrain和Jcv都很小,所以如果你试图决定lambda的什么值用于正规化,参数交叉验证也为你提供了一种方法。

如果你拟合一个四阶多项式,这就是模型,你使用正则化,怎样才能选择一个好的值lambda?

这将是一个程序,类似于你所看到的选择多项式d的次数,专门使用交叉验证,假设我们试图用lambda=0拟合一个数据,所以用lambda=0最小化成本函数,最后得到一些参数,然后可以计算交叉验证错误,现在尝试一个不同的值,假设lambda=0.01,最小化成本函数会给你第二组参数,还可以看到它在交叉验证集上做得有多好,继续尝试lambda的其他值,以此类推,通过尝试lambda拟合参数的一个大范围的可能值,使用这些不同的调节函数,然后在交叉验证集上评估性能,然后,可以尝试选择正则化参数的最佳值,具体而言,如果在这个例子中,如果发现B5值最低,所以就用W5B5作为选择参数,最后,如果你想报告广义误差的估计,然后,你将报告W5B5的测试集错误j测试。

为了进一步了解这个算法在做什么,让我们来看看训练错误和交叉验证错误是如何变化的?

作为参数lambda的函数,在这个图中,又改变了x轴,改为正则化参数lambda值。看左边lambda=0的极值,这对应于不使用任何正则化,如果lambda很小或者为0,我们以这个非常摆动的曲线结束的地方,在这种情况下,我们有一个高方差模型,所以Jtrain会很小,Jcv会很大,因为它在训练数据上做得很好,但在交叉验证数据上做得更糟,右边这个极值有非常大的lambda值,假设lambda=10000,最后把一个看起来像那样的模型,所以这个有很高的偏差,它与数据不符,结果是Jtrain会很高,Jcv也会很高,实际上如果你看Jtrain是如何随着lambda函数变化的,你会发现Jtrain会这样上去,因为在优化费用函数中,较大的lambda算法越是试图保持w的平方越小,那就是给予这个正则化术语的权重就越大,而左边的项是Jtrain,所以更多的是试图保持参数较小,它在最大限度地减少训练错误方面做得越差,所以只要增加训练误差,Jtrain会像现在这样增加,结果交叉验证错误是这样的(绿线),因为我们已经看到,如果lambda太大或太小,那么它在交叉验证集上做得不好,它要么在左边合适,或者在右边,会有一些lambda的中间值,使算法执行的更好,交叉验证所做的是尝试很多不同的lambda值,并评估交叉验证误差在许多这些不同的点,然后希望选择一个交叉验证误差低的值,这将会为应用程序提供一个良好的模型。其中横轴是多项式的度,这两个图看起来有点不符合数学,也不是以任何正式的方式,这是因为当你拟合一个多项式的度数时,这条曲线的左边对应于过拟合和高偏差,右部分对应欠拟合和高方差,左边是高方差,右边是高偏差。


http://www.kler.cn/a/403630.html

相关文章:

  • shell脚本(五)
  • 【海思Hi3519DV500】双目网络相机套板硬件规划方案
  • 向量数据库FAISS之四:向量检索和 FAISS
  • 深入理解TensorFlow中的形状处理函数
  • 【数据结构】【线性表】【练习】反转链表
  • Linux(命令行扩展+命令行历史 大白话+图片)
  • 网络安全知识点
  • 网络安全服务(Network Security Services, NSS)
  • 重构代码之内联类
  • uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)
  • Selenium + 数据驱动测试:从入门到实战!
  • Chapter 2 - 16. Understanding Congestion in Fibre Channel Fabrics
  • R语言4.3.0安装教程【附安装包】
  • MySql 日期周处理方式
  • Vue3,将普通的组合式API转换为<script setup>形式
  • 树莓派开发扩展十二 -C#编写客户端控制小车 Xamarin.Forms
  • -bash: ./kafka-topics.sh: No such file or directory--解决方案
  • unittest和pytest
  • 摄像机ISP和DSP的区别?
  • PostgreSQL 单机与集群部署详细教程
  • 基于YOLOv8深度学习的医学影像肝脏肿瘤病症检测与诊断系统(PyQt5界面+数据集+训练代码)
  • HarmonyOS4+NEXT星河版入门与项目实战------Button组件
  • centos7 如何卸载和安装达梦数据库实例
  • Java项目实战II基于Spring Boot的社区医疗综合服务平台的设计与实现(开发文档+数据库+源码)
  • PostgreSQL TRUNCATE TABLE
  • 自然语言处理(NLP):让机器理解人类语言