3.Regression(二)

article/2025/10/1 15:38:28

总结自:机器学习(李宏毅,台湾大学)

上一篇文章中,我们选用的model是 y = b + w ∙ x c p y=b+w \bullet x_{cp} y=b+wxcp,可以选用其它的model吗?我们选用的loss function是 L ( f ) = ∑ ( ( y ^ ) n − y n ) 2 L(f)=\sum((\hat{y})^n - y^n)^2 L(f)=((y^)nyn)2,可以选用其它的loss function来计算函数的优度吗。如果我们选用其它的model,选用其它的loss function,预测结果是会更好还是更坏呢?

1. Model Selection

1. 越复杂的model越好?

前文提到,我们选择的model是 y = b + w ∙ x c p y=b+w \bullet x_{cp} y=b+wxcp ,最后挑选出来的函数 f ∗ f^* f 计算得出的Training Error 是31.9,而Testing Error是35.0。接下来我们思考,如果选用的model是 y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2 y=b+w1xcp+w2(xcp)2 或者更复杂的model呢?

我们选择以下5个model:

  1. y = b + w ∙ x c p y=b+w \bullet x_{cp} y=b+wxcp
  2. y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2 y=b+w1xcp+w2(xcp)2
  3. y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 + w 3 ∙ ( x c p ) 3 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2+w_3 \bullet (x_{cp})^3 y=b+w1xcp+w2(xcp)2+w3(xcp)3
  4. y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 + w 3 ∙ ( x c p ) 3 + w 4 ∙ ( x c p ) 4 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2+w_3 \bullet (x_{cp})^3 + w_4 \bullet (x_{cp})^4 y=b+w1xcp+w2(xcp)2+w3(xcp)3+w4(xcp)4
  5. y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 + w 3 ∙ ( x c p ) 3 + w 4 ∙ ( x c p ) 4 + w 5 ∙ ( x c p ) 5 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2+w_3 \bullet (x_{cp})^3 + w_4 \bullet (x_{cp})^4 + w_5 \bullet (x_{cp})^5 y=b+w1xcp+w2(xcp)2+w3(xcp)3+w4(xcp)4+w5(xcp)5

这5个Model在Training Data上的表现如下:
不同Model在Training Data上的Average Error
我们可以看到越复杂的model在Training Data上的表现越好1,因为上述复杂的model其中就包含简单的model2
然而,我们关心的并不是函数在Training Data上的表现,我们更关心函数在新的数据Testing Data上面的表现。
不同model在Training Data和Testing Data上的表现
上图是不同model找到的 f ∗ f^* f 在Training Data和Testing Data上的表现。越复杂的model在Training Data上的表现越好,而在Testing Data上则不一定。甚至在model 5中,找到的 f ∗ f^* f 在Testing Data上的Average Error不降反升,达到了100。我们称之为overfitting(过拟合)
所以在选择model的时候,并非越复杂越好,我们应该选择最适合的model。

2. 其它属性对预测值有无影响?

再回顾之前我们一开始用的model, y = b + w ∙ x c p y=b+w \bullet x_{cp} y=b+wxcp,我们只考虑了宝可梦进化前的CP值 x c p x_{cp} xcp去预测进化后的CP值,而宝可梦还有一些其它的属性,例如: x s x_s xs x h p x_{hp} xhp x w x_w xw x h x_h xh(种类,血量,重量,高度),这些属性会影响我们对CP值的预测吗?
我们先收集更多的数据看看:
更多宝可梦的预测图像

2.1. 种类对预测值的影响

接下来,我们考虑一下不同种类的宝可梦。

  1. 如果这只宝可梦的种类是Pidgey,即 x s = P i d g e y x_s=Pidgey xs=Pidgey ,我们选用的预测函数 f ∗ : y = b 1 + w 1 ∙ x c p f^*:y=b_1+w_1 \bullet x_{cp} f:y=b1+w1xcp
  2. 如果宝可梦的种类是Weedle,即 x s = W e e d l e x_s=Weedle xs=Weedle ,我们选用的预测函数 f ∗ : y = b 2 + w 2 ∙ x c p f^*:y=b_2+w_2 \bullet x_{cp} f:y=b2+w2xcp
  3. ……

上述操作仍可用Linear Function表示出来:
y = b 1 ∙ δ ( x s = P i d g e y ) + w 1 ∙ δ ( x s = P i d g e y ) ∙ x c p + b 2 ∙ δ ( x s = W e e d l e ) + w 2 ∙ δ ( x s = W e e d l e ) ∙ x c p + … … y=b_1 \bullet \delta (x_s=Pidgey) + w_1 \bullet \delta (x_s=Pidgey) \bullet x_{cp} +b_2 \bullet \delta (x_s=Weedle) + w_2 \bullet \delta (x_s=Weedle) \bullet x_{cp}+…… y=b1δ(xs=Pidgey)+w1δ(xs=Pidgey)xcp+b2δ(xs=Weedle)+w2δ(xs=Weedle)xcp+3

不同种类的宝可梦进化后CP值预测的函数图像如下:
不同种类宝可梦进化后CP值预测图像
计算得出在Training Data上的Average Error是3.8,在Training Data上的Average Error是14.3。这显然是优于我们一开始只考虑进化前CP值的model的。

2.2. 其它属性对预测值的影响

我们接着考虑宝可梦的血量,高度,重量对预测值的影响。
我们重新回到Step 1选择model,这次我们构建了以下model:
y = y ′ + w 9 ∙ x h p + w 10 ∙ ( x h p ) 2 + w 11 ∙ x h + w 12 ∙ ( x h ) 2 + w 13 ∙ x w + w 14 ∙ ( x w ) 2 y=y'+ w_9 \bullet x_{hp}+w_{10} \bullet (x_{hp})^2+w_{11} \bullet x_h +w_{12} \bullet (x_h)^2 + w_{13} \bullet x_w + w_{14} \bullet (x_w)^2 y=y+w9xhp+w10(xhp)2+w11xh+w12(xh)2+w13xw+w14(xw)2
其中 y ′ = { b 1 + w 1 ∙ x c p + w 5 ∙ ( x c p ) 2 , I f x s = P i d g e y b 2 + w 2 ∙ x c p + w 6 ∙ ( x c p ) 2 , I f x s = W e d d l e b 3 + w 3 ∙ x c p + w 7 ∙ ( x c p ) 2 , I f x s = C a t e r p i e b 4 + w 4 ∙ x c p + w 8 ∙ ( x c p ) 2 , I f x s = E e v e e y'=\left \{ \begin{aligned} b_1+w_1 \bullet x_{cp}+w_5 \bullet (x_{cp})^2,& If \ x_s=Pidgey \\ b_2+w_2 \bullet x_{cp}+w_6 \bullet (x_{cp})^2,& If \ x_s=Weddle\\ b_3+w_3 \bullet x_{cp}+w_7 \bullet (x_{cp})^2,& If \ x_s=Caterpie\\ b_4+w_4 \bullet x_{cp}+w_8 \bullet (x_{cp})^2,& If \ x_s=Eevee \end{aligned} \right. y=b1+w1xcp+w5(xcp)2b2+w2xcp+w6(xcp)2b3+w3xcp+w7(xcp)2b4+w4xcp+w8(xcp)2If xs=PidgeyIf xs=WeddleIf xs=CaterpieIf xs=Eevee
接着计算Training Error和Testing Error,得到Training Error=1.9,Testing Error=102.3。可以看到,这个Testing Error是比较大的,这里又overfitting了。因此,并非考虑的属性越多,得到的预测函数越好。

2. Regularization(正则化)

先看原来我们用的Loss function, L ( f ) = F ( w , b ) = ∑ ( ( y ^ ) n − y n ) 2 = ∑ ( ( y ^ ) n − ( b + ∑ w i ∙ x i ) ) 2 L(f)=F(w,b)=\sum ((\hat{y})^n-y^n)^2=\sum ((\hat{y})^n-(b+\sum w_i \bullet x_i))^2 L(f)=F(w,b)=((y^)nyn)2=((y^)n(b+wixi))2 。这个Loss function只考虑了预测结果 y y y产生的Error。
接下来redesign我们的Loss function,即Regularization(正则化),使 L ( f ) = ∑ ( ( y ^ ) n − ( b + ∑ w i ∙ x i ) ) 2 + λ ∙ ∑ ( w i ) 2 L(f)=\sum ((\hat{y})^n-(b+\sum w_i \bullet x_i))^2+ \lambda \bullet \sum(w_i)^2 L(f)=((y^)n(b+wixi))2+λ(wi)2 λ \lambda λ 是一个常数,需要我们接下来去手调。 λ ∙ ∑ ( w i ) 2 \lambda \bullet \sum(w_i)^2 λ(wi)2这一项表明我们期待函数 f ∗ f^* f拥有更小的 w i w_i wi w i w_i wi越小,函数 f ∗ f^* f越平滑45

我们来看一下Regularization后找到的函数 f ∗ f^* f的表现:
Regularization后函数的表现
当前我们的Loss函数考虑了两项,一项是Error,一项是smooth。 λ \lambda λ越大,考虑Training Error 这一项越少,考虑smooth这一项越多,表示找到的函数 f ∗ f^* f越平滑。
我们可以看到 λ \lambda λ越大,在Training Data上得到的Average Error越大6,而在Testing Data上得到的Average Error是先慢慢减小,随后又增大。这表明,虽然我们倾向于找到平滑的 f ∗ f^* f,但是也不能太平滑。我们可以通过调整 λ \lambda λ来决定function的平滑程度,从而得到一个最好的model。


  1. 表现越好在这里指Average Error更小。这里用来计算Average Error的函数是不同model经过gradient descent找到的best function f ∗ f^* f 。 ↩︎

  2. 举例:对于model 5, y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 + w 3 ∙ ( x c p ) 3 + w 4 ∙ ( x c p ) 4 + w 5 ∙ ( x c p ) 5 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2+w_3 \bullet (x_{cp})^3 + w_4 \bullet (x_{cp})^4 + w_5 \bullet (x_{cp})^5 y=b+w1xcp+w2(xcp)2+w3(xcp)3+w4(xcp)4+w5(xcp)5,来说,令变量 w 5 = 0 w_5=0 w5=0,可以得到model 4, y = b + w 1 ∙ x c p + w 2 ∙ ( x c p ) 2 + w 3 ∙ ( x c p ) 3 + w 4 ∙ ( x c p ) 4 y=b+w_1 \bullet x_{cp}+w_2 \bullet (x_{cp})^2+w_3 \bullet (x_{cp})^3 + w_4 \bullet (x_{cp})^4 y=b+w1xcp+w2(xcp)2+w3(xcp)3+w4(xcp)4。其它同理可得。 ↩︎

  3. δ ( x s = P i d g e y ) = { 1 , I f ( x s = P i d g e y ) 0 , o t h e r w i s e \delta (x_s=Pidgey) = \left \{ \begin{aligned} 1,& If(x_s=Pidgey) \\ 0,&otherwise \end{aligned} \right. δ(xs=Pidgey)={10If(xs=Pidgey)otherwise ↩︎

  4. 假设我们的model是 y = b + ∑ w i ∙ x i y=b+\sum w_i \bullet x_i y=b+wixi,若输入的其中一项 x t x_t xt变化到了 x t + Δ x x_t + \Delta x xt+Δx,原先的输出将从 y y y变成 y + w t ∙ Δ x y+ w_t\bullet \Delta x y+wtΔx。若 w t w_t wt越小,则这个输出的变化就越小,即函数 f ∗ f^* f越平滑。
    为什么不考虑参数 b b b?Regularization是去调整一个function的平滑程度,而参数 b b b是不影响函数的平滑程度的。 ↩︎

  5. 为什么要使 f ∗ f^* f更平滑?在测试时,如果有一些输入被干扰了,一个比较平滑的函数会受到比较小的影响。 ↩︎

  6. 这是非常正常的,因为上文提到, λ \lambda λ 越大,考虑Training Error这一项越少。这也是不必担心的,相比于在Training Data上的Average Error,我们更关心函数在Testing Data上的Average Data。 ↩︎


http://chatgpt.dhexx.cn/article/3X2BlFob.shtml

相关文章

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、员工关注公众号,员工第一次登录微信公众号,通过微信授权登录进行…

Java基于微信公众号接口实现授权登录源码及原理分析

微信公众号授权登录操作前提必须注册微信公众平台账号,注意的是订阅号不支持授权登录操作,因此对于个人开发者注册的订阅号是无法实现的,必须注册企业号的微信平台账号而具体注册流程就不详细介绍了,有什么疑问可去微信公众号平台…

微信公众号多域名回调系统1.0发布

这是一款基于ThinkPHP6.0框架的微信公众号多域名回调系统。 微信公众号后台默认只能授权2个网页域名,用本系统可突破这个限制,用同一个公众号对接无限多个网站。网站后台支持回调域名白名单的管理,以及登录记录的查看。 本系统还有微信access…