本文主要從一個例子開始說說線性迴歸模型以及線性迴歸模型的損失函式,求解方法和機率解釋。不涉及統計學裡的迴歸分析等諸多細節。
例子
假設我們中介手上有一些房屋銷售的資料(北京的房價太高了):
面積(平方米) | 價格(萬) |
80 | 320 |
90 | 365 |
100 | 380 |
120 | 400 |
150 | 500 |
有個人有個130平方米的房子要賣,中介該建議房東賣多少錢呢?
我們可以把上面的銷售資料畫在一張圖上,然後找一條曲線去擬合這些點,擬合出來的結果如下:
然後我們在橫座標上找到130,在縱座標上找到對應的點,比450稍微少一點點,於是中介就可以建議房東賣450萬了。
上面的例子只考慮了房屋的面積,沒有考慮房屋的朝向(朝南的房子一般要貴一些),地理位置(二環裡的房子要比六環外貴),房屋的建造年份(新房總是比舊房貴)等等,如果我們考慮了很多很多跟房子相關的因素,那上面的那條線(已經不是簡單的二維平面裡的直線了,是一個多維空間的超平面)該怎麼畫呢?這就是一個典型的線性迴歸問題。
模型
如果我們用 $\mathbf{x}=(x_1,x_2,\ldots,x_n)^T$去描述一個房屋的特徵,其中$x_1$代表房屋面積,$x_2$代表房屋朝向,$x_3$代表房屋地理位置等等,我們擬合的超平面為:
$\large h(\mathbf{x}) = h_{\mathbf{w}}(\mathbf{x}) = w_0 + w_1 x_1 + w_2 x_2 + \ldots + w_n x_n $
上式是一個關於 $\mathbf{w}$ 的線性函式,這就是線性迴歸的模型,線性是針對未知引數 $\mathbf{w}$ 來說的。一旦我們知道了 $\mathbf{w}$,給定一個房屋資訊$mathbf{x},我們就可以根據上面的公式去預測房屋的價格。
為了記號上的方便,一般我們引入 $x_0=1$,則我們的線性迴歸模型可以寫成:
$\large h(\mathbf{x}) = h_{\mathbf{w}}(\mathbf{x}) = w_0 x_0+ w_1 x_1 + w_2 x_2 + \ldots + w_n x_n = \mathbf{w}^T \mathbf{x}$
假設我們已經收集到 $m$ 條房屋的銷售記錄:
$\large (\mathbf{x}^1, y^1), (\mathbf{x}^2, y^2), \ldots, (\mathbf{x}^m, y^m)$
其中$\mathbf{w}$是房屋的特徵,$y$表示房屋的價格
策略
我們的目的是求出最合適一個最$\mathbf{w}$,讓真實的房屋價格 $y$ 和房屋的預測價格 $h_{\mathbf{w}}(\mathbf{x})$ 越靠近越好(備註:到後面講到模型的泛化能力和過擬合的時候會說到這句話其實不那麼對),為此我們定義一個損失函式,它表現了某個房屋真實的價格和預測價格到底差多遠:
$\large L(\mathbf{w}, (\mathbf{x}^i, y^i)) = (h_{\mathbf{w}}(\mathbf{x}^i) - y^i)^2 $
對所有銷售資料而言,我們平均差值為:
$\large L(\mathbf{w}) = \frac {1}{m} \sum_{i=1}^m (h_{\mathbf{w}}(\mathbf{x}^i) - y^i)^2 $
所以我們的目的就變成求一個$\mathbf{w}$,讓上面的式子最小:
$\large min_{\mathbf{w}} \frac {1}{m} \sum_{i=1}^m (h_{\mathbf{w}}(\mathbf{x}^i) - y^i)^2 = min_{\mathbf{w}} \frac {1}{2} \sum_{i=1}^m (h_{\mathbf{w}}(\mathbf{x}^i) - y^i)^2 $
演算法
演算法沒什麼特別的,主要採用梯度下降法或者隨機梯度下降法,不熟悉的可以參考數學基礎之微積分裡相關的部分.
梯度下降解:
$\large w_j := w_j + \alpha \sum_{i=1}^m (y^i - h_{\mathbf{w}}(\mathbf{x}^i)) x_j^i $
隨機梯度下降:
$\large w_j := w_j + \alpha (y^i - h_{\mathbf{w}}(\mathbf{x}^i)) x_j^i $
機率解釋
假設我們房價的預測結果和真實結果有誤差 $\epsilon^i$,則:
$\large y^i = \mathbf{w}^T \mathbf{x}^i + \epsilon^i $
我們假設這裡的 $\epsilon $ 是IID(獨立同分布)的,均值為0,方差為$ \delta^2 $的正態分佈, 即:
$\large p(\epsilon^i) = \frac {1}{\sqrt{2 \pi} \delta } exp(- \frac {(\epsilon^i)^2}{2 \delta^2})$
所以 $y$ 就是 均值為 $h_{\mathbf{w}}(\mathbf{x})$,方差為$ \delta^2 $的正態分佈
$\large p(y^i | \mathbf{x}^i; \mathbf{w}) = \frac {1}{\sqrt{2 \pi} \delta } exp(- \frac {( y^i - h_{\mathbf{w}}(\mathbf{x}^i))^2}{2 \delta^2})$
然後我們列出 $\mathbf{w}$ 的似然函式:
$ \large l(\mathbf{w}) = \Pi_{i=1}^m p(y^i | \mathbf{x}^i; \mathbf{w}) = \Pi_{i=1}^m \frac {1}{\sqrt{2 \pi} \delta } exp(- \frac {( y^i - h_{\mathbf{w}}(\mathbf{x}^i))^2}{2 \delta^2}) $
然後對上式取對數:
$\large \ln l(\mathbf{w}) = \sum_{i=1}^m \ln \frac {1}{\sqrt{2 \pi} \delta } exp(- \frac {( y^i - h_{\mathbf{w}}(\mathbf{x}^i))^2}{2 \delta^2}) = m \ln \frac {1} {\sqrt{2 \pi} \delta} - \frac {1} {\delta^2} \cdot \frac {1}{2} \sum_{i=1}^m ( y^i - h_{\mathbf{w}}(\mathbf{x}^i))^2 $
對上式求極大就等於對下面的式子就極小:
$\large \frac {1}{2} \sum_{i=1}^m (h_{\mathbf{w}}(\mathbf{x}^i) - y^i)^2 $
這跟我們定義損失函式,然後最小化損失函式得到的是一樣的結論。
參考資料
[1]: Machine Learning https://class.coursera.org/ml-2012-002
[2]: Pattern recognization and machine learning http://research.microsoft.com/%E2%88%BCcmbishop/PRML