1. 程式人生 > 實用技巧 >Day 2

Day 2

4.1 多功能

n:特徵的數量(number of features)
x i x^i xi:第 i 個訓練樣本的輸入特徵值,i 是訓練樣本的一個索引(input (features) of i t h i^{th} ith training example)
x j i x^i_j xji:第 i 個訓練樣本中第 j 個特徵量的值(value of feature j in i t h i^{th} ith training example)

假設函式:
h θ ( x ) = θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋅ ⋅ ⋅ + θ n x n h_θ(x)= θ^Tx = θ_0 + θ_1x_1 + θ_2x_2 + ··· + θ_nx_n

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

4.2 多元梯度下降法

假設函式: h θ ( x ) = θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋅ ⋅ ⋅ + θ n x n h_θ(x)= θ^Tx = θ_0 + θ_1x_1 + θ_2x_2 + ··· + θ_nx_n hθ(x)=θTx=θ0+θ1x1+θ2x2++θnxn
引數: θ 0 , θ 1 , θ 2 , ⋅ ⋅ ⋅ , θ n θ_0,θ_1,θ_2,···,θ_n

θ0,θ1,θ2,,θn
代價函式: J ( θ 0 , θ 1 , θ 2 , ⋅ ⋅ ⋅ , θ n ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J(θ_0,θ_1,θ_2,···,θ_n) = \frac{1}{2m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2 J(θ0,θ1,θ2,,θn)=2m1i=1m(hθ(xi)yi)2
梯度下降:
Repeat {
θ j : = θ j − α d d θ j J ( θ 0 , θ 1 , θ 2 , ⋅ ⋅ ⋅ , θ n ) θ_j := θ_j - α\frac{d}{dθ_j}J(θ_0,θ_1,θ_2,···,θ_n)
θj:=θjαdθjdJ(θ0,θ1,θ2,,θn)

}
即:
在這裡插入圖片描述

求導後得到:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-H7wljkp4-1602600520388)(./1602595338284.png)]

當 n >= 1, θ 0 : = θ 0 − a 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 x 0 i θ_0 := θ_0 - a\frac{1}{m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2x_0^i θ0:=θ0am1i=1m(hθ(xi)yi)2x0i
θ 1 : = θ 1 − a 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 x 1 i θ_1 := θ_1 - a\frac{1}{m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2x_1^i θ1:=θ1am1i=1m(hθ(xi)yi)2x1i
θ 2 : = θ 2 − a 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 x 2 i θ_2 := θ_2 - a\frac{1}{m}\sum_{i=1}^m(h_θ(x^i)-y^i)^2x_2^i θ2:=θ2am1i=1m(hθ(xi)yi)2x2i

4.3 梯度下降法實踐 1 - 特徵縮放

面對多維特徵問題的時候,我們要保證這些特徵都具有相近的尺度,這將幫助梯度下降演算法更快的收斂。對應的方法是嘗試將所有特徵的尺度都儘量縮放到 -1 到 1 之間。如圖:
在這裡插入圖片描述
最簡單的方法是令: x n = x n − u n s n x_n = \frac{x_n-u_n}{s_n} xn=snxnun,其中 u n u_n un 是平均值, s n s_n sn 是標準差。

##4.4 梯度下降法實踐2-學習率

自動收斂測試:如果代價函式 J(θ) 一步迭代後的下降小於一個很小的值 ε 這個測試就判斷函式已收斂。ε 可以 1e-3。通常選擇一個合適的閾值 ε 是相當困難的,因此為了判斷梯度下降演算法是否收斂實際上更傾向於通過看左邊的曲線而不是依靠自動收斂測試。
在這裡插入圖片描述
看圖片還有個好處是能提前知道演算法是否運算正確。
總結:
如果學習率 a 太小的話,收斂速度會很慢
如果學習率 a 太大的話,代價函式 J(θ) 可能不會在每次迭代都下降,甚至不會收斂

在執行演算法時,嘗試不同的 a 值,比如 0.001,0.01… 每隔 10 倍取一個值。通過繪製圖選擇使得 J(θ) 快速下降的一個 a 值。

4.5 特徵和多項式迴歸

有時候通過定義一個新的特徵,可能會得到一個更好的模型。如房價預測中可以將臨街的長度和寬度兩個特徵整合成面積特徵。
在這裡插入圖片描述

4.6 正規方程

正規方程提供了一種求 θ 的解析解法,所以我們不需要執行迭代演算法,而是可以直接一次性求解 θ 的最優值。

在這裡插入圖片描述

上面的式子會給出最優的 θ 的值,其中 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 X ′ X X'X XX 的逆矩陣 X T X^T XT 是 X 的轉置矩陣。如果令 θ 等於這個,這個 θ 值會最小化線性迴歸的代價函式 J(θ)。
如果使用正規方程,則不需要進行特徵縮放。

何時應該使用梯度下降,何時應該使用正規方程法呢?
梯度下降的一個缺點是需要選擇學習速率 a,這就表示通常需要執行多次,嘗試不同的 a 找到執行效果最好的那個。梯度下降的另一個缺點是需要迭代多次,對於不同的實現方式,計算可能會更慢。
梯度下降法在特徵變數很多的情況下也能執行地相當好,所以就算有上百萬個特徵也可以選擇梯度下降,並且通常很有效。
正規方程不需要選擇學習率。
正規方程需要計算 ( X T X ) − 1 (X^TX)^{-1} (XTX)1 計算該結果的時間大概是 n 的三次方級,所以如果 n 非常大的話會計算的非常慢,在這種情況下正規方程法會比梯度下降慢很多。因此如果 n 比較大,那麼一般會選擇梯度下降法。
n 何時比較大呢?對於現代計算機 n 的值如果上萬,可能會傾向於選擇梯度下降法,但是如果 n 遠大於此可能就會選擇梯度下降法了。

總結:

對於特徵變數不大的情況下,會選擇正規方程。具體來說,只要特徵變數數量小於 1 萬通常會使用正規方程法而不使用梯度下降法。

4.7 正規方程及不可逆性

如果矩陣 X T X X^TX XTX 是不可逆的通常有兩種最常見的原因:第一個原因是,由於某些原因,你的學習問題包含了多餘的特徵。第二個原因是,你允許的學習演算法有很多特徵,具體地說,在 m 小於或等於 n 的時候。
總結:如果發現 X T X X^TX XTX 是不可逆的,首先看特徵裡是否有多餘的特徵,如果的確有多餘的特徵,可以刪除其中之一。如果沒有多餘的特徵,可以檢查是否有過多的特徵,如果特徵數量實在太多,如果少一些不影響的話則刪除一些特徵或者考慮使用正規化方法。