機器學習——線性模型

線性模型

1.線性迴歸

1.1 問題及定義

線性迴歸模型是機器學習中的基本算法模型之一,可以用來解決預測房價等問題。如下圖所示的一個例子,房子因房子大小、臥室數目、地板數量等不同而有不同的價格,那麼給定了房子大小、臥室數目、地板數量我們能否預測出一個房子的價格呢?
房價預測圖
我們使用線性迴歸來解決上述問題。
給定一個n 個特徵的實例x , x=(x1;x2;x3;...;xn) , 對於線性迴歸的假設定義爲:

(1)hθ=θ0+θ1x1+θ2x2+...+θnxn

其中θ 表示參數,θ={θ0;θ1;θ2;θ3;...;θn} 。爲了方便,我們引入x0=1 ,從而x=(x0;x1;x2;x3;...;xn) ,然後將上述式子使用向量表示爲:
(2)hθ=θTx

我們使用均方誤差來作爲線性迴歸的代價函數,
這裏寫圖片描述
其中x(i) 表示第i個訓練實例的特徵向量,y(i) 表示第i個訓練實例的真實值,m 表示實例的個數。
我們可以通過用很多數據來訓練這個模型,得到是代價函數最小的參數θ ,然後使用這個模型來預測房價。
這裏我介紹兩種方法,一種是梯度下降,一種是最小二乘法。

方法一: 梯度下降

我們讓代價函數對參數θ 求導,得到梯度,然後讓參數朝着負梯度方向優化,a 表示學習率(learning rate),優化更新步驟如下:
這裏寫圖片描述
將代價函數代入:
這裏寫圖片描述
求導後得到:
這裏寫圖片描述
開始的時候可以隨機的選擇一系列參數,計算所有的預測結果之後,再更新這(n+1)個參數,如此循環直至收斂!

方法二: 最小二乘法

最小二乘法是直接通過使代價函數對於參數θ 的導數爲0,直接計算出參數θ 的值,不過需要滿足一定的條件,而且當特徵維度很大的時候計算會很慢!
假設X=(x(1),x(2),x(3),...,x(m))Rm×(n+1) ,實例真實值是 Y=(y1,y2,y3,...,ym)Rm 上面說過表示實例的個數,那麼使用均值方差的代價函數可以使用向量表示爲:

(3)J(θ)=(YXθ)T(YXθ)

θ 求導得到:
(4)J(θ)θ=2XT(XθY)

J(θ)θ=0 得到:
(5)2XT(XθY)=0(6)XTXθ=XTY(7)θ=(XTX)1XTY

只有當XTX 爲滿秩矩陣或正定矩陣時,即可以求逆矩陣,我們纔可以通過上述方法求得參數θ 的值。通過這種方法求得的線性迴歸模型爲:
(8)hθ(x)=((XTX)1XTY)Tx

1.2 梯度下降和最小二乘法比較

總體來說,梯度下降實用性更強!

梯度下降 最小二乘法
需要選擇學習率α 不需要
需要多次迭代 一次運算得出
當特徵數量 n 大時也能較好適用 需要計算(XTX)1 ,如果特徵數量 n 較大則運算代價大,因爲矩陣逆的計算時間複雜度爲O(n3) ,通常來說當 n 小於 10000 時還是可以接受的
適用於各種類型的模型 只適用於線性模型,不適合邏輯迴歸模型等其他模型

1.3 實現例子

(待補充----)


參考資料:
[1]Andrew course機器學習學習筆記
[2]周志華《機器學習》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章