在前幾周的課程裏,咱們已經學習了 監督學習 中的 線性迴歸、邏輯迴歸、神經網絡( 點擊進入筆記 )。回顧課程做業,全部的樣本數據都被用來訓練模型。驗證模型時,也只是將模型的數據結果與正確結果做對比來看正確率。 這樣的訓練方法是否正確?正確率是否能做爲評價模型的標準?這周就將學習如何評價咱們的模型,以及如何採起正確有效的改進策略。git
點擊 課程視頻 你就能不間斷地學習 Ng 的課程,關於課程做業的 Python 代碼已經放到了 Github 上,點擊 課程代碼 就能去 Github 查看( 沒法訪問 Github 的話能夠點擊 Coding 查看 ),代碼中的錯誤和改進歡迎你們指出。github
如下是 Ng 機器學習課程第五週的筆記。算法
對於 預測函數,咱們一般會使用如下幾種手段來改進:網絡
- 採集更多的樣本數據
- 減小特徵數量,去除非主要的特徵
- 引入更多的相關特徵
- 採用多項式特徵
- 減少正則化參數
- 增長正則化參數
Andrew Ng 告訴你們,他見過不少開發者盲目地使用改進策略,爲此耗費了大量的時間和精力,卻沒什麼效果。因此咱們須要一些依據來幫助咱們選擇合適的策略。機器學習
爲了評價模型,咱們一般將數據集分爲三個部分, 的 訓練集、 的 交叉驗證集 和 的 測試集,並使用 偏差 做爲模型使用在這些集合上的評價,偏差 的形式與以前的 代價函數 相同( 線性迴歸偏差函數以下 )。ide
在被劃分的集合中,咱們使用 訓練集 來訓練參數 ,使用 交叉驗證集 來選擇模型( 好比該使用多少次的多項式特徵 ),使用 測試集 來評估模型的預測能力。函數
當咱們的模型表現不佳時,一般是出現兩種問題,一種是 高誤差 問題,另外一種是 高方差 問題。識別它們有助於選擇正確的優化方式,因此咱們先來看下 誤差 與 方差 的意義。工具
就像打靶同樣,誤差描述了咱們的射擊整體是否偏離了咱們的目標,而方差描述了射擊準不許。接下來讓咱們經過各類狀況下 訓練集 和 交叉驗證集 的 偏差 曲線來直觀地理解 高誤差 與 高方差 的意義。性能
對於 多項式迴歸,當次數選取較低時,咱們的 訓練集偏差 和 交叉驗證集偏差 都會很大;當次數選擇恰好時,訓練集偏差 和 交叉驗證集偏差 都很小;當次數過大時會產生過擬合,雖然 訓練集偏差 很小,但 交叉驗證集偏差 會很大( 關係圖以下 )。 學習
因此咱們能夠計算 和 ,若是他們同時很大的話,就是遇到了高誤差問題,而 比 大不少的話,則是遇到了高方差問題。對於 正則化 參數,使用一樣的分析方法,當參數比較小時容易產生過擬合現象,也就是高方差問題。而參數比較大時容易產生欠擬合現象,也就是高誤差問題。
不管你是要檢查你的學習算法是否正常工做或是要改進算法的表現,學習曲線 都是一個十分直觀有效的工具。學習曲線 的橫軸是樣本數,縱軸爲 訓練集 和 交叉驗證集 的 偏差。因此在一開始,因爲樣本數不多, 幾乎沒有,而 則很是大。隨着樣本數的增長, 不斷增大,而 由於訓練數據增長而擬合得更好所以降低。因此 學習曲線 看上去以下圖:
在高誤差的情形下, 與 已經十分接近,可是 偏差 很大。這時候一味地增長樣本數並不能給算法的性能帶來提高。 在高方差的情形下, 的 偏差 較小, 比較大,這時蒐集更多的樣本極可能帶來幫助。有了以上的分析手段,就可以得出在何種場景下使用咱們的改進策略:
- [高方差] 採集更多的樣本數據
- [高方差] 減小特徵數量,去除非主要的特徵
- [高誤差] 引入更多的相關特徵
- [高誤差] 採用多項式特徵
- [高誤差] 減少正則化參數
- [高方差] 增長正則化參數
So~,第五週的內容就是這些了,謝謝你們耐心閱讀。