1、线性回归
线性回归假设特征和label满足线性关系。其实线性关系的表达能力特
别强,每个特征对结果的影响强弱可以由特征前的权重所体现。
在这里,我们用 x1,x2,x3,...,xn 来表示特征。 θ 为权重
参数,表示每个特征的影响力。
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
定义损失函数为:
J(θ)=12∑mi=1(hθ(xi)−yi)2
为了找到使得目标函数最小的 θ 值,常用两种方法:梯度下降
法和最小二乘法。
2、梯度下降
2.1、批量梯度下降(Batch Gradient Descent):
批梯度下降法的主要思路:
(1)将 J(θ) 对所有的权重参数 θ 进行求导,得到每个
θ 对应的梯度:
∂J(θ)θj=∑mi=1(hθ(xi)−yi)xij
(2) 由于要最小化损失函数,因而按每个参数 θ 的梯度负方向来
更新 θ :
θj=θj−α∂J(θ)θj
其中 α 为步长,它能限制收敛的速度,若 α 的值太小,
那么收敛的速度会比较慢;若 α 的值太大,则其可能会跨过最
优值。
(3)重复执行步骤(1)、(2),直到损失函数收敛(如某两次的损
失函数值之差满足所设定的终止条件)。
从上面的算法可以看出,批量梯度下降在每一步更新参数时,都需要
用到训练集里的所有数据。若训练集特别大,那么参数更新的速度会
非常慢。在这种情况下,我们可以使用随机梯度下降。
2.2、随机梯度下降(Stochastic Gradient Descent):
随机梯度下降的思路如下:
(1)在随机梯度下降里,我们在更新参数时,每次只使用一个训练样
本。第i个样本在参数 θ 处的导数为:
∂Ji(θ)θj=(hθ(xi)−yi)xij
(2)更新参数 θ :
θj=θj−α∂Ji(θ)θj
(3)重复执行步骤(1)、(2),直到损失函数收敛。
随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情
况(例如几十万),那么可能只用其中几万条或者几千条的样本,就
已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需
要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就
需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要
多,使得SGD并不是每次迭代都向着整体最优化方向。最小化每条样
本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方
向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全
局最优解附近。
3、最小二乘法
令
X=⎡⎣⎢⎢⎢−(x(1))T−−(x(2))T−−x(m))T−⎤⎦⎥⎥⎥
θ=⎡⎣⎢⎢θ1θ2θn⎤⎦⎥⎥
Y=⎡⎣⎢⎢⎢y(1)y(2)y(m)⎤⎦⎥⎥⎥
则损失函数变为
J(θ)=12(Xθ−Y)T(Xθ−Y)
迹运算和导数的一些结论:
(1) tr(AB)=tr(BA)
(2) tr(ABC)=tr(CAB)=tr(BCA)
(3) tr(A)=tr(AT)
(4) tr(a)=a #其中a为实数。
(5) ▽Atr(AB)=BT
(6) ▽Atr(ABATC)=CAB+CTABT
则:
▽θJ=12▽θ(θTXTXθ−YTXθ−θTXTY+YTY)
其中 ▽θθTXTXθ=▽θθIθTXTX=2XTXθ
▽θYTXθ=▽θθTXTY=XTY
则 ▽θJ=2XTXθ−2XTY
则 θ 的最优值为 (XTX)−1XTY 。