回归模型笔记

PS:学习内容来自李宏毅机器学习2019版

回归模型定义

回归(Regression)就是找到一个函数(Function),通过输入的特征向量X,输出一个数值型(Scalar)变量y。

应用举例

  • 股市预测(Stock market forecast):
    输入:过去10年股市的变动、新闻资讯、公司并购咨询等
    输出:预测股市明天的平均值
  • 宝可梦精灵攻击力预测(Combat Power of a pokemen):
    输入:进化前的CP值、物种(Bulbasaur)、血量(HP)、重量(Weight)、高度(Height)
    输出:进化后的CP值
    随后将以宝可梦作为例子说明

模型步骤

  • step 1:模型假设,选这模型框架(以线性模型为例)
  • step 2:模型评估,如何判断众多模型的好坏(使用损失函数作为评估方式)
  • step 3:模型优化,如何筛选最优的模型(梯度下降)

Step 1: 模型假设-线性模型

一元线性模型(单个特征)

以宝可梦的一个特征x c p x_{cp}x c p ​为例,线性模型假设y = b + w ∗ x c p y=b+wx_{cp}y =b +w ∗x c p ​ ,所以w w w和b b b会有很多猜测模型:
f 1 : y = 10 + 9 ∗ x c p f 2 : y = − 0.8 − 1.2 ∗ x c p f_1:y = 10 + 9
x_{cp}\ f_2:y = -0.8 -1.2*x_{cp}f 1 ​:y =1 0 +9 ∗x c p ​f 2 ​:y =−0 .8 −1 .2 ∗x c p ​
尽管会有很多假设模型,但是我们需要选取效果最好的模型,这就是稍后模型评估与优化需要做的事,模型评估负责评判模型是否较好,而模型优化,则是对其调整使其更好。

多元线性模型(多个特征 回归模型笔记

在实际应用中,输入特征不一定只有x c p x_{cp}x c p ​一个。例如,进化值还有血量(HP)、重量(Weight)、高度(Height)等。将多个特征进行线性回归考虑的模型即为多元线性模型。所以可以的得到假设模型:y = b + ∑ w i x i y=b+\sum w_ix_i y =b +∑w i ​x i ​
其中个变量含义如下:

  • x i x_i x i ​: 各种特征(future)如x c p x_{cp}x c p ​,x h p x_{hp}x h p ​,x w x_w x w ​,…

  • w i w_i w i ​: 各个特征的权重w c p w_{cp}w c p ​,w h p w_{hp}w h p ​,w w w_w w w ​,…

  • b b b: 偏移量

step 2:模型评估-损失函数

后续示例均以单个特诊x c p x_{cp}x c p ​说明

收集和查看训练数据

这里定义x 1 x^1 x 1是进化前的CP值,y ^ 1 \hat{y}^1 y ^​1进化后的CP值即为真实值,y y y为预测值(这里与概率论里学的符号表示相反,一般是y ^ \hat{y}y ^​表示预测值,y y y表示真实值)。为此(x n x^n x n,y ^ n \hat{y}^n y ^​n)在二位平面中的坐标点可以表示数据。

回归模型笔记

; 如何评估众多模型的好坏

有了真实数据,训练后如何对模型好坏进行评估呢?从数学角度上,可以使用求距离的方式。求【进化后的CP值】与【模型预测的CP值】之差,来判断模型的好坏。也就是使用损失函数(Loss function)来衡量模型的好坏。统计原始数据( y ^ n − f ( x c p n ) ) 2 (\hat{y}^n-f(x_{cp}^n))^2 (y ^​n −f (x c p n ​))2的和,和越小越好。更直观的表示见下图:

回归模型笔记
图中的函数L ( f ) L(f)L (f )等价变换到L ( w , b ) L(w,b)L (w ,b )只需要将模型假设的线性函数显示带入即可。同时得到最终的损失函数Loss function:L ( w , b ) = ∑ n = 1 10 ( y ^ − ( b + w ∗ x c p ) ) 2 L(w,b)=\sum_{n=1}^{10}{(\hat{y}-(b+w*x_{cp}))^2}L (w ,b )=∑n =1 1 0 ​(y ^​−(b +w ∗x c p ​))2,此时损失函数是一个关于w w w和b b b的二位函数,要求损失函数最小,即寻求合适的w w w和b b b使得函数的值最小。

Step 3:最佳模型-梯度下降方式寻求

如何筛选最优模型

在固定为线性模型条件下,筛选最优模型即寻找参数w w w和b b b使得损失函数L ( w , b ) = ∑ n = 1 10 ( y ^ − ( b + w ∗ x c p ) ) 2 L(w,b)=\sum_{n=1}^{10}{(\hat{y}-(b+wx_{cp}))^2}L (w ,b )=∑n =1 1 0 ​(y ^​−(b +w ∗x c p ​))2的值最小。这一定义数学表示方式见下图:
回归模型笔记
先从最简单的只有一个参数w w w入手,定义w ∗ = arg min ⁡ w L ( w ) w^
=\argmin_{w}L(w)w ∗=w a r g m i n ​L (w )

回归模型笔记
我们知道在函数里,可以通往梯度方向运行函数值变化最快,但是函数连续的,直接以梯度(梯度既有大小又有方向,大小为模长)的大小在梯度方向移动,会离开函数曲线。为此我们需要给每次移动定一个合适的步长。而机器学习里引入的概念学习率,则对应这里的移动步长(正值),如上图中的η \eta η。对于寻找使得函数最小的点,我们可以通过随机选取一个点,然后使用梯度下降的方式,逐渐移动去找到最小值所在的点,梯度决定移动方向,学习率决定移动步长。为此可以表述为以下步骤:
  • 步骤1:随机选取一个w 0 w^0 w 0
  • 步骤2:计算微分,也就是当前斜率,根据斜率来判定移动方向。
  • 大于0向左移动(减少w w w)
  • 小于0向右移动(增加w w w)
  • 步骤3:根据学习率移动。
  • 重复步骤2和3,直到找到最低点即函数值最小的点
    回归模型笔记
    步骤1中,我们随机选取一个w 0 w^0 w 0,如上面的图所示可能会找到局部最优值,而不是全局最优,因为学习率较小使得无法跳出这个局部最优的凹槽,增大学习率或许可以使其跳去图示局部最小值,但也面临让其难以找到全局最优,因为可能会类似跳出局部最优直接跳过全局最优解。

通过上述单参数模型,我们对梯度下降方法工作有一定了解,回归原来的问题,则是需要考虑w w w和b b b这两个模型参数。过程类似,只是需要对其求偏导更新。更新过程如下图所示:

回归模型笔记
其中图片右上角红框框里的公式为梯度简洁的表示方式。

; 梯度下降推演最优模型的过程

如果把w w w和b b b在图形中展示:

回归模型笔记
  • 每一条线围成的圈就是等高线,代表损失函数的值,颜色越深的区域损失值越小。
  • 红色箭头代表等高线的发现方向,其实向内和向外都是发现法线方向,即变化最快的方向,梯度方向是增加最快的方向,梯度的反方向是减少最快的方向,这也是为什么更新的时候是步长与梯度乘积数值前用的负号。

梯度下降算法在现实世界中面临的挑战

我们通过梯度湘江不断更新损失函数结果,这个结果会越来越小,这种方式找到的结果是否是正确的即是否是最小值呢?除了前面提到的局部最优问题,是否还有其他问题呢?其实还会存在其他问题:

  • 问题1:陷入局部最优(Stuck at local minima) 课程视频称为当前最优
  • 问题2:陷入鞍点(Stuck at saddle point) 课程视频说法为等于0
  • 问题3:更新缓慢(Very slow at the plateau) 课程视频说法为趋近于0
    关于鞍点百科:在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点,亦或者可以表述为一个不是局部最小值的驻点(一阶导数为0)的点称为鞍点。数学含义是:目标函数在此点上的梯度(一阶导数)值为 0,但从改点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。其中我们选取的是微分方程中的定义,其实可以对照高数里的马鞍面来理解。
    回归模型笔记
    如图所示,在右上角的复杂曲面中,选取的某条曲线如图。
  • 当曲线偏导数趋近于零,即进入平缓期,结合更新的公式,其更新会很慢,这就是问题3。
  • 当其继续向前运行,会运行到偏导数等于0的点,但是这个点只是一个驻点,其不是全局的极值点,从而出现鞍点现象,从而导致从此点探索时,该参数不在此时不变,而直接沿另一个参数所在方向移动。结合公式表达式理解,w 新 = w 旧 − 0 w_{新}=w_{旧}-0 w 新​=w 旧​−0,b 新 = b 旧 − η ∗ α L α b b_{新}=b_{旧}-\eta*\frac{\alpha L} {\alpha b}b 新​=b 旧​−η∗αb αL ​。这就是问题2。
  • 图中w w w继续增大时,则会陷入局部极小值点。也就是当前最优,这是问题1。

; 如何验证训练好的模型的好坏

课程中使用训练集和测试集的平均误差来验证模型的好坏。得到的平均误差较大,为此考虑更高阶的多项式函数去拟合获得更好的训练效果。

更强大复杂的模型:1元N次线性模型

在模型上,我们还可以进一步优化,选择更复杂的模型,如使用1元2次方程。于是模型为:y = b + w 1 ∗ x c p + w 2 ∗ ( x c p ) 2 y = b + w_1x_{cp}+w_2(x_{cp})^2 y =b +w 1 ​∗x c p ​+w 2 ​∗(x c p ​)2。
这里我们又会遇见新的问题:我们通常认知的线性模型图像是直线,而各种复杂的曲线就是非线性模型。为此我们质疑1元N次多项式模型是线性的。其实,他仍然是线性的,因为我们可以引入一个新的特征x c p 1 x^1_{cp}x c p 1 ​,其中x c p 1 = ( x c p ) 2 x^1_{cp}=(x_{cp})^2 x c p 1 ​=(x c p ​)2,那么y = b + w 1 ∗ x c p + w 2 ∗ x c p 1 y=b+ w_1x_{cp}+w_2x_{cp}^1 y =b +w 1 ​∗x c p ​+w 2 ​∗x c p 1 ​其实是线性模型。更高次项依旧可以使用该方式变换处理。

过拟合问题出现

由高等数学泰勒展开式对函数拟合可知,当项的次数越高,函数拟合会更接近与原来的函数。适当的引入高次项会使得模型在测试集上效果变好,为此通过引入更高次项会改善训练数据结果。但是当次数项高过一定程度时,为此通过引入更高次项会改善训练数据结果,使得对于训练数据而言预测值与真实值误差越小,但是当模型在测试集上运行时,却表现出较差的效果,且随着项的次数与越高效果越差,这个时候就是出现了过拟合现象即在训练集上模型效果优良,而在测试集上效果较差。

回归模型笔记

步骤优化

输入更过宝可梦数据,相同的初始CP值,但进化后的CP差距竟然是2倍。如下图,通过将宝可梦种类用颜色区分,发现了宝可梦中了是隐藏的比较深的特征,不同宝可梦种类影响进化后的CP值得结果。因而输入特征应当还有宝可梦的种类。

回归模型笔记

; step1优化:2个input的四个线性模型合并到一个线性模型中

通过对宝可梦种类判断,将4个线性模型合并到一个线性模型中,如下图所示:

回归模型笔记
除了通过if的判断方式,我们还可以更具种类生成相应的独热码向量,使得对应的物种取值为1,其他的为零,将上诉四个函数通过种类特征向量整合成一个分段函数。如下图所示:
回归模型笔记

step2优化:如果希望模型更强大表现更好(更多参数,更多input)

在最开始我们由很多特诊,我们可以通过图像化分析,将血量(HP)、重量(Weight)等加入模型中,观察更多特征,更多input,对数据结果的影响,然后选择合适的参数加入模型,优化模型效果。课程中结果是:更多特征即更多input,数据量没有明显增加,仍旧导致过拟合(overfitting)。

step3优化:加入正则化

更多特诊,但是权重w w w可能会使某些特征值过高,仍旧导致overfitting,所以加入正则化。

回归模型笔记
  • w w w越小,表示function较平滑的,由上图公式可知,w w w越小,当特征x i x_i x i ​改变时,输出函数的改变也就越小,函数曲线也月平滑。同时函数输出值与输入值相差不大。
  • 在很多应用场景中,并不是w w w越小模型越平滑越好,但是经验告诉我们w w w越小大部分情况下都是好的。
  • b b b的值接近于0,对曲线平滑是没有影响

; 小结

  • 梯度下降的做法,后续会讲到他的理论依据和要点。
  • 过拟合和正则化,目前主要介绍了表象,后面会讲更多这方面的理论。
  • 关于单个特征最优的参数w w w和b b b可以通过最小二乘法获得,同时也为是否迭代到最优给与了判断依据,课程中通过梯度迭代获得,简述了其他思路,并将其通过图像化的表示出来了。
    博客里的图片均来自datawhale开源学习资料,来源链接如下:
    https://gitee.com/datawhalechina/leemlnotes/tree/master/docs/chapter3/res

Original: https://blog.csdn.net/qq_46453941/article/details/125746722
Author: 海风吹过的夏天
Title: 回归模型笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/635700/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球