机器学习线性回归总结

最近重新回顾了一下机器学习的算法,把以前学过的再看一遍,然后整理总结在博客上。这次总结一下线性回归,参考书籍为周志华老师的西瓜书。

1、简述线性回归

线性回归顾名思义线性即线性关系,表示两个变量之间存在一次方函数关系 (参考百度百科);回归是一种统计分析的方式,直观的看就是寻找属性和结果之间的映射(函数)。接下来探讨一下常用的线性回归(在连续变量下)

2、一元线性回归

考虑一种最简单的情况:输入的属性只有一个。线性回归试图学的 f ( x i ) = w x i + b    使 得    f ( x i ) ≈ y i f(x_i)=wx_i+b \ \ 使得\ \ f(x_i)\approx y_i f(xi)=wxi+b  使  f(xi)yi

问题在于如何确定w和b,我认为机器学习和深度学习几乎都是在做一件事:最大化和最小化某个式子,就像我们认真做事的时候总想做到最好,不管这种贪心思维是好是坏还是怎么地,它确实是激励着我们,机器学习也不例外。显然在线性回归中,我们希望预测值更接近真实值,那么我需要一个度量的标准,“距离”是一个合适的标准。我准备以后写一篇关于各种距离的分析和总结,敬请期待。
我们使用平方距离(欧式距离) d = ( y ^ − y i ) 2 d=(\widehat{y}-y_i)^{2} d=(y yi)2来考察预测值和真实值的差距,其实就是均方误差(MSE)。
那么我们的目标是最小化这个d,即求w和b使得d最小。
( w ∗ , b ∗ ) =   a r g    m i n ∑ i = 1 m ( y ^ − y i ) 2   = a r g    m i n ∑ i = 1 m ( y i − w x i − b ) 2 (w*,b*)=\ arg\ \ min \sum\limits_{i=1}^{m}(\widehat{y}-y_i)^{2} \\ ~\\=arg \ \ min\sum\limits_{i=1}^{m}(y_i-wx_i-b)^2 (w,b)= arg  mini=1m(y yi)2 =arg  mini=1m(yiwxib)2

基于均方误差的求解方法称为“最小二乘法”,一元线性回归就是找一个直线,使得所有的样本到这条直线的欧式距离之和最小。
E ( w , b ) E_{(w,b)} E(w,b)为误差之和,分别对w和b求偏导并令其等于0
∂ E ( w , B ) ∂ b = 2 w ∑ i = 1 m x i 2 − 2 ∑ i = 1 m x i ( y i − b ) = 0                     ( 1 ) \frac{\partial{E_{(w,B)}}}{\partial{b}}=2w\sum\limits_{i=1}^{m}x_i^2-2\sum\limits_{i=1}^{m}x_i(y_i-b)=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1) bE(w,B)=2wi=1mxi22i=1mxi(yib)=0                   (1) ∂ E ( w , b ) ∂ b = 2 ( m b   −   ∑ i = 1 m ( y i − w x i ) ) = 0                     ( 2 ) \frac{\partial{E_{(w,b)}}}{\partial{b}}=2(mb\ -\ \sum\limits_{i=1}^m(y_i-wx_i))=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2) bE(w,b)=2(mb  i=1m(yiwxi))=0                   2
显然(2)式直接变形一下即可
b = 1 m ∑ i = 1 m ( y i − w x i ) b=\frac{1}{m}\sum\limits_{i=1}^{m}(y_i-wx_i) b=m1i=1m(yiwxi)
对于(1)式就比较复杂啦,这里我参考了这篇博客,我跟着写了一遍,不打公式了,发图吧(懒~~~)机器学习线性回归总结_第1张图片

那么我们可以得到结果如下:
w = ∑ i = 1 m y i ( x i − x ‾ ) ∑ i = 1 m x i 2 − 1 m ( ∑ i = 1 m x i ) 2 w=\frac{\sum\limits_{i=1}^{m}y_i(x_i-\overline{x})}{\sum\limits_{i=1}^{m}x_i^2-\frac{1}{m}(\sum\limits_{i=1}^{m}x_i)^2} w=i=1mxi2m1(i=1mxi)2i=1myi(xix)
b = 1 m ∑ i = 1 m ( y i − w x i ) b=\frac{1}{m}\sum\limits_{i=1}^m(yi-wx_i) b=m1i=1m(yiwxi)

2、多元线性回归

现实中处理的数据往往是多元的(有多个属性),此时我们试图学的
f ( x i ) = w ⊤ x i + b     使 得    f ( x i ) ≈ y i f(x_i)=w^\top x_i+b\ \ \ 使得\ \ f(x_i)\approx y_i f(xi)=wxi+b   使  f(xi)yi

假设有n个属性,在西瓜书中,输入量 x i x_i xi被表示成如下形式:
x i = ( x 1 , x 2 , x 3 , . . . , x n , 1 ) x_i=(x_1,x_2,x_3,...,x_n,1) xi=(x1,x2,x3,...,xn,1)
最后一个1会乘以 w w w中最后一个值,代表偏置 b b b。所以这里 x i x_i xi是一个n+1的向量, w w w也是n+1长的,最后一个数代表偏置 b b b

整个数据集D的属性可以表示为 m ∗ ( n + 1 ) m*(n+1) m(n+1)大小的矩阵
X = [ x 1 x 2 . x m ] X=\begin{bmatrix} x_1 \\x_2\\.\\x_m\\ \end{bmatrix}\quad X=x1x2.xm
那么D上标签表示为列向量 y = ( y 1 , y 2 . . . y m ) ⊤ y=(y_1,y_2...y_m)^\top y=(y1,y2...ym)
那么我们的目标是求的:
w =    a r g    m i n ( y − X w ) ⊤ ( y − X w ) w=\ \ arg\ \ min(y-Xw)^{\top}(y-Xw) w=  arg  min(yXw)(yXw)
相比我们习惯的 y = w x + b y=wx+b y=wx+b这里是 X X X在左边~~
损失函数为 E = ( y − X w ) ⊤ ( y − X w ) E=(y-Xw)^\top(y-Xw) E=(yXw)(yXw)
w w w求偏导得到:
∂ E w ∂ w = 2 X ⊤ ( X w − y ) \frac{\partial{E_{w}}}{\partial{w}}=2X^\top(Xw-y) wEw=2X(Xwy)
具体的推导过程参考这篇博客。
∂ E w ∂ w = 2 ∂ ( y − X w ) ⊤ ∂ w ( y − X w )          ( 1 ) \frac{\partial{E_{w}}}{\partial{w}}=2\frac{\partial{(y-Xw)^\top}}{\partial w}(y-Xw)\ \ \ \ \ \ \ \ (1) wEw=2w(yXw)(yXw)        (1)
因为 ∂ x ⊤ x ∂ y = ∂ x ⊤ ∂ y x + ∂ x ⊤ ∂ y x = 2 ∂ x ⊤ ∂ y x \frac{\partial x^\top x}{\partial y}=\frac{\partial x^\top}{\partial y}x+\frac{\partial x^\top}{\partial y}x=2\frac{\partial x^\top}{\partial y}x yxx=yxx+yxx=2yxx

接着拆分 ∂ ( y − X w ) ⊤ \partial(y-Xw)^\top (yXw)因为和的转置等于转置的和,可以参考这个百度知道。
接着(1)式
∂ E ∂ w = 2 ∂ y ⊤ ∂ w ( y − X w )   − 2 ∂ ( X w ) ⊤ ∂ w ( y − X w )       ( 2 ) \frac{\partial E}{\partial w}=2\frac{\partial y^\top}{\partial w}(y-Xw)\ -2\frac{\partial (Xw)^\top}{\partial w}(y-Xw)\ \ \ \ \ (2) wE=2wy(yXw) 2w(Xw)(yXw)     (2)
那么很显然(2)式中第一项 y y y w w w无关即等于0。关于第二项,在参考的博客中有推导方式,这里这说结论就是有:
d ( X w ) ⊤ d w = X ⊤ \frac{d(Xw)^\top}{dw}=X^\top dwd(Xw)=X
所以(2)式的结果为:
∂ E ∂ w = 0 − 2 X ⊤ ( y − X w ) = X ⊤ ( X w − y ) \frac{\partial E}{\partial w}=0-2X^\top(y-Xw) \\ =X^\top(Xw-y) wE=02X(yXw)=X(Xwy)

对结果进行简单的移项、变形可以得到
w = ( X ⊤ X ) − 1 X ⊤ y w=(X^\top X)^{-1}X^\top y w=(XX)1Xy
那么最终学习得到的多元线性回归模型如下所示:
f ( x i ) = x i ( X ⊤ X ) − 1 X ⊤ y f(x_i)=x_i(X^\top X)^{-1}X^\top y f(xi)=xi(XX)1Xy

3、广义线性模型

我认为广义的线性模型主要是做了非线性的映射,什么意思呢?就是说 y = w x + b y=wx+b y=wx+b外面还会经过一个非线性函数,类似感知机通过激活函数引入非线性的特征,那么在这里:
f ( x i ) = g − 1 ( w x + b ) f(x_i)=g^{-1}(wx+b) f(xi)=g1(wx+b)其中g是一个单调可微的函数,参考西瓜书。

你可能感兴趣的:(机器学习,机器学习,线性回归)