线性回归公式

文章发布公众号 计算机视觉life

本文阅读时间约20分钟

一、例子

A去银行办信用卡,柜台的漂亮妹子询问:"请问您的年龄和月收入是多少?"A:“20岁,月收入2万元”。妹子:“您可办理的额度为1万元”。此时,B同样办信用卡,妹子同样询问:“请问您的年龄和月收入是多少?”B:“19岁,月收入1.6万元”。妹子:“您可办理的额度为1.1万元”。A此时就郁闷了,我月收入比他高,为什么额度比他低呢。别问为什么!机器算的!那么机器怎么算的呢?这个时候我们就可以拿出机器学习中最基本也是最重要的算法之一线性回归

岁数月收入/万元信用卡额度/万元
A2021
B1911.1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3fSa0x2b-1581676306133)(https://i.loli.net/2018/12/30/5c288b01a3d81.png)]

这个图可以看出机器如何进行预测的,它会根据大量的之前办理信用卡的人的数据(年龄、工资、信用卡额度)找出来最好的拟合线(面)来进行预测,这样你的数据来了之后直接带入进去就可以得出来该给你多少额度。

ps:有同学可能说不是线性模型么,咋图是个面呢。

线性不等于直线,特征是一维的,线性模型在二维空间构成一条直线;特征是二维的,线性模型在三维空间中构成一个平面;若特征是三维的,则最终模型在四维空间中构成一个体;以此类推……好呗,后面的需要大家自己想象啦。

二、模型推导

那么,线性回归的原理是什么呢?我们接下来从机器学习的三要素(模型,代价函数,优化算法)开始分析。

1、模型

假设 x 1 x_{ 1 } x1是年龄,则 ω 1 \omega _ { 1 } ω1是年龄的参数; x 2 x_{ 2} x2是工资,则 ω 2 \omega _ { 2 } ω2是工资的参数。则,拟合的平面为:

f ( x ) = ω 1 x 1 + ω 2 x 2 + b ( 其 中 b 是 偏 移 量 ) f( x ) = \omega _ { 1 } x _ { 1 } + \omega _ { 2 } x _ { 2 }+b (其中b是偏移量) f(x)=ω1x1+ω2x2+bb

当然实际情况,可能会有很多特征和参数,可以把模型改写为通用形式:

f ( x ) = ∑ i = 1 n ω i x i + b = ω T x + b = W T X f( x ) = \sum\limits _ { i = 1 } ^ { n } \omega _ { i } x _ { i } +b= \omega ^ { T }x+b=W^{T}X f(x)=i=1nωixi+b=ωTx+b=WTX

其中, W = [ b w 1 ⋯ w n ] W = \left[ \begin{array} { c } {b } \\ { w _ { 1 } } \\ { \cdots } \\ { w _ { n } } \end{array} \right] W=bw1wn X = [ 1 x 1 … x n ] X = \left[ \begin{array} { c } { 1 } \\ { x _ { 1 } } \\ { \dots } \\ { x _ { n } } \end{array} \right] X=1x1xn

至此我们得到线性回归的模型。

2、代价函数

1.误差项分析:

真实值和预测值之间肯定是存在差异的(用ε来表示误差)。对于每个样本:

y ( i ) = W T x ( i ) + ε ( i ) y ^ { ( i ) } = W ^ { T } x ^ { ( i ) } + \varepsilon ^ { ( i ) } y(i)=WTx(i)+ε(i)

既然说到误差了,咱们就来好好唠一下,首先银行的目标得让误差越小越好,这样才能够使得我们的结果是越准确的。那么这个误差有什么规律可循吗?

误差 ε ( i ) \varepsilon ^ { ( \boldsymbol { i } ) } ε(i) 是独立并且具有相同的分布,并且服从均值为0方差为ε的高斯分布。

独立:A和B的信用卡额度不会相互影响,不会因为给A额度高了,就给B低。

同分布:都是一家银行,一家预测系统

高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况,所以我们认为该误差是可以服从高斯分布的。

误差项ε是独立且具有相同的分布,服从均值为0方差为 W 2 W^{2} W2的高斯分布

2.推导

(1)预测值和误差: y ( i ) =   W T x ( i ) + ε ( i ) y ^ { ( i ) } = \ W ^ { T } x ^ { ( i ) } + \varepsilon ^ { ( i ) } y(i)= WTx(i)+ε(i)

(2)由于误差服从高斯分布: p ( ε ( i ) ) = 1 2 π σ exp ⁡ ( − ( ε ( i ) ) 2 2 σ 2 ) p \left( \varepsilon ^ { ( i ) } \right) = \frac { 1 } { \sqrt { 2 \pi } \sigma } \exp \left( \frac { - \left( \varepsilon ^ { ( i ) } \right) ^ { 2 } } { 2 \sigma ^ { 2 } } \right) p(ε(i))=2π σ1exp(2σ2(ε(i))2)

(3)将(1)带入(2): p ( y ( i ) ∣ x ( i ) , W ) = 1 2 π σ exp ⁡ ( − ( y ( i ) −   W T x ( i ) ) 2 2 σ 2 ) p \left( y ^ { ( i ) } | x ^ { ( i ) } , W \right) = \frac { 1 } { \sqrt { 2 \pi } \sigma } \exp \left( \frac { - \left( y ^ { ( i ) } - \ W ^ { T } x ^ { ( i ) } \right) ^ { 2 } } { 2 \sigma ^ { 2 } } \right) p(y(i)x(i),W)=2π σ1exp(2σ2(y(i) WTx(i))2)

既然误差服从了高斯分布我们就把它进行展开,上式的意思就是我去办信用卡,在它这两组参数的控制下得到的额度恰好是等于真实情况下就该给我这么多的概率。(预测值和真实值对应的可能性大小)那么银行当然希望这个概率越大越好呀,越大代表越准确呀。

似然函数: L ( W ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; W ) = ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − W T x ( i ) ) 2 2 σ 2 ) L ( W) = \prod\limits _ { i = 1 } ^ { m } p \left( y ^ { ( i ) } | x ^ { ( i ) } ;W \right) = \prod\limits _ { i = 1 } ^ { m } \frac { 1 } { \sqrt { 2 \pi } \sigma } \exp \left( - \frac { \left( y ^ { ( i ) } - W ^ { T } x ^ { ( i ) } \right) ^ { 2 } } { 2 \sigma ^ { 2 } } \right) L(W)=i=1mp(y(i)x(i);W)=i=1m2π σ1exp(2σ2(y(i)WTx(i))2)

代表着什么样的参数跟我们的数据组合后恰好是真实值。

上式,是一个累乘,多难求对不对,我们可以转换成加法啊,于是引入对数即,对数似然函数:

KaTeX parse error: Expected group after '_' at position 70: … \left( \prod _̲\limits { i = …

上式展开后得到:

$\begin{array} \ { l ( W ) = \sum _\limits { i = 1 } ^ { m } \log \left( \frac { 1 } { \sqrt { 2 \pi } \sigma } \right) - \sum _\limits { i = 1 } ^ { m } \frac { \left( y ^ { ( i ) } - W ^ { T } x ^ { ( i ) } \right) ^ { 2 } } { 2 \sigma ^ { 2 } } }\end{array} $

$ \begin{array} \ { l ( W ) = \sum\limits _ { i = 1 } ^ { m } \log \left( \frac { 1 } { \sqrt { 2 \pi } \sigma } \right) - \frac { 1 } { \sigma ^ { 2 } } \cdot \frac { 1 } { 2 } \cdot \sum\limits _ { i = 1 } ^ { m } \left( y ^ { ( i ) } - W^ { T } x ^ { ( i ) } \right) ^ { 2 } } \end{array}$

因为 ∑ i = 1 m log ⁡ ( 1 2 π σ ) \sum\limits _ { i = 1 } ^ { m } \log \left( \frac { 1 } { \sqrt { 2 \pi } \sigma } \right) i=1mlog(2π σ1)常数,所以只要求 1 σ 2 ⋅ 1 2 ⋅ ∑ i = 1 m ( y ( i ) − W T x ( i ) ) 2 \frac { 1 } { \sigma ^ { 2 } } \cdot \frac { 1 } { 2 } \cdot \sum\limits _ { i = 1 } ^ { m } \left( y ^ { ( i ) } - W ^ { T } x ^ { ( i ) } \right) ^ { 2 } σ2121i=1m(y(i)WTx(i))2,我们想要上式最大,但公式前一部分是常数,后面一部分是非负数,要让$ l ( W ) $最大,即让减号后面部分最小。

所以,我们定义损失函数:损失函数: J ( W ) = 1 2 ∑ i = 1 m ( y ( i ) − W T x ( i ) ) 2 J\left( W \right) =\frac{1}{2}\sum\limits_{i=1}^m{\left( y^{ ( i ) } -W^Tx^{ ( i ) } \right) ^2} J(W)=21i=1m(y(i)WTx(i))2,其中 1 2 \frac { 1 } { 2 } 21保留是为了后续求导系数约分。

总结:到这里我们终于推导出来了,银行只需要做一件事就可以了,那就是最小化这个函数(目标函数),其实说白了就是要让我们的预测值和真实值之间的差异越小越好,这就是最小二乘法!

3、优化算法

对损失函数进行优化也就是求出w,b,使的损失函数最小化。有两种求解方法:

(1)求导法

  • 对各参数求偏导,并使其偏导为0,进而求出最优的参数。但此方法不适用于不可导函数,且计算量过大。
  • 矩阵求导运算常用公式:

∂ β T x ∂ x = β ∂ x T x ∂ x = 2 x ∂ x T A x ∂ x = ( A + A T ) x \begin{array} { c } { \frac { \partial \beta ^ { T } \mathbf { x } } { \partial \mathbf { x } } = \beta } \\ { \frac { \partial \mathbf { x } ^ { \mathrm { T } } \mathbf { x } } { \partial \mathbf { x } } = 2 \mathbf { x } } \\ { \frac { \partial \mathbf { x } ^ { \mathrm { T } } \mathbf { A } \mathbf { x } } { \partial \mathbf { x } } = \left( \mathbf { A } + \mathbf { A } ^ { \mathbf { T } } \right) \mathbf { x } } \end{array} xβTx=βxxTx=2xxxTAx=(A+AT)x

首先我们把 J ( W ) J ( W ) J(W)展开方便求导:
J ( W ) = 1 2 ( X W − y ) T ( X W − y ) = 1 2 [ W T X T X W − W T X T y − y T X W + y T y ] = 1 2 [ W T X T X W − 2 W T X T y + y T y ] \begin{array} { l } { J ( W ) = \frac { 1 } { 2 } ( X W - y ) ^ { T } ( X W - y ) } \\ { = \frac { 1 } { 2 } \left[ W ^ { T } X ^ { T } X W - W ^ { T } X ^ { T } y - y ^ { T } X W + y ^ { T } y \right] } \\ { = \frac { 1 } { 2 } \left[ W ^ { T } X ^ { T } X W - 2 W ^ { T } X ^ { T } y + y ^ { T } y \right] } \end{array} J(W)=21(XWy)T(XWy)=21[WTXTXWWTXTyyTXW+yTy]=21[WTXTXW2WTXTy+yTy]

求上面式子的最小值该怎么办呢?求导啊,另导数等于0

∂ J ( W ) ∂ W = 0 ∂ J ( W ) ∂ W = 1 2 [ 2 X T X W − 2 X T y ] = 0 X T X W = X T y W = ( X T X ) − 1 X T y \begin{aligned} \frac { \partial J ( W ) } {\partial W } & = 0 \\ \frac { \partial J ( W ) } { \partial W } & = \frac { 1 } { 2 } \left[ 2 X ^ { T } X W - 2 X ^ { T } y \right] = 0 \\ X ^ { T } X W & = X ^ { T } y \\ W & = \left( X ^ { T } X \right) ^ { - 1 } X ^ { T } y \end{aligned} WJ(W)WJ(W)XTXWW=0=21[2XTXW2XTy]=0=XTy=(XTX)1XTy

以上就是按矩阵方法优化损失函数,但上面方法有一定的局限性,就是要可逆;下面我们来说一说另外一个优化方法梯度下降法。

(2)梯度下降法

  • 梯度下降法基于的思想为:要找到某函数的极小值,则沿着该函数的梯度方向寻找。若函数为凸函数且约束为凸集,则找到的极小值点则为最小值点。 梯度下降基本算法为: 首先用随机值填充 W W W(这被称为随机初始化),然后逐渐改进,每次步进一步(步长α),每一步都试图降低代价函数,直到算法收敛到最小。

这两种方法的优缺点对比:

梯度下降方程求解
需要选择学习率,可能由于学习率选择的不合适,导致模型效果差不需要
需要多次迭代一次运算得出
特征维数较大时,同样适用因为矩阵求逆计算度比较复杂,一般N<10000时可以采用。
适用于各种模型有局限性,比较逻辑回归就不适用

欢迎关注公众号:计算机视觉life,一起探索计算机视觉新世界~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值