机器学习公开课笔记(2):多元线性回归

多元线性回归

一元线性回归只有一个特征$x$,而多元线性回归可以有多个特征$x_1, x_2, \ldots, x_n$

假设 (Hypothesis):$h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\ldots+\theta_nx_n$

参数 (Parameters):$\theta_0, \theta_1, \ldots, \theta_n$

代价函数 (Cost function):$J(\theta_0, \theta_1, \ldots, \theta_n)=\frac{1}{2m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2$

目标 (Goal):$\min_\theta J(\theta)$

梯度下降 (Gradient Descent)

迭代更新参数$\theta$: $\theta_j = \theta_j - \alpha \frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$   for $j = 0, 1, 2, \ldots, n$

向量化实现 (Vectorized Implementation):$\theta = \theta - \alpha \frac{1}{m}(X^T(X\theta-y))$

Feature Scaling

动机:如果不同特征之间的数值量级差别太大,那么梯度下降的速度非常慢,为了加快算法的收敛速度,将各个特征划归到统一数量级,一般是[0, 1]或者[-1, 1]之间

Trick1: $x_j = \frac{x_j - \mu_j}{s_j}$, 其中 $\mu_j$表示第j个特征的均值, $s_j$表示第j个特征的范围(max - min)或者标准差(standard deviation)

Trick2: 学习速率的选择

  • 合理的选择学习速率,保证$J(\theta)$的值在每一次迭代后都是下降的;
  • 如果$J(\theta)$随迭代次数单调递增或者$J(\theta)$随迭代次数成波浪形(例如: \/\/\/\/\/\/), 这时候应该考虑选择较小的$\alpha$; 但是$\alpha$太小会导致收敛速度过慢
  • 为了正确的选择 $\alpha$,尝试序列 0.001, 0.01, 0.1, 1等

Normal Equation的数学推导

解析推导过程:
$$J(\theta)=\frac{1}{2m}\sum\limits_{i=1}^{m}\left(h_\theta(x^{x(i)})-y^{(i)}\right)$$
可以简化写成向量的形式:
$$J(\theta)=\frac{1}{2m}||X\theta-y||^2=\frac{1}{2m}(X\theta-y)^T(X\theta-y)$$
展开可得:
$$J(\theta)=\frac{1}{2m}[\theta^TX^TX\theta-y^TX\theta-\theta^TX^Ty+y^Ty]$$ 注意到$y^TX\theta$是一个标量,因此它与其转置$\theta^TX^Ty$是相等的,即中间两项是相等的,从而$J(\theta)$可以进一步化简为:
$$J(\theta) = \frac{1}{2m}[X^TX\theta-2\theta^TX^Ty+y^Ty]$$
对向量的求导与单变量的求导法则有诸多不同,这里不加证明给出如下两个重要的向量求导结论(具体可参照向量矩阵求导
\begin{equation}d(X^TAX)/dX = (dX^T/dX)AX + (d(AX)^T/dX)X = AX + A^TX \end{equation}
\begin{equation}d(X^TA)/dX = (dX^T/dX)A + (dA/dX)X^T = IA + 0X^T = A\end{equation}
根据结论(1), 第一项的求导结果为$X^TX\theta+X^TX\theta=2X^TX\theta$; 根据结论(2),第二项的求导结果为$-2x^Ty$;第三项不含$\theta$,求导结果当然为0,整合三项我们可以得到$J(\theta)$的导数$\frac{dJ(\theta)}{d\theta}$,
$$\frac{dJ(\theta)}{d\theta}=\frac{1}{2m}(2X^TX\theta-2X^Ty)$$
令该导数等于0,我们很容易得到
$$\theta=(X^X)^{-1}X^Ty$$
这就是使得代价函数$J(\theta)$取得最小值对应的$\theta$。

梯度下降和Normal Equation优劣对比

 
Gradient Descent Normal Equation
需要选择合适的$\alpha$ 不需要选择$\alpha$
需要不断的迭代 不需要迭代
当特征非常多时(n非常大),算法依然表现良好 当n非常大时,计算速度非常慢,因为需要计算$(X^TX)^{-1}$复杂度为$O(n^3)$

参考文献

[1] Andrew Ng Coursera 公开课第二周

posted @ 2015-12-16 10:17  python27  阅读(6704)  评论(0编辑  收藏  举报