斯坦福2014機器學習筆記七----應用機器學習的建議
一、綱要
糾正較大誤差的方法
模型選擇問題之目標函數階數的選擇
模型選擇問題之正則化參數λ的選擇
學習曲線
二、內容詳述
1、糾正較大誤差的方法
當我們運用訓練好了的模型來做預測時,發現會有較大的誤差,這時我們有哪些解決方法呢?
(1)獲得更多的訓練集
(2)減少特征的數量
(3)增加特征的數量
(4)增加多項式特征
(5)減少正則化參數λ
(6)增大正則化參數λ
知道有這些方法,那我們應該選哪一種方法使用呢?當然不能是隨機選擇啦,下面的部分就會講解針對不同情況應該選擇的方法!
2、模型選擇問題之目標階數的選擇
我們先介紹該如何評價你的機器學習算法?我們可以將數據集按7:3分為訓練集和測試集,訓練集的作用就是用來訓練模型,測試集的作用就是來評價機器學習算法的性能。這裏我們用Jtrain
當我們求解線性回歸問題時,我們應該怎麽選取假設函數呢?假設函數的最高次項又應該怎麽選呢?例如
顯然多項式次數越高越能完美的擬合訓練集中的數據,但是這也會同時帶來過擬合的問題,即雖然完美的擬合了訓練集的數據,但卻在進行預測數據的時候表現的不好。這個問題應該怎麽解決?這裏的解決方法是利用上面說的將數據集分為訓練集和測試集,利用訓練集分別訓練10個不同的模型(hθ(x))得到10組參數θ(1),θ(2),...,θ(10),然後再代入測試機數據算出測試集誤差,從中選擇使得測試機誤差最小的結束d。這樣做完你會發現,如果再用測試集數據對你的算法進行評價,那是沒有什麽意義的,因為在選擇階數d的時候已經用過測試集數據對假設函數進行擬合了,所以這裏我們通常會把數據集分為三部分,訓練集:驗證集:測試集=6:2:2,利用驗證集數據去選擇階數d,之後再用測試集數據對算法進行評價。下面我們先給出誤差函數與階數d的曲線圖再作說明。
Jcv(θ)表示驗證集誤差函數,橫坐標表示階數d,我們可以想象的到,當然如果感覺想象的模糊的話,右上圖給了簡單的例子來幫助理解,當階數d比較小時,通常就是欠擬合的狀態,這個時候訓練集誤差函數Jtrain(θ)是比較大的,但當d逐漸增大至過擬合狀態,這個時候假設函數對訓練集的擬合是非常完美的,所以訓練集誤差函數Jtrain(θ)就隨著d的增大而減小。而驗證集誤差函數Jcv(θ)呢?d比較小時,欠擬合,這個時候假設函數對新數據的預測不是很好,所以驗證集誤差函數Jcv(θ)比較大,當d增大至過擬合時,我們從之前的學習中知道,過擬合狀態的假設函數對新數據預測的效果也不是很好,而只有當階數d合適的時候,既不是欠擬合也不是過擬合,這時候的假設函數對新數據的預測就表現的比較好了,驗證集誤差函數Jcv
我們可以根據上圖中的曲線來推斷假設函數的狀態,如果Jcv(θ)與Jtrain(θ)大致相等,我們可以認為這時候假設函數處於欠擬合狀態,高偏差(high bias);如果Jcv(θ)>>Jtrain(θ),我們可以認為這時候假設函數處於過擬合狀態,高方差(high variance)。
3、模型選擇問題之正則化參數λ的選擇
當λ比較大時,我們在代價函數最小化的過程中會產生所有的θ1,θ2,...,θn都趨於0,這樣的話又變成了欠擬合狀態。而λ較小時,正則化產生的效果又不明顯,產生的就是過擬合問題,所以我們也可以畫出誤差函數與λ的曲線圖
知道了這個,我們怎樣選擇合適的λ呢?跟上面選擇θ時一樣,我們可以假設12組λ,並利用訓練集訓練出模型得到參數θ。然後利用驗證集數據將θ和12組λ代入假設函數中,算出驗證集誤差,根據驗證集誤差最小選擇出合適的λ。
4、學習曲線
我們利用在高偏差和高方差時數據集數量m與誤差函數的關系畫出曲線
從圖中我們可以看出,當處於高偏差時,訓練集誤差函數Jtrain(θ)和驗證集誤差函數Jcv(θ)隨著m的增大而逐漸趨於平緩,所以增加數據集對高偏差(欠擬合)情況沒有改善;當處於高方差時,增加數據集數量可以是的Jcv(θ)持續下降,這時就是有效的。
所以,總結一下:
當處於高偏差(欠擬合)情況下,我們可以采用的方法是:增加特征變量數,或減小λ;
當處於高方差(過擬合)情況下,我們可以采用的方法是:增加數據集,或增大λ,或挑選部分特征變量;
斯坦福2014機器學習筆記七----應用機器學習的建議