人工智能算法学习笔记(二)——线性模型之线性回归

根据上一篇开篇的那个思维导图,还是从有监督机器学习开始,其中线性模型里的算法是大多数机器学习者最初接触的,那么就从它开始吧。

一、线性模型

根据周志华老师的《机器学习》(俗称西瓜书)中的定义,线性模型是指其通过属性的线性组合来进行预测的函数:
f ( x ) = w 1 ∗ x 1 + w 2 ∗ x 2 + w 3 ∗ x 3 + . . . + w d ∗ x d + b f(x)=w_1*x_1+w_2*x_2+w_3*x_3+...+w_d*x_d+b f(x)=w1x1+w2x2+w3x3+...+wdxd+b
用一般的向量形式,则写成:
f ( x ) = w T ∗ x + b f(x)=w^{T}*x+b f(x)=wTx+b,其中 w = ( w 1 , w 2 , . . . , w n ) w=(w_1,w_2,...,w_n) w=(w1,w2,...,wn)
在学到 w w w b b b之后,模型也就确定了。因此,我们对模型有了一个初步了解,就是说要用训练集学习出一条线(or更高维度的平面或者其他什么)作为模型函数,而究竟这条线是用来拟合数据还是分类数据,就要看模型是属于回归模型还是分类模型了。
比如线性回归是属于回归模型的,而逻辑回归是属于分类模型的。我会分两章来分别记录这两种模型。

二、线性回归

2.1 线性回归概述

线性回归是对给定的训练数据集进行线性拟合,从而找到一条能使得大多数样本点都尽可能被准确预测的拟合线,比如公式如下:
f ( x i ) = w T ∗ x i + b f(x_i)=w^{T}*x_i+b f(xi)=wTxi+b,使得 f ( x i ) ≈ y i f(x_i)\approx y_i f(xi)yi
二维下的线性回归是一条线,三维下的是一个平面,N维。。。(画不出来了)
二维的线性回归模型
二维的线性回归模型

三维的线性回归模型
三维的线性回归模型

2.2 线性回归的学习策略

对于线性回归问题,我们最终的目的就是学习得到 w w w b b b,建立起这个模型公式,而目前最首要的问题就是:如何确定 w w w b b b最优就是接下来要学习的目标了。
求解 w w w b b b的最优解,常用的有两种方法(我目前所学到的,以后如果遇到更多解法且消化了再补充记录),一种是最小二乘法,另一种是梯度下降法。

2.2.1 最小二乘法

接下来将通过一个贴近真实世界的例子来使用最小二乘法来学习到 w w w b b b.
以估计房价为例吧,假设真实世界里房子的面积 x x x和房价 y y y的关系是线性关系,且真实世界存在无法估计的误差 ϵ \epsilon ϵ,由于真实世界影响房价的因素(也就是房屋特征)很多,所以本例中就列举两个因素(特征,本例中比如房屋的面积 x 1 x_1 x1和卧室的数量 x 2 x_2 x2),这样模型就是 y = w 0 + w 1 ∗ x 1 + w 2 ∗ x 2 + ϵ y=w_0+w_1*x_1+w_2*x_2+\epsilon y=w0+w1x1+w2x2+ϵ w 0 w_0 w0 w 1 w_1 w1 w 2 w_2 w2的值让误差的平方和 ϵ T ϵ \epsilon^{T}\epsilon ϵTϵ最小
假如我们收集了五条数据:
y 1 = w 0 + w 1 ∗ x 11 + w 2 ∗ x 12 + ϵ 1 y_1=w_0+w_1*x_{11}+w_2*x_{12}+\epsilon_1 y1=w0+w1x11+w2x12+ϵ1
y 2 = w 0 + w 1 ∗ x 21 + w 2 ∗ x 22 + ϵ 2 y_2=w_0+w_1*x_{21}+w_2*x_{22}+\epsilon_2 y2=w0+w1x21+w2x22+ϵ2
y 3 = w 0 + w 1 ∗ x 31 + w 2 ∗ x 32 + ϵ 3 y_3=w_0+w_1*x_{31}+w_2*x_{32}+\epsilon_3 y3=w0+w1x31+w2x32+ϵ3
y 4 = w 0 + w 1 ∗ x 41 + w 2 ∗ x 42 + ϵ 4 y_4=w_0+w_1*x_{41}+w_2*x_{42}+\epsilon_4 y4=w0+w1x41+w2x42+ϵ4
y 5 = w 0 + w 1 ∗ x 51 + w 2 ∗ x 52 + ϵ 5 y_5=w_0+w_1*x_{51}+w_2*x_{52}+\epsilon_5 y5=w0+w1x51+w2x52+ϵ5
用矩阵将这组式子进行简化,如下所示:
y = [ y 1 y 2 y 3 y 4 y 5 ] y=\begin{bmatrix}y_1\\ y_2\\ y_3\\ y_4\\ y_5\end{bmatrix} y=y1y2y3y4y5 X = [ 1 x 11 x 12 1 x 21 x 22 1 x 31 x 32 1 x 41 x 42 1 x 51 x 52 ] X=\begin{bmatrix} 1& x_{11}&x_{12} \\ 1& x_{21}&x_{22} \\ 1& x_{31}&x_{32} \\ 1& x_{41}&x_{42} \\ 1& x_{51}&x_{52} \end{bmatrix} X=11111x11x21x31x41x51x12x22x32x42x52 w = [ w 0 w 1 w 2 ] w=\begin{bmatrix} w_0\\ w_1\\ w_2 \end{bmatrix} w=w0w1w2 ϵ = [ ϵ 1 ϵ 2 ϵ 3 ϵ 4 ϵ 5 ] \epsilon =\begin{bmatrix} \epsilon _1\\ \epsilon _2\\ \epsilon _3\\ \epsilon _4\\ \epsilon _5 \end{bmatrix} ϵ=ϵ1ϵ2ϵ3ϵ4ϵ5
那么 y = X w + ϵ y=Xw+\epsilon y=Xw+ϵ,最小二乘法的思想就是要找到 w w w误差的平方和最小,即 m i n w   ϵ T ϵ \underset{w}{min} \:\epsilon^{T}\epsilon wminϵTϵ
由于 ϵ = y − X w \epsilon=y-Xw ϵ=yXw ( A B ) T = B T A T (AB)^{T}=B^{T}A^{T} (AB)T=BTAT且矩阵代数符合乘法分配律,因此:
ϵ T ϵ   = ( y − X w ) T ( y − X w ) \epsilon^{T}\epsilon\:=(y-Xw)^T(y-Xw) ϵTϵ=(yXw)T(yXw)
= ( y − X w ) T y − ( y − X w ) T X w \qquad=(y-Xw)^Ty-(y-Xw)^TXw =(yXw)Ty(yXw)TXw
= y T y − w T X T y − y T X w + w T X T X w \qquad=y^Ty-w^TX^Ty-y^TXw+w^TX^TXw =yTywTXTyyTXw+wTXTXw
由于 w T X T y w^TX^Ty wTXTy y T X w y^TXw yTXw都是 1 ∗ 1 1*1 11的标量,对于标量 a a a a T = a a^T=a aT=a,因此 w T X T y = ( w T X T y ) T = y T X w w^TX^Ty=(w^TX^Ty)^T=y^TXw wTXTy=(wTXTy)T=yTXw
那么 ϵ T ϵ = y T y − 2 w T X T y + w T X T X w \epsilon^T\epsilon=y^Ty-2w^TX^Ty+w^TX^TXw ϵTϵ=yTy2wTXTy+wTXTXw
ϵ T ϵ \epsilon^T\epsilon ϵTϵ的梯度为0即可求得最小值 w ^ \widehat{w} w ,梯度就是导数的标量、向量或者矩阵形式,用 ▽ \triangledown 表示梯度。
对于 ϵ T ϵ \epsilon^T\epsilon ϵTϵ的梯度被定义为:

▽ w = [ ∂ ϵ T ϵ ∂ w 0 ∂ ϵ T ϵ ∂ w 1 ∂ ϵ T ϵ ∂ w 2 ] \triangledown_w=\begin{bmatrix} \frac{\partial \epsilon^T\epsilon}{\partial w_0}\\\\ \frac{\partial \epsilon^T\epsilon}{\partial w_1}\\\\ \frac{\partial \epsilon^T\epsilon}{\partial w_2} \end{bmatrix} w=w0ϵTϵw1ϵTϵw2ϵTϵ
分别对 w 0 , w 1 , w 2 w0,w1,w2 w0,w1,w2求偏导,组成向量就是 ϵ T ϵ \epsilon^T\epsilon ϵTϵ的梯度。
那么如何求呢?
可以将其分为三部分 y T y y^Ty yTy − 2 w T X T y -2w^TX^Ty 2wTXTy w T X T X w w^TX^TXw wTXTXw分别对 w w w求梯度。
由于 y T y y^Ty yTy中并没有 w w w,因此 ▽ w y T y = 0 \triangledown_wy^Ty=0 wyTy=0;
在求另外两项梯度前,先看如下情况:
情况1:求 ▽ w w T a , a = [ a 1 a 2 a 3 ] \triangledown_ww^Ta,a=\begin{bmatrix} a1\\ a2\\ a3\end{bmatrix} wwTa,a=a1a2a3

用标量形式表示 w T a = w 0 a 0 + w 1 a 1 + w 2 a 2 w^Ta=w_0a_0+w_1a_1+w_2a_2 wTa=w0a0+w1a1+w2a2,可得
▽ w w T a = [ ∂ w T a ∂ w 0 ∂ w T a ∂ w 1 ∂ w T a ∂ w 2 ] = [ a 0 a 1 a 2 ] = a \triangledown_ww^Ta=\begin{bmatrix} \frac{\partial w^Ta}{\partial w_0}\\\\ \frac{\partial w^Ta}{\partial w_1}\\\\\frac{\partial w^Ta}{\partial w_2} \end{bmatrix}=\begin{bmatrix} a0\\ a1\\ a2 \end{bmatrix}=a wwTa=w0wTaw1wTaw2wTa=a0a1a2=a
因此 ϵ T ϵ \epsilon^T\epsilon ϵTϵ − 2 w T X T y -2w^TX^Ty 2wTXTy的梯度是 − 2 X T y -2X^Ty 2XTy

情况2:对于 ▽ w w T A w \triangledown _ww^TAw wwTAw A A A必须为对称矩阵,即:
A = [ a 11 a 12 a 13 a 12 a 22 a 23 a 13 a 23 a 33 ] A=\begin{bmatrix} a_{11} & a_{12} &a_{13} \\ a_{12} & a_{22} &a_{23} \\ a_{13}&a_{23} & a_{33} \end{bmatrix} A=a11a12a13a12a22a23a13a23a33
可得
w T A w = [ w 0 w 1 w 2 ] [ a 11 a 12 a 13 a 12 a 22 a 23 a 13 a 23 a 33 ] [ w 0 w 1 w 2 ] = [ w 0 w 1 w 2 ] [ a 11 w 0 + a 12 w 1 + a 13 w 2 a 12 w 0 + a 22 w 1 + a 23 w 2 a 13 w 0 + a 23 w 1 + a 33 w 2 ] = a 11 w 0 2 + a 22 w 1 2 + a 33 w 2 2 + 2 a 12 w 0 w 1 + 2 a 13 w 0 w 2 + 2 a 23 w 1 w 2 w^TAw=\begin{bmatrix} w_0 & w_1& w_2 \end{bmatrix}\begin{bmatrix} a_{11} & a_{12} &a_{13} \\ a_{12} & a_{22} &a_{23} \\ a_{13}&a_{23} & a_{33} \end{bmatrix}\begin{bmatrix} w_0\\\\ w_1\\\\ w_2 \end{bmatrix}\\ \qquad\quad=\begin{bmatrix} w_0 & w_1& w_2 \end{bmatrix}\begin{bmatrix} a_{11}w_0+a_{12}w_1+a_{13}w_2\\ a_{12}w_0+a_{22}w_1+a_{23}w_2\\ a_{13}w_0+a_{23}w_1+a_{33}w_2 \end{bmatrix}\\ \qquad\quad=a_{11}w_0^2+a_{22}w_1^2+a_{33}w_2^2+2a_{12}w_0w_1+2a_{13}w_0w_2+2a_{23}w_1w_2 wTAw=[w0w1w2]a11a12a13a12a22a23a13a23a33w0w1w2=[w0w1w2]a11w0+a12w1+a13w2a12w0+a22w1+a23w2a13w0+a23w1+a33w2=a11w02+a22w12+a33w22+2a12w0w1+2a13w0w2+2a23w1w2
因此,
▽ w w T A w = [ ∂ w T A w ∂ w 0 ∂ w T A w ∂ w 1 ∂ w T A w ∂ w 2 ] = [ 2 a 11 w 0 + 2 a 12 w 1 + 2 a 13 w 2 2 a 12 w 0 + 2 a 22 w 1 + 2 a 23 w 2 2 a 13 w 0 + 2 a 23 w 1 + 2 a 33 w 2 ] = 2 A w \triangledown_ww^TAw=\begin{bmatrix} \frac{\partial w^TAw}{\partial w0}\\\\ \frac{\partial w^TAw}{\partial w1}\\\\ \frac{\partial w^TAw}{\partial w2} \end{bmatrix}=\begin{bmatrix} 2a_{11}w_0+2a_{12}w_1+2a_{13}w_2\\\\ 2a_{12}w_0+2a_{22}w_1+2a_{23}w_2\\\\ 2a_{13}w_0+2a_{23}w_1+2a_{33}w_2 \end{bmatrix}=2Aw wwTAw=w0wTAww1wTAww2wTAw=2a11w0+2a12w1+2a13w22a12w0+2a22w1+2a23w22a13w0+2a23w1+2a33w2=2Aw

对于 ϵ T ϵ \epsilon^T\epsilon ϵTϵ中的 w T X T X w w^TX^TXw wTXTXw,无论有多少条数据, X T X X^TX XTX都是 3 × 3 3\times 3 3×3对称矩阵,因此可得 w T X T X w w^TX^TXw wTXTXw的梯度是 2 X T X w 2X^TXw 2XTXw

由以上推导可得梯度是:
▽ w ϵ T ϵ = [ ∂ ϵ T ϵ ∂ w 0 ∂ ϵ T ϵ ∂ w 1 ∂ ϵ T ϵ ∂ w 0 ] = 2 X T X w − 2 X T y \triangledown_w\epsilon^T\epsilon=\begin{bmatrix} \frac{\partial \epsilon^T\epsilon}{\partial w_0}\\\\ \frac{\partial \epsilon^T\epsilon}{\partial w_1}\\\\ \frac{\partial \epsilon^T\epsilon}{\partial w_0}\\\\ \end{bmatrix}=2X^TXw-2X^Ty wϵTϵ=w0ϵTϵw1ϵTϵw0ϵTϵ=2XTXw2XTy

ϵ T ϵ \epsilon^T\epsilon ϵTϵ最小时梯度为0,梯度上的各项偏导数为0,由此可得该位置的 w ^ \hat{w} w^就是所求的 w w w
2 X T X w ^ − 2 X T y = 0 2X^TX\hat{w}-2X^Ty=0 2XTXw^2XTy=0
X T X w ^ = X T y X^TX\hat{w}=X^Ty XTXw^=XTy
w ^ = ( X T X ) − 1 X T y \hat{w}=\left ( X^TX \right )^{-1}X^Ty w^=(XTX)1XTy

2.2.2 梯度下降法

前文的最小二乘法直接对梯度求导找出极值来求线性回归损失函数的最优解,它为非迭代法
本节将记录一种新的方法来求损失函数的极值:梯度下降法(Gradient Descendent, GD),梯度下降法为最优化算法通常用于求解函数的极值,梯度下降法为迭代法,给定一个β在梯度下降最快方向调整β,经过N次迭代后找到极值,也就是局部最小值或全局最小值。
来个梯度下降核心算法直接的表达:
R e p e a t { θ j : = θ j − α ∂ J ( θ 0 , θ 1 , . . . , θ n ) ∂ θ j } Repeat \left \{ \\ \theta _{j}:=\theta_{j}-\alpha \frac{\partial J\left (\theta_{0},\theta_{1},...,\theta_{n} \right )}{\partial \theta_{j}}\\ \right \} Repeat{θj:=θjαθjJ(θ0,θ1,...,θn)}
可以看到,针对每一个系数,都采用对其取偏导数,然后使用一个合适的学习率参数 α \alpha α进行相乘并递减,重复这个过程,直到代价函数收敛到某个范围内。

随机梯度下降批量梯度下降是两种迭代求解思路。
对于如下:
h ( θ ) = ∑ j = 0 n θ j x j h\left ( \theta \right )=\sum_{j=0}^{n}\theta _{j}x_{j} h(θ)=j=0nθjxj
J ( θ ) = 1 2 m ∑ i = 1 m ( y i − h θ ( x i ) ) 2 J\left ( \theta \right )=\frac{1}{2m}\sum_{i=1}^{m}\left ( y^{i}-h_{\theta }\left ( x^{i} \right ) \right )^{2} J(θ)=2m1i=1m(yihθ(xi))2
h ( θ ) h\left ( \theta \right ) h(θ)是要拟合的函数, J ( θ ) J\left ( \theta \right ) J(θ)是损失函数, θ \theta θ是参数,要迭代求解的值, θ \theta θ求解出来了,那么最终要拟合的函数 h ( θ ) h\left ( \theta \right ) h(θ)就出来了。其中m是训练集的记录条数,i是参数的个数。

批量梯度下降(BGD)
求解思路如下:

  1. J ( θ ) J\left ( \theta \right ) J(θ) θ \theta θ求偏导,得到每个 θ \theta θ对应的梯度,
    ∂ J ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i \frac{\partial J\left ( \theta \right )}{\partial\theta_j}=-\frac{1}{m}\sum_{i=1}^{m}\left ( y^i-h_\theta\left ( x^i \right ) \right )x_j^i θjJ(θ)=m1i=1m(yihθ(xi))xji
  2. 由于是要最小化风险函数,所以按每个参数 θ \theta θ的梯度负方向,来更新每个 θ \theta θ
    θ j = θ j − 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i \theta_j=\theta_j-\frac{1}{m}\sum_{i=1}^{m}\left ( y^i-h_\theta\left ( x^i \right ) \right )x_j^i θj=θjm1i=1m(yihθ(xi))xji
  3. 从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果m很大,那么可想而知这种方法的迭代速度!!!因此,就引入了另外一种方法,随机梯度下降。
    PS:批量梯度下降每次学习都是用整个训练集,因此其优点在于每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点(凸函数收敛于全局极值点非凸函数可能会收敛于局部极值点),但是其缺点在于每次学习时间过长,并且如果训练集很大以至于需要消耗大量的内存,并且全量梯度下降不能进行在线模型参数更新。

随机梯度下降(SGD)
求解思路如下:

  1. 上面的风险函数可以写成如下形式,损失函数对应的是训练集中每个样本的粒度,而上面批量梯度下降对应的是所有的训练样本:
    J ( θ ) = 1 m ∑ i = 1 m 1 2 ( y i − h θ ( x i ) ) 2 = 1 m ∑ i = 1 m c o s t ( θ , ( x i , y i ) ) J\left ( \theta \right )=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}\left ( y^i-h_\theta\left ( x^i \right ) \right )^2=\frac{1}{m}\sum_{i=1}^{m}cost\left ( \theta,\left ( x^i,y^i \right ) \right ) J(θ)=m1i=1m21(yihθ(xi))2=m1i=1mcost(θ,(xi,yi))
    c o s t ( θ , ( x i , y i ) ) = 1 2 ( y i − h θ ( x i ) ) 2 cost\left ( \theta,\left ( x^i,y^i \right ) \right )=\frac{1}{2}\left ( y^i-h_\theta\left ( x^i \right ) \right )^2 cost(θ,(xi,yi))=21(yihθ(xi))2
  2. 每个样本的损失函数对 θ \theta θ求偏导得到对应梯度,来更新 θ \theta θ
    θ j = θ j + ( y i − h θ ( x i ) ) x j i \theta_j=\theta_j+\left ( y^i-h_\theta\left(x^i\right) \right )x_j^i θj=θj+(yihθ(xi))xji
  3. 随机梯度下降是通过每个样本来迭代更新一次,如果样本很大的情况(如几十万),那么可能只用其中的几万或者几千条的样本,就已经将 θ \theta θ迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

两者区别

  1. 批量梯度下降——最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。
  2. 随机梯度下降——最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体方向是向全局最优解的,最终的结果往往是在全局最优解附近。

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值