機器學習筆記(參考吳恩達機器學習視訊筆記)09_應用機器學習的建議
9 應用機器學習的建議
機器學習診斷法:是一種測試方法,通過執行這種測試,可以深入瞭解某種演算法到底是否有用。
9.1 評估假設函式
通過評估假設函式來,來避免過擬合和欠擬合問題。模型通過訓練集得出引數後,對測試集運用該模型,有兩種方式計算誤差:
-
對於線性迴歸模型,利用測試集資料計算代價函式J。
-
對於邏輯迴歸模型,除了利用測試資料集計算代價函式外:
9.2 模型選擇與交叉驗證集
為避免過擬合或欠擬合問題,應選擇一個更能適應一般情況的模型。使用交叉驗證來幫助選擇模型。例如:使用 60%的資料作為訓練集,使用 20%的資料作為交叉驗證集,使用 20%的資料作為測試集。模型選擇方法如下:
-
使用訓練集訓練出10個模型
-
用10個模型分別對交叉驗證集計算得出交叉驗證誤差(代價函式的值)
-
選取代價函式值最小的模型
-
用步驟3中選出的模型對測試集計算得出推廣誤差(代價函式的值)
9.3 診斷偏差和方差
執行一個學習演算法時,演算法表現不理想,主要是出現兩種情況:
1.欠擬合(偏差大)
2.過擬合(方差大)
將訓練集和交叉驗證集的代價函式誤差與多項式的次數繪製在同一張圖表上來幫助分析:
對於訓練集,當d較小時,模型擬合程度更低,誤差較大;隨著d的增長,擬合程度提高,誤差減小。
對於交叉驗證集,當d較小時,模型擬合程度低,誤差較大;隨著d的增長,誤差呈現先減小後增大的趨勢,轉折點是模型開始過擬合訓練資料集的時候。
訓練集誤差和交叉驗證集誤差近似時:偏差/欠擬合。
交叉驗證集誤差遠大於訓練誤差時:方差/過擬合。
9.4 正則化與偏差/方差
正則化可以有效防止過擬合。應謹慎選擇正則化引數,避免正則化的程度太高或太低。選擇一系列想要測試的值,通常是0-10之間的呈現2倍關係的值(選擇12個)。同樣把資料分為訓練集、交叉驗證集和測試集。具體方法如下:
-
使用訓練集訓練出12個不同程度正則化的模型。
-
用12個模型分別計算出交叉驗證集的交叉驗證誤差。
-
選擇得出交叉驗證誤差最小的模型
-
運用步驟3中選出的模型對測試集計算得出推廣誤差,同時將訓練集和交叉驗證集模型的代價函式誤差與的值繪製在一張圖表上:
當較小時,訓練集誤差較小(過擬合)而交叉驗證集誤差較大。
隨著的增加,訓練集誤差不斷增加(欠擬合),而交叉驗證集誤差則是先減小後增加。
9.5 學習曲線
學習曲線是將訓練集誤差和交叉驗證集誤差作為訓練集例項數量(m)的函式繪製的圖表。思想是:當訓練較少行資料的時候,訓練的模型將能夠非常完美地適應較少的訓練資料,但是訓練出來的模型卻不能很好地適應交叉驗證集資料或測試集資料。如圖:
在高偏差/欠擬合的情況下,增加資料到訓練集不一定能有幫助。如圖:
在高方差/過擬合的情況下,增加更多資料到訓練集可能可以提高演算法效果。如圖:
9.6 總結
-
獲得更多的訓練例項——解決高方差。
-
嘗試減少特徵的數量——解決高方差。
-
嘗試獲得更多的特徵——解決高偏差。
-
嘗試增加多項式特徵——解決高偏差。
-
嘗試減少正則化程度——解決高偏差。
-
嘗試增加正則化程度——解決高方差。
針對神經網路的方差與偏差:使用較小的神經網路,類似於引數較少的情況,容易導致高偏差和欠擬合,但計算代價較小。使用較大的神經網路,類似於引數較多的情況,容易導致高方差和過擬合,雖然計算代價比較大,但是可以通過正則化手段來調整而更加適應資料。通常選擇較大的神經網路並採用正則化處理會比採用較小的神經網路效果要好。