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

回归——数学公式推导全过程

文章目录

一、案例引入

二、如何求出正确参数

1. 最速下降法

1)多项式回归

2)多重回归

2. 随机梯度下降法


一、案例引入

以Web广告和点击量的关系为例来学习回归,假设投入的广告费和点击量呈现下图对应关系。

思考:如果花了200元的广告费,广告的点击量会是多少呢?

机器学习就是从给出的数据(训练数据)中进行学习,当你提供未知数据(200广告费)后,给出预测值(500左右点击量)。

实现原理:把图想象为函数,只要知道通过图中各点的函数的形式,就能根据广告费得知点击量。

定义一次函数的表达式        "西塔0,西塔1"  我们称之为参数,也就是一次函数的斜率和截距。

将训练数据中的广告费代入fθ(x),把得到的点击量与训练数据中的点击量相比较,然后找出使二者的差最小的θ。

假设有n个训练数据,那么它们的误差之和可以用这样的表达式表示。这个表达式称为目标函数,E(θ)的E是误差的英语单词Error的首字母。

对每个训练数据的误差取平方之后,全部相加,然后乘以1/2。这么做是为了找到使E(θ)的值最小
的θ。这样的问题称为最优化问题。(取平方是为了让误差值都大于0,最后乘以1/2是为了让后面计算微分更方便而加上去的)

二、如何求出正确参数

1. 最速下降法

比如有一个表达式为的二次函数,它的最小值是g(x)=0,出现在 x =1时。

将g(x)展开后取微分:

增减表如下所示:

比如在x=3这一点,为了使g(x)的值变小,我们需要向左移动 x,也就是必须减小x

如果是在另一侧的x=−1这一点,为了使g(x)的值变小,我们需要向右移动x,也就是必须增加x

只要向与导数的符号相反的方向移动x,g(x)就会自然而然地沿着最小值的方向前进了

用表达式展示出来:        这种方法称为最速下降法或梯度下降法

(A:=B这种写法,它的意思是通过B来定义A。)

η读作“伊塔”,称为学习率的正的常数。根据学习率的大小, 到达最小值的更新次数也会发生变化。换种说法就是收敛速度会不同。

假设η=0.1,从x=3开始

 x := 3−0.1×(2×3−2) =3 −0.4=2.6
 x := 2.6−0.1×(2×2.6−2)=2.6−0.3=2.3
 x := 2.3−0.1×(2×2.3−2)=2.3−0.2=2.1
 x := 2.1−0.1×(2×2.1−2)=2.1−0.2=1.9

而当η较小时,移动量也变小,更新次数就会增加,值也会不断朝着收敛的方向而去。

回过头来看一下上面案例中的目标函数E(θ)

这个目标函数和刚才例子中的g(x)同样是开口向上的形状,所以刚才推导的过程也同样适用于它。不过这个目标函数中包含fθ(x),从表达式(一次函数)中又可以看出,fθ(x)拥有θ0和 θ1两个参数。也就是说这个目标函数是拥有θ0和θ1的双变量函数,所以不能用普通的微分,而要用偏微分。如此一来,更新表达式就是这样的。

E(θ)中有fθ(x),而fθ(x)中又有θ0,所以使用复合函数的微分

     然后再像这样阶梯性地进行微分    

      

左侧最后一行,常数与1/2相抵消了,这就是一开始为什么乘以1/2。

最后得到对θ0求导的表达式:

   

同样对θ1求导得出:

所以参数θ0和θ1的表达式是这样:

根据这个表达式来更新θ0 和θ1,找到正确的fθ(x),然后输入任意的广告费,就可以得到相应的点击量。这样我们就能根据广告费预测点击量了。

1)多项式回归

对于一开始在图中的数据点来说,其实曲线比直线拟合得更好。

把fθ(x)定义为二次函数,就能用它来表示这条曲线了

或者用更大次数的表达式也可以。这样就能表示更复杂的曲线了

对于要解决的问题,在找出最合适的表达式之前,需要不断地去尝试,虽然次数越大拟合得越好,但难免也会出现过拟合的问题。

回到刚才二次函数,最终的参数更新表达式是这样的:

像这样增加函数中多项式的次数,然后再使用函数的分析方法被称为多项式回归。

2)多重回归

之前只是根据广告费来预测点击量,实际生活中决定点击量的除了广告费之外,还有广告的展示位置和广告版面的大小等多个要素。

为了让问题尽可能地简单,我们只考虑广告版面的大小,设广告费为x1、广告栏的宽为x2、广告栏的高为x3,那么fθ可以 表示如下:

在分别求目标函数对θ0,··· ,θ3的偏微分,然后更新参数之前,我们先试着简化表达式的写法。

把参数θ和变量x看作向量:

把θ转置之后,计算它与x相乘的结果,也就是:

之前用多项式表示的fθ,可以像这样用向量来表:

还是设u=E(θ)、v =fθ(x),为了一般化,对第j个参数θj偏微分的表达式

       

    

那么第j个参数的更新表达式就是这样:

像这样包含了多个变量的回归称为多重回归

2. 随机梯度下降法

在引入随机梯度下降法之前,我们先来看下最速下降法的一些缺点:

1. 计算量大、计算时间长

当训练数据很多的时候,最速下降法要对所有的训练数据都重复进行计算。

2. 容易陷入局部最优解

给出稍微复杂一点形状的函数

用最速下降法来找函数的最小值时,必须先要决定从哪个x开始找起。之前用g(x)说明的时候是从x=3或者x=−1开始的。选用随机数作为初始值的情况比较多。不过这样每次初始值都会变,进而导致陷入局部最优解的问题

假设这张图中标记的位置就是初始值,从这个点开始找,可以求出最小值

把下图所示作为初始值位置,没计算完就会停止。这就是陷入局部最优解。

最速下降法的参数更新表达式:

这个表达式使用了所有训练数据的误差,而在随机梯度下降法中会随机选择一个训练数据,并使用它来更新参数。这个表达式中的k就是被随机选中的数据索引。

最速下降法更新1次参数的时间,随机梯度下降法可以更新n次。此外,随机梯度下降法由于训练数据是随机选择的,更新参数时使用的又是选择数据时的梯度,所以不容易陷入目标函数的局部最优解

此外还有随机选择m个训练数据来更新参数的做法,设随机选择m个训练数据的索引的集合为K,那么我们这样来更新参数:

假设训练数据有100个,那么在m=10时,创建一个有10个随机数的索引的集合,例如K={61, 53, 59, 16, 30, 21, 85, 31, 51, 10}。这种做法被称为小批量(mini-batch)梯度下降法。


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

相关文章:

  • 【前端】webstorm中运行一个前端项目
  • C++核心语法快速整理
  • SpringBoot集成MQTT客户端
  • HarmonyOS:通过键值型数据库实现数据持久化
  • Mysql 安装教程和Workbench的安装教程以及workbench的菜单栏汉化
  • 响应式CMS架构优化SEO与用户体验
  • 常⻅CMS漏洞 -DeDeCMS 获取webshell
  • 蓝桥杯备赛 背包问题
  • 建筑安全员考试:“高效记忆” 关键词引领的学习捷径
  • C++23新特性详解:迈向更现代化的C++
  • //TODO 动态代理的本质?
  • 语言大模型之BERT
  • HTML5 初探:新特性与本地存储的魔法
  • Touchgfx 自定义容器之间的交互操作
  • dify1.1.1安装
  • 使用LVS的 NAT 模式实现 3 台RS的轮询访问
  • AI重构SEO关键词优化路径
  • Win32桌面编程:ACLUI.DLL,EditSecurity(IntPtr hwndOwner, ISecurityInformation psi)
  • UNIX网络编程笔记:客户/服务器程序示例
  • Mybatis——04