1、決定下一步做什麼
假設我們需要用一個線性迴歸模型來預測房價,然而,當我們用這個模型來預測新數據時發現有較大的誤差,那麼我們下一步應該怎麼做?
- 獲得跟多的訓練示例——代價較大,而且有時候獲得更多示例does not help
- 嘗試減少特徵數量——防止過擬合
- 嘗試獲得更多特徵量
- 嘗試增加二項式特徵
- 嘗試減少歸一化程度——減小lambda
- 嘗試增加歸一化程度——增大lambda
我們需要使用一些機器學習診斷方法來幫助我們找到機器學習算法的問題以及那種解決方法更有效
2、假設的評估
3、模型選擇(交叉驗證集)如何判斷有沒有過擬合?
很多情況下特徵量很多,無法畫出曲線圖來判斷,如下給出了一種評估假設的標準方法:
將數據分成兩部分——訓練集合測試集。通常用70%的數據作爲訓練集,剩下爲測試集。
注:注意訓練集和數據集均要包含各種類型的數據,通常我們要對數據進行混合打亂後在分成兩部分。
測試集評估:
通過訓練集讓我們的模型學習處參數後,對測試集運用該模型,計算誤差:
1.對於現行模型,我們利用測試集數據計算大家函數J
2.對於邏輯迴歸模型,我們除了可以用公式J來計算外:
還可以對每一個測試集實例計算錯誤分類比率,然後計算平均結果“
下面的模型中有十個不同多項式次數,顯然次數越高的二項式模型越能夠適應訓練集數據,但是並不能推廣到一般情況,且容易過擬合,我們如何選擇一個更能適應一般情況的模型呢?
交叉驗證集:
添加交叉驗證集的原因:如果只使用一個測試集,那麼在十個模型中得到的誤差最小的模型本身就是針對測試集選擇的,並不能推廣到一般情況
模型選擇方法:
- 使用60%的數據作爲訓練集
- 20% 交叉驗證集
- 20%爲測試集
4、診斷 偏差(bias) 和方差(variance)
- 使用訓練集通過最小化誤差函數訓練出10個模型
- 分別對交叉驗證集計算得到交叉驗證誤差J of CV
- 選取交叉驗證誤差最小的模型,然後對測試集計算得到推廣誤差J of test
5、歸一化與方差/偏差如何判斷一個算法是偏差還是方差問題對於改學習算法的效果很重要:
高偏差和高方差對應的一般來說就是低擬合和過擬合問題。
通查我們會將訓練集和交叉驗證集的代價函數誤差和多項式的次數畫在同一張圖上來分析:
從圖上可知:
Bias/ underfit: 訓練集誤差和交叉集誤差相近且都較大
Variance/overfit: 交叉驗證集誤差遠大於訓練集誤差(訓練集誤差很小)
假設我們要對下式進行擬合,我們要使用到歸一化來防止過擬合問題。在lambda的選擇上也會出現如第四節所說的問題:
我們選擇一系列想要測試的lambda值(如0-10間像個兩倍關係的值:0,0.01,0.02,0.04,0.08.。。。)
選擇方法:
- 使用訓練集訓練出12個不同程度歸一化的模型
- 用12個模型分別對交叉驗證集計算出交叉驗證誤差
- 選擇交叉驗證誤差最小的模型,對測試集計算得到推廣誤差
當lambda較小時,訓練集誤差較小,交叉驗證集誤差較大(過擬合)當lambda逐漸增大時,訓練集誤差增加,交叉驗證集先減小後增大
6、學習曲線
7、決定下一步做什麼學習曲線是學習算法的一個很好的合理校驗,可以通過學習曲線觀察學習算法是否出現了方差或偏差問題。
學習曲線是訓練集誤差和交叉驗證集誤差關於訓練集樣本總數m的曲線。
如下圖所示:當m 較小時,模型能很好的適應較少的訓練數據,但是相應的就不能很好的適應交叉驗證集合測試集
從而我們得到學習曲線如下:
那麼如何利用學習曲線來識別高偏差/方差?
- Variance / Overift
在過擬合情況下,增加更多數據到訓練集可能可以提高算法效果
- Bias/ Underfit
所以,對於低擬合的情況下,增加數據到訓練集並不會起到多大幫助(所以分析偏差和方差問題可以幫助我們有方向性的選擇提高學習算法的方式)
回顧第一節中我們提出的六種提高學習算法效果的方式,通過2-6節的學習我們可以總結選擇情況如下:
- 獲得跟多的訓練示例——fixes high variance
- 嘗試減少特徵數量——fixes high variance
- 嘗試獲得更多特徵量——fixes high bias
- 嘗試增加二項式特徵——fixes high bias
- 嘗試減少歸一化程度——fixes high bias
- 嘗試增加歸一化程度——fixes high variance
神經網絡的偏差和方差問題:
- 使用較小的神經網絡,類似於參數較少的情況,容易導致高偏差或低擬合,但計算代價較小
- 使用較大的蛇精忘了,類似於參數較大的情況,容易導致高方差或過擬合,計算代價較大,但是可以通過歸一化手段來調整從而更適應數據
- 通常選擇較大的神經網絡病採用歸一化處理比較好