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

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

用一个四阶多项式,要用正则化拟合这个模型,这里的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.mzph.cn/pingmian/60890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Node.js中如何使用TypeScript

第一步:创建一个Node.js项目的package.json文件 npm init -y第二步:添加TypeScript、添加node.d.ts npm install typescript -D npm install types/node -D第三步:初始化一个tsconfig.json文件 npx tsc --init --rootDir src --outDir lib…

零基础Java第十九期:认识String(一)

目录 一、String的重要性 二、String的常用方法 2.1. 字符串构造 2.2. String对象的比较 2.3. 字符串查找 2.4. 转化 2.4. 字符串替换 2.5. 字符串拆分 2.6. 字符串截取 一、String的重要性 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能…

面试经典 150 题:20、2、228、122

20. 有效的括号 参考代码 #include <stack>class Solution { public:bool isValid(string s) {if(s.size() < 2){ //特判&#xff1a;空字符串和一个字符的情况return false;}bool flag true;stack<char> st; //栈for(int i0; i<s.size(); i){if(s[i] ( |…

【SpringBoot】公共字段自动填充

问题引入 JavaEE开发的时候&#xff0c;新增字段&#xff0c;修改字段大都会涉及到创建时间(createTime)&#xff0c;更改时间(updateTime)&#xff0c;创建人(craeteUser)&#xff0c;更改人(updateUser)&#xff0c;如果每次都要自己去setter()&#xff0c;会比较麻烦&#…

深度学习-卷积神经网络CNN

案例-图像分类 网络结构: 卷积BN激活池化 数据集介绍 CIFAR-10数据集5万张训练图像、1万张测试图像、10个类别、每个类别有6k个图像&#xff0c;图像大小32323。下图列举了10个类&#xff0c;每一类随机展示了10张图片&#xff1a; 特征图计算 在卷积层和池化层结束后, 将特征…

stm32——通用定时器时钟知识点

&#xff08;该图来自小破站 铁头山羊老师的stm32标准库教学&#xff09;

SobarQube实现PDF报告导出

文章目录 前言一、插件配置二、使用步骤1.新生成一个Token2.将拷贝的Token加到上文中执行的命令中3.查看报告 三、友情提示总结 前言 这篇博文是承接此文 .Net项目在Windows中使用sonarqube进行代码质量扫描的详细操作配置 描述如何导出PDF报告 众所周知&#xff0c;导出PDF功…

【数据结构】10.线索二叉树

一、线索二叉树的产生 采用先序、中序、后序三种方法遍历二叉树后都可以得到一个线性序列&#xff0c;序列上的每一个结点&#xff08;除了第一个和最后一个&#xff09;都有一个前驱和一个后继&#xff0c;但是&#xff0c;这个线性序列只是逻辑的概念&#xff0c;不是物理结…

如何合理设计一套springcloud+springboot项目中的各个微服务模块之间的继承关系的最优方案

文章目录 一、模块化设计所遵循的原则二、项目架构设计三、各个模块作用说明3.1 core 模块3.2 common 模块3.3 generatorcode模块3.4 business 模块3.5 web 模块3.6 admin 模块3.7 父pom 四、采用import引入SpringBoot 在springcloud微服务项目中经常用到多模块化的架构设计&am…

HarmonyOS4+NEXT星河版入门与项目实战--------开发工具与环境准备

文章目录 1、熟悉鸿蒙官网1、打开官网2、下载 DevEco Studio3、HarmonyOS 资源库4、开发指南与API 2、安装 DevEco Studio1、软件安装2、配置开发工具 1、熟悉鸿蒙官网 1、打开官网 百度搜索 鸿蒙开发者官网 点击进入开发者官网&#xff0c;点击开发&#xff0c;可以看到各种…

单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)

目录 1.单元测试 实现单元测试的方法&#xff1a; 注意事项&#xff1a; 2.集成测试 需注意事项&#xff1a; 实现集成测试的方法&#xff1a; 如何实现高效且可靠的集成测试&#xff1a; 3.系统测试 实现系统测试的方法: 须知注意事项&#xff1a; 4.验收测试 实现验…

Ubuntu24 上安装搜狗输入法

link 首先在终端中依次输入以下代码 sudo apt update sudo apt install fcitx 找到语言支持 在终端中依次输入 sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ sudo apt purge ibus 进入网页 搜狗输入法linux-首页​ shurufa.sogou.com/linux 找到刚才下…

FairyGUI和Unity联动(入门篇)

一、FairyGUI编辑器中 1.新建按钮、新建组件 编辑器中界面简易设计如下 2.文件-发布设置-发布路径&#xff1a;自己unity项目Resources所在的路径 二、Unity 使用代码展示UI using FairyGUI; using System.Collections; using System.Collections.Generic; using UnityEngi…

【Java知识】Java性能测试工具JMeter

一文带你了解什么是JMeter 概述JMeter的主要功能&#xff1a;JMeter的工作原理&#xff1a;JMeter的应用场景&#xff1a;JMeter的组件介绍&#xff1a; 实践说明JMeter实践基本步骤&#xff1a;JMeter实践关键点&#xff1a; JMeter支持哪些参数化技术&#xff1f;常见插件及其…

Redis的缓存穿透、缓存雪崩、缓存击穿问题及有效解决方案

目录 一、缓存穿透 1.简介 2.解决方案 3.修改前的代码 4.修改过后的代码 二、缓存雪崩 1.简介 2.解决方案 三、缓存击穿 1.简介 2.解决方案 3.用代码来实现互斥锁来解决缓存击穿 4.用代码来实现逻辑过期解决缓存击穿 四、缓存穿透和缓存击穿的区别 一、缓存穿透 …

CPU的性能指标总结(学习笔记)

CPU 性能指标 我们先来回顾下&#xff0c;描述 CPU 的性能指标都有哪些。 首先&#xff0c;最容易想到的应该是 CPU 使用率&#xff0c;这也是实际环境中最常见的一个性能指标。 用户 CPU 使用率&#xff0c;包括用户态 CPU 使用率&#xff08;user&#xff09;和低优先级用…

【go从零单排】Environment Variables环境变量

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;环境变量是用于配置程序行为的一种常见方式。它们可以用…

信捷PLC转以太网连接电脑方法

信捷XC/XD/XL等系列PLC如何上下载程序?可以选择用捷米特JM-ETH-XJ模块轻松搞定,并不需要编程&#xff0c;即插即用&#xff0c;具体看见以下介绍&#xff1a; 产品介绍 捷米特JM-ETH-XJ是专门为信捷PLC转以太网通讯面设计&#xff0c;可实现工厂设备信息化需求&#xff0c;对…

【golang-技巧】-线上死锁问题排查-by pprof

1.背景 由于目前项目使用 cgo golang 本地不能debug, 发生死锁问题&#xff0c;程序运行和期待不一致&#xff0c;通过日志排查可以大概率找到 阻塞范围&#xff0c;但是不能找到具体问题在哪里&#xff0c;同时服务器 通过k8s daemonset 部署没有更好的方式暴露端口 获取ppr…

AVL树的删除方法简单实现

看过前面的AVL树的介绍和插入方法实现AVL树了解并简单实现-CSDN博客&#xff0c;接着可以来学习删除方法的实现 目录 1.AVL树的删除 2.平衡因子调节 3.删除代码逻辑 4.AVL树的整体代码 1.AVL树的删除 因为AVL树也是二叉搜索树&#xff0c;可按照二叉搜索树的方式将节点删除…