Regression 2

article/2025/10/1 15:41:05

一、Where does the error come from?[error due to bias and variance]

在这里插入图片描述
我们将寻找function看作是在打靶,靶的正中心为 f ^ \hat{f} f^,每次collect data训练出来的 f ∗ f^{*} f为打在靶上面的点
Variance取决于model的复杂程度和data的数量,而bias只取决于model的复杂成度
在这里插入图片描述一个较为简单的model,都是有比较小的Variance和比较大的bias,相当于 f ∗ f^{*} f相对集中,但是他们平均起来距离 f ^ \hat{f} f^较远。
一个复杂的model,都有着比较大的Variance和比较小的bias,相当于 f ∗ f^{*} f相对分布的比较分散,但是他们平均起来距离 f ^ \hat{f} f^较近

在这里插入图片描述若实际中error主要来源于variance很大,此时为overfitting
若实际中error主要来源于bias很大,此时为underfitting

Notes:如何判断bias大和variance大呢?

1、如果model无法fit training data的examples(training data上面的error较大),此时bais较大,为underfitting。
2、如果model可以fit training data,但是在testing data上面得到很大的error,此时variance较大,为overfitting。

二、How to solve?

1、当我们遇到bias比较大时:

在这里插入图片描述如果bias较大,则代表现在的model中根本就没有包含target, f ^ \hat{f} f^根本就不存在我们的function set中(model不好),所以此时我们就算再collect more data都毫无意义
解决方案:redsign,重新对model进行设计(增加更多的feature作为model的input或者让model变得更加复杂)

2、当我们遇到Variance较大时:

在这里插入图片描述解决的方案:
1、collect more datas(这是一个非常有效的手段,因为这个不会伤害我们的bias)
但是在很多情况下,我们是无法收集更多的数据,此时可以使用一些手段,generate更多“假“datas
2、Regularization(正则化)

在这里插入图片描述
1、蓝色区域为刚开始的情况,model较复杂function set的空间较大(包括了target)因为data不多,variance较大, f ∗ f^{*} f较分散。
2、红色的区域为regularization之后,此时function set 的space减小,variance减小,但是在这一缩小的过程中,space也未必能包括target,因此这时候bias还是有可能增大的
通过可视化regularization的过程我们可以发现,我们需要在减小variance的同时,让它包括target,要做到bias和variance相平衡。

三、Model Selection(public set上的error才能真正反映在private set 上的error)

在这里插入图片描述
我们可以将training data分成training set和validation set(验证集),先在training set上找出每个model最好的function f ∗ f^{*} f,然后用validation set上的data去choose model。得到public set上的error时(可能会很大),不建议回过头去重新调整model的参数。(如果这么做就会把public set的bias也一起考虑进去了)
在这里插入图片描述若少去根据public training set上的error去调整model这个过程的话,在private testing set上得到的error往往是很接近public testing set 的error。

四、conclusion

1、⼀般来说,error是bias和variance共同作用的结果

2、model比较简单和比较复杂的情况:

当model比较简单的时候,variance比较小,bias比较大,此时会比较集中,但是function set可能并没有包含真实值 ;此时model受bias影响较大当model比较复杂的时候,bias比较小,variance比较大,此时function set会包含真实值 ,但是会比较分散;此时model受variance影响较大

3、区分bias大 or variance大的情况:

如果连采样的样本点都没有大部分在model训练出来的上,说明这个model太简单,bias比较大,是欠拟合。如果样本点基本都在model训练出来的上,但是testing data上测试得到的error很大,说明这个model太复杂,variance比较大,是过拟合

4、bias大 or variance大的情况下该如何处理:

当bias比较大时,需要做的是重新设计model,包括考虑添加新的input变量,考虑给model添加高次项;然后对每⼀个model对应的 计算出error,选择error值最小的model(随model变复杂,bias会减小,variance会增加,因此这里分别计算error,取两者平衡点) 当variance比较大时,⼀个很好的办法是增加data(可以凭借经验自己generate data),当data数量足够时,得到的实际上是比较集中的;如果现实中没有办法collect更多的data,那么就采用regularization正规化的方法,以曲线的平滑度为条件控制function set的范围,用weight控制平滑度阈值,使得最终的model既包含 f ^ \hat{f} f^ ,variance又不会太大

5、如何选择model

选择model的时候呢,我们手头上的testing data与真实的testing data之间是存在偏差的,因此我 们要将training data分成training set和validation set两部分,经过validation挑选出来的model再用全部的training data训练⼀遍参数,最后⽤testing data去测试error,这样得到的error是模拟 过testing bias的error,与实际情况下的error会⽐较符合

★ Gradient Desent算法:

一、概念

在Gradient Desent中:梯度不一定是递减的,但总沿着梯度下降的方向,LOSS一定在减小,当gradient=0时,LOSS下降到局部最小值。
在这里插入图片描述
θ ∗ = arg ⁡ min ⁡ θ L ( θ ) \theta^{*}=\arg \min _{\theta} L(\theta) θ=argminθL(θ) [L: loss function θ \theta θ: paramers] (上表为第几组,下标为这组参数的第几个)
Suppose that θ \theta θ has two variables { θ 1 , θ 2 } \left\{\theta_{1}, \theta_{2}\right\} {θ1,θ2}(假设 θ \theta θ是参数的集合)
Randomly start at θ 0 = [ θ 1 0 θ 2 0 ] \theta^{0}=\left[\begin{array}{l}\theta_{1}^{0} \\ \theta_{2}^{0}\end{array}\right] θ0=[θ10θ20] (随机选取一组参数)

gradient: ∇ L ( θ ) = [ ∂ L ( θ 1 ) / ∂ θ 1 ∂ L ( θ 2 ) / ∂ θ 2 ] \nabla L(\theta)=\left[\begin{array}{l}\partial L\left(\theta_{1}\right) / \partial \theta_{1} \\ \partial L_{\left(\theta_{2}\right)} / \partial \theta_{2}\end{array}\right] L(θ)=[L(θ1)/θ1L(θ2)/θ2]

[ θ 1 1 θ 2 1 ] = [ θ 1 0 θ 2 0 ] − h [ ∂ L 1 θ 1 0 ) / ∂ θ 1 ∂ L 1 θ 2 0 ) / ∂ θ 2 ] \left[\begin{array}{l}\theta_{1}^{1} \\ \theta_{2}^{1}\end{array}\right]=\left[\begin{array}{l}\theta_{1}^{0} \\ \theta_{2}^{0}\end{array}\right]-h\left[\begin{array}{l} \left.\partial L_{1} \theta_{1}^{0}\right) / \partial \theta_{1} \\ \left.\partial L_{1} \theta_{2}^{0}\right) / \partial \theta_{2}\end{array}\right] [θ11θ21]=[θ10θ20]h[L1θ10)/θ1L1θ20)/θ2]

[ θ 1 2 θ 2 2 ] = [ θ 1 1 θ 2 1 ] − η [ ∂ L ( θ 1 1 ) / ∂ θ 1 ∂ L ( θ 2 1 ) / ∂ θ 2 ] \left[\begin{array}{c}\theta_{1}^{2} \\ \theta_{2}^{2}\end{array}\right]=\left[\begin{array}{c}\theta_{1}^{1} \\ \theta_{2}^{1}\end{array}\right]-\eta\left[\begin{array}{l}\partial L\left(\theta_{1}^{1}\right) / \partial \theta_{1} \\ \partial L\left(\theta_{2}^{1}\right) / \partial \theta_{2}\end{array}\right] [θ12θ22]=[θ11θ21]η[L(θ11)/θ1L(θ21)/θ2]

二、Learning Rate存在的一些问题

在这里插入图片描述

gradient descent过程中,影响结果的一个很关键的因素就是learning rate的大小

1、如果learning rate刚刚好,就可以像上图中红色线段一样顺利地到达到loss的最小值
2、如果learning rate太小的话,像下图中的蓝色线段,虽然最后能够走到local minimal的地方,但是它可能会走的非常慢,以至于你无法接受
3、如果learning rate太大,像下图中的绿色线段,它的步伐太大了,它永远没有办法走到特别低的地方,可能永远在这个“山谷”的口上振荡而无法走下去
4、如果learning rate非常大,就会像下图中的黄色线段,一瞬间就飞出去了,结果会造成update参数以后,loss反而会越来越大。

面对这个问题,我们需要在不同learning rate下,把loss随着update的次数的变化可视化,根据可视化图像,对learning rate进行调整,找到最合适的learning rate。

三、Adagrad Learning Rates(Adagrad算法)

基本原则:Learning rate通常随着参数的update越来越小。
请添加图片描述
请添加图片描述

四、Stochastic Gradient Desent(随机梯度下降算法)请添加图片描述

五、Feature Scaling(特征缩放)

请添加图片描述

六、Gradient Descent的限制

在这里插入图片描述
综上,gradient descent的限制是,它在gradient即微分值接近于0的地方就会停下来,而这个地方不一定是global minima,它可能是local minima,可能是saddle point鞍点,甚⾄可能是⼀个loss很高的plateau平缓高原


http://chatgpt.dhexx.cn/article/tJp6ilOL.shtml

相关文章

注意:Classifier和Regressor的score函数,是不同的!

下面以sklearn的KNeighbors模型举例: 1.对于分类(Classifier)模型,score函数计算的是精确度。底层是accuracy_score http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html#skle…

3.Regression(二)

总结自:机器学习(李宏毅,台湾大学) 上一篇文章中,我们选用的model是 y b w ∙ x c p ybw \bullet x_{cp} ybw∙xcp​,可以选用其它的model吗?我们选用的loss function是 L ( f ) ∑ ( ( y ^ …

Regularization(正则化)

前言 这一章还是紧接着上一章的,在上一章我们讨论了logistic regrsssion(逻辑回归),在更早我们还讨论了linear regression(线性回归),对于这两种问题,我们在进行用函数去预测结果时,我们根据已知的数据集去推测一个函数…

Linear Regression Logistic Regression

Linear Regression & Logistic Regression Keywords List keywords you may encounter when exploring LR(Logistic Regression), or a bigger concept – ML(machine learining): 监督学习 损失函数 梯度下降 学习率 激活函数 神经网络 Let’s kick off wi…

RandomForestClassifier/Regressor

1.集成算法(ensemble ) 1.集成评估器 bagging多个相互独立的评估器,对其预测进行平均或多数表决原则来决定评估器的结果boosting基评估器相关,按顺序一一构建,结合若评估器构成强评估器 2.RandomForestClasifier 1.决策…

Regression 回归

李宏毅老师机器学习课程笔记——Regression 回归 一、理论 问题:已知一批宝可梦样本进化前的特征值x_cp, x_s, x_np, x_w, x_n,预测宝可梦升级后的CP值。模型的目标就是找到一个最合适的函数F(X)Y: 特征条件X包括{x_cp, x_s, x_np, x_w, x_…

线性回归正则化 regularized linear regression

线性回归正则化regularized linear regression 在前几篇博客中介绍了一元线性回归http://blog.csdn.net/u012328159/article/details/50994095和多元线性回归http://blog.csdn.net/u012328159/article/details/51029695等线性回归的知识,具体请参见本人其他博客。但…

# Logistics Regression

目录 一 logistics regression 1 一点介绍 2 评价 3 一点应用 4 代码流程 5 上代码!!! 一 logistics regression 1 一点介绍 逻辑回归是一个分类模型,其突出特点即 模型简单、可解释性强 2 评价 优点 实现简单&#xff0…

Python-Regression

本文归纳整理了线性回归(LinearRegression)、岭回归(Ridge)、Lasso回归(Lasso)、弹性网(ElasticNet)、K近邻、SVM等10多种机器学习模块sklearn中回归算法调用及实现过程,…

大数据挖掘永恒的定律?符号回归(Symbolic Regressor)

大数据挖掘永恒的定律?符号回归(Symbolic Regressor) 符号回归简介 符号回归是一种机器学习技术,旨在识别一个潜在的数学表达式。它首先建立一个朴素随机公式的总体来表示已知自变量和它们的因变量目标之间的关系,以预测新数据。每一个连续的…

Regression

//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io 今天主要讲的是Regression。会通过一…

从零接入微信公众号(Java实现 附源码)

目录 从零接入微信公众号 一、微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二、测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三、微信公众号网页授权 1.网页授权原理 2.代码实现 1)NetUtil.java 2)Oauth2Token.java 3)WxUserDO.java…

前后端分别部署教程 ---- 第三部分项目部署和挂载到微信公众号

3. 前端 这里介绍的是idea开发工具下的项目打包 3.1 项目打包 一定要在指定项目路径下打开 Terminal,不然会打错项目的包. 右击项目名称,然后点击 Open in Terminal: 在下面的 Terminal窗口中, 输入打包命令: npm …

springboot+h5页面+微信公众号获取微信用户信息

springboot项目,h5页面通过微信公众号获取微信用户信息 最近本人有一个项目需求,微信公众号里点击一个菜单进入一个商城购物系统。 对于在微信公众号还是小白的我来说难度有点大,但是做完后发现也就这样,用多了就熟悉了。下面记录…

【公众号】微信进入公众号链接自动获取授权登陆

文章目录 前言一、准备二、开发2.1 搭建项目2.2 WeixinUtil 工具2.3 回调接口与登陆接口2.4 过滤器自动登陆2.4 其他类2.5 测试 三、总结 前言 最近项目上有一个需求,用户反映每次从微信打开链接都需要手动登陆,比较繁琐,想点开微信连接后自…

java向微信公众号---发送模板和图文消息

微信公众号初次开发 其他操作 项目搭建mavenapplication.ymlyml参数配置微信客户端配置 搭建完成 实现业务模板消息推送准备工作模板消息填写要求图文消息填写要求 推送模板消息推送模板消息结果——效果 推送图文消息推送图文消息工具类问题和结果 获取关注的用户openId既然有…

微信公众号接入天行机器人案例和方法

首先使用的是天行机器人: 1、接入基本原理: https://www.tianapi.com/apiview/47 申请完成后的结果如下 调用对应的接口的参数如下: http://api.tianapi.com/txapi/robot/index?keyae5e9a72c8d4cb1f5e096f7bb4daf1f3&questionrobot…

微信公众号的端口映射及服务开发

一. 开发准备 微信公众号申请---->实名认证---->服务器开发---->绑定服务器 PS: 这里有一点需要注意的就是, 微信开发必须是80端口或者443端口, 如果我们有云服务器主机一切都好办. 但是如果没有我们还有几个备选方案: 1. 花生壳 , net123 : 这两个都需要实名认证(…

[JAVA实现]微信公众号网页授权登录,java开发面试笔试题

我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。 扫描二维码或搜索下图红色VX号,加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。 推荐文章:Java 面试知识点解析;Mysql优化技巧…

后端操作微信公众号

一、功能说明 员工端使用微信公众号完成审批操作,涉及到的功能包含:自定义菜单、授权登录、消息 1、微信公众号一级菜单为:审批列表、审批中心、我的 2、员工关注公众号,员工第一次登录微信公众号,通过微信授权登录进行…