本文是对由Stanford大学Andrew Ng讲授的机器学习课程进行个人心得总结。
在上一篇文章里我们讨论了关于线性回归和梯度下降的相关知识,本文主要是接着该篇文章的内容继续深入的讨论线性回归中存在的两个优化点,最小二乘法和加权线性回归。
##最小二乘法
最小二乘法是从之前的梯度下降方法中优化而来。当我们计算梯度下降时,需要通过迭代的方式不停地计算$\ Θ $ 的结果,该过程花费的时间较长。
(注:梯度下降的公式为 $\ Θ_j := Θ_j - \alpha∑_{(i=0)} ^m(h_Θ(x^{(i)})-y)x_j^{(i)} $ )
最小二乘法是利用矩阵计算对该过程进行优化,其在计算结果的过程中省去了迭代的步骤,故可以较为快速的计算得到最终$\ Θ $ 的结果。在讲述最小二乘法之前,我们需要先明确几个其中用到的矩
阵运算的规则:
我们定义一个函数$\ J(Θ)$, 其矩阵导数为对$\ Θ$ 的各个维度求导:
$\ \nabla_ΘJ = \begin{bmatrix} \frac{\partial J}{\partial Θ_0} \ \vdots \ \frac{\partial J}{\partial Θ_n} \end{bmatrix}\quad \in R^{n+1}$
那么之前的梯度下降公式可以表示为:
$\ Θ := Θ - \alpha\nabla_ΘJ $
$\ \alpha$为学习率。
假设函数$\ f$ 是$\ m*n $ 维的矩阵映射,其中的计算为实数运算。现定义实数矩阵A,映射 $\ f(A) $ 对 A的梯度为:
$\ \nabla_Af(A) = \begin{bmatrix} \frac{\partial f}{\partial A_{11}} & \dots & \frac{\partial f}{\partial A_{1n}} \ \vdots & \ddots & \vdots \ \frac{\partial f}{\partial A_{n1}} & \dots & \frac{\partial f}{\partial A_{nn}} \end{bmatrix}\quad$
另外 如果 $\ A \in R^{n*n} $ 那么 矩阵A的迹表示为$\ trA =\sum_{i=0}^nA_{ii} $
以下是可以推论并且证明的公式:
$\ trA=trA^T$
$\ trAB = trBA$
$\ trABC = trCAB$
$\ 如果f(A) =trAB, 那么 \nabla_Af(A) = B^T $
$\ \nabla_A trABA^TC = CAB + C^TAB^T $
注 以上公式主要利用了矩阵计算的一些知识,之后会用于矩阵的变换计算,相关证明参见该链接。
这是我们将所有训练集写入一个矩阵$\ X$,输出结果记为矩阵$\ Y$ 则这两个矩阵表示为
$\ X = \begin{bmatrix} --(x^{(1)})^T-- \ \vdots \--(x^{(n)})^T--\end{bmatrix}$
$\ Y = \begin{bmatrix} (y^{(1)})^T\ \vdots \(y^{(n)})^T\end{bmatrix}$
另外,$\ XΘ$ 的乘积为
$\ XΘ= \begin{bmatrix} (x^{(1)})^TΘ \ \vdots \(x^{(n)})^TΘ\end{bmatrix} = \begin{bmatrix} h_Θ(x^{(1)}) \ \vdots \h_Θ(x^{(n)})\end{bmatrix}$
由此推出
$\ \frac{1}{2}(XΘ- Y)^T(XΘ- Y) = J(Θ)$
故对$\ J(Θ)$ 求导就是对$\ \frac{1}{2}(XΘ- Y)^T(XΘ- Y)$ 求导。
对于函数的极值点就是导数为0处,此时令$\ \nabla_Θ J(Θ) = \vec{0}$ ,
$\ \frac{1}{2}\nabla_Θ(XΘ- Y)^T(XΘ- Y) = \frac{1}{2}\nabla_Θtr(Θ^TX^TXΘ -Θ^TX^TY - Y^TXΘ +Y^TY )$
$\ = X^TXΘ - X^TY$
上面的最后一步变化需要套用之前的一些性质,令最后一步为0,计算$\ Θ$ 为:
$\ Θ=(X^TX)^{-1}X^TY$
##局部加权线性回归
局部加权线性回归是对线性回归的一种扩展,其主要思想是让距离较近的点产生的影响大于距离较远的点。为此我们设计了一个加权因子$\ w(i)$, 该加权因子表示如下:
$\ w(i) = exp(- \frac {(x_i -x)^2}{2})$
由此原有的$\ J(Θ)$ 可表示为
$\ J(Θ)= \frac {1}{2} \sum_{i=0}^nw(i)[(h_θ (x^{(i)})-y^{(i)})]^2 $
由于该加权因子的存在,使得离i越靠近的点对运算结果产生的影响越大,避免了较远数据点产生的影响。