本文不讨论监督学习、非监督学习等概念,主要回顾一下线性回归算法的实现。
线性回归
简单的说线性回归就是用直线去拟合数据,因此找出直线同时说明这条直线是最合适的就是线性回归要做的事情。
既然要找直线,先写出直线方程
y(x)=wx+b y ( x ) = w x + b
当有2个输入条件(节点),方程如下
y(x)=w1x1+w2x2+b y ( x ) = w 1 x 1 + w 2 x 2 + b
换用矩阵简单表示(
w0=1 w 0 = 1 )
y(x)=wTX y ( x ) = w T X
扩展为n个输入条件
y^=∑i=0nwixi=wTX y ^ = ∑ i = 0 n w i x i = w T X
现在根据已知的x值求出最合适的
w w 。什么是最合适的?从最初的目标来看,希望找出的直线能够代表所有的输入数据。因此引入下面的误差值
ϵ ϵ
ϵ(i)=y(i)−wTx(i) ϵ ( i ) = y ( i ) − w T x ( i )
y(i) y ( i ) 表示标签值,也就是真实值。通过比较真实值和预测值(线性方程计算值)之间的差异来衡量线性方程。差异越小,表明线性方程越好。
下面
假设 ϵ(i) ϵ ( i ) 独立同分布,且服从均值为0的正态分布。于是有了下面的正态分布公式
p(ϵ(i))=12π−−√σexp(−(ϵ(i))22σ2) p ( ϵ ( i ) ) = 1 2 π σ e x p ( − ( ϵ ( i ) ) 2 2 σ 2 )
带入
p(y(i)|x(i);w)=12π−−√σexp(−(y(i)−wTx(i))22σ2) p ( y ( i ) | x ( i ) ; w ) = 1 2 π σ e x p ( − ( y ( i ) − w T x ( i ) ) 2 2 σ 2 )
我们希望概率越大越好,因为概率越大,
ϵ(i) ϵ ( i ) 越接近0,表示误差越小。
根据上面的假设,
ϵ(i) ϵ ( i ) 独立同分布。因而联合密度等于所有
ϵ ϵ 密度的乘积
P=∏i=1mp(y(i)|x(i);w)=∏i=1m12π−−√σexp(−(y(i)−wTx(i))22σ2) P = ∏ i = 1 m p ( y ( i ) | x ( i ) ; w ) = ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − w T x ( i ) ) 2 2 σ 2 )
上面这个式子的含义是指定
x x 和
w w 值时
y y 的概率。也就是找到合适的
w w ,使概率最大。继续往下,很容易想到极大似然估计,两边取对数
logP=∑i=1mlogp(y(i)|x(i);w)=mlog12π−−√σ−1σ2.12∑i=1m(y(i)−wTx(i))2 log P = ∑ i = 1 m log p ( y ( i ) | x ( i ) ; w ) = m log 1 2 π σ − 1 σ 2 . 1 2 ∑ i = 1 m ( y ( i ) − w T x ( i ) ) 2
记
J(w)=12∑i=1m(y(i)−y^(i))2 J ( w ) = 1 2 ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2
其中
y^(i)=wTx(i) y ^ ( i ) = w T x ( i )
对于P的最大值,也就是J的最小值。求导找极值点
J(w)=12∑i=1m(y(i)−y^(i))2=12(Xw−y)T(Xw−y) J ( w ) = 1 2 ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 = 1 2 ( X w − y ) T ( X w − y )
∂J(w)∂w=∂(12∑mi=1(y(i)−y^(i))2)∂w=∂(12(Xw−y)T(Xw−y))∂w=∂(12(wTXTXw−wTXTy−yTXw+yTy))∂w=12(2XTXw−XTy−(yTX)T)=XTXw−XTy=0 ∂ J ( w ) ∂ w = ∂ ( 1 2 ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 ) ∂ w = ∂ ( 1 2 ( X w − y ) T ( X w − y ) ) ∂ w = ∂ ( 1 2 ( w T X T X w − w T X T y − y T X w + y T y ) ) ∂ w = 1 2 ( 2 X T X w − X T y − ( y T X ) T ) = X T X w − X T y = 0
可知:
w=(XTX)−1XTy w = ( X T X ) − 1 X T y
梯度下降
梯度下降法是比较常见的求极值点的方法,小批量梯度下降法(Mini-Batch Gradient Descent,MBGD)类似,下面简单介绍
根据前面的分析,目标损失函数为
J(w)=12m∑i=1m(y(i)−y^(i))2 J ( w ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2
其中
y^(i)=wTx(i) y ^ ( i ) = w T x ( i )
求梯度:
∂J(w)∂w=−1m∑i=1m(y(i)−y^(i))x(i) ∂ J ( w ) ∂ w = − 1 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) x ( i )
更新:
w=w−α∂J(w)∂w w = w − α ∂ J ( w ) ∂ w
其中 α α 为学习率,用来控制梯度下降中每次移动的速度。α的值需要调试:太小会使整个过程过慢,也容易陷入局部最优解;太大容易错过极值点。
另外也可以将b看成偏差,那么 y^=wTX+b y ^ = w T X + b ,损失函数
J(w,b)=12m∑i=1m(y(i)−y^(i))2 J ( w , b ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2
其中
y^(i)=wTx(i)+b y ^ ( i ) = w T x ( i ) + b
w=w−α∂J(w,b)∂w w = w − α ∂ J ( w , b ) ∂ w
b=b−α∂J(w,b)∂b b = b − α ∂ J ( w , b ) ∂ b