多元線性回歸
一元線性回歸只有一個特征$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 公開課第二周
