吳恩達機器學習:方差與偏差
來自專欄機器學習筆記
在前幾周的課程里,我們已經學習了 監督學習 中的 線性回歸、邏輯回歸、神經網路( 點擊進入筆記 )。回顧課程作業,所有的樣本數據都被用來訓練模型。驗證模型時,也只是將模型的數據結果與正確結果作對比來看正確率。 這樣的訓練方法是否正確?正確率是否能作為評價模型的標準?這周就將學習如何評價我們的模型,以及如何採取正確有效的改進策略。
點擊 課程視頻 你就能不間斷地學習 Ng 的課程,關於課程作業的 Python 代碼已經放到了 Github 上,點擊 課程代碼 就能去 Github 查看( 無法訪問 Github 的話可以點擊 Coding 查看 ),代碼中的錯誤和改進歡迎大家指出。以下是 Ng 機器學習課程第五周的筆記。改進策略
對於 預測函數,我們通常會使用以下幾種手段來改進:
1. 採集更多的樣本數據
2. 減少特徵數量,去除非主要的特徵3. 引入更多的相關特徵4. 採用多項式特徵
5. 減小正則化參數 6. 增加正則化參數
Andrew Ng 告訴大家,他見過很多開發者盲目地使用改進策略,為此耗費了大量的時間和精力,卻沒什麼效果。所以我們需要一些依據來幫助我們選擇合適的策略。
數據集劃分
為了評價模型,我們通常將數據集分為三個部分, 的 訓練集、 的 交叉驗證集 和 的 測試集,並使用 誤差 作為模型使用在這些集合上的評價,誤差 的形式與之前的 代價函數 相同( 線性回歸誤差函數如下 )。
在被劃分的集合中,我們使用 訓練集 來訓練參數 ,使用 交叉驗證集 來選擇模型( 比如該使用多少次的多項式特徵 ),使用 測試集 來評估模型的預測能力。
方差與偏差
當我們的模型表現不佳時,通常是出現兩種問題,一種是 高偏差 問題,另一種是 高方差 問題。識別它們有助於選擇正確的優化方式,所以我們先來看下 偏差 與 方差 的意義。
偏差: 描述模型輸出結果的期望與樣本真實結果的差距。
方差: 描述模型對於給定值的輸出穩定性。
就像打靶一樣,偏差描述了我們的射擊總體是否偏離了我們的目標,而方差描述了射擊準不準。接下來讓我們通過各種情況下 訓練集 和 交叉驗證集 的 誤差 曲線來直觀地理解 高偏差 與 高方差 的意義。
對於 多項式回歸,當次數選取較低時,我們的 訓練集誤差 和 交叉驗證集誤差 都會很大;當次數選擇剛好時,訓練集誤差 和 交叉驗證集誤差 都很小;當次數過大時會產生過擬合,雖然 訓練集誤差 很小,但 交叉驗證集誤差 會很大( 關係圖如下 )。
所以我們可以計算 和 ,如果他們同時很大的話,就是遇到了高偏差問題,而 比 大很多的話,則是遇到了高方差問題。
對於 正則化 參數,使用同樣的分析方法,當參數比較小時容易產生過擬合現象,也就是高方差問題。而參數比較大時容易產生欠擬合現象,也就是高偏差問題。學習曲線
無論你是要檢查你的學習演算法是否正常工作或是要改進演算法的表現,學習曲線 都是一個十分直觀有效的工具。學習曲線 的橫軸是樣本數,縱軸為 訓練集 和 交叉驗證集 的 誤差。所以在一開始,由於樣本數很少, 幾乎沒有,而 則非常大。隨著樣本數的增加, 不斷增大,而 因為訓練數據增加而擬合得更好因此下降。所以 學習曲線 看上去如下圖:
在高偏差的情形下, 與 已經十分接近,但是 誤差 很大。這時候一味地增加樣本數並不能給演算法的性能帶來提升。
在高方差的情形下, 的 誤差 較小, 比較大,這時搜集更多的樣本很可能帶來幫助。
總結
有了以上的分析手段,就能夠得出在何種場景下使用我們的改進策略:
1. [高方差] 採集更多的樣本數據
2. [高方差] 減少特徵數量,去除非主要的特徵3. [高偏差] 引入更多的相關特徵4. [高偏差] 採用多項式特徵5. [高偏差] 減小正則化參數 6. [高方差] 增加正則化參數
So~,第五周的內容就是這些了,謝謝大家耐心閱讀。
推薦閱讀:
※理解牛頓法
※直觀理解正則化
※(一)通俗易懂理解——樸素貝葉斯
※Tableau集成Python機器學習實踐(中)
TAG:機器學習 |