咱們在調試一個學習算法時,一般會用學習曲線(Learning Curves)觀察機器學習算法是否爲欠擬合或過擬合。算法
隨着樣本數的不斷增大,咱們發如今高誤差(欠擬合)時交叉驗證集代價函數 J_cv(θ) 和測試集代價函數 J_test (θ) 的圖像以下,這個圖像也叫作學習曲線(Learning Curves):微信
在高誤差時,隨着樣本數目的增長,測試集的誤差與交叉驗證集的誤差幾乎相等,測試集的誤差在上升到必定程度後就不會繼續上升;根據交叉驗證集來看,多項式的泛化程度隨着數據集的增長減少到必定程度後就再也不減少。這表明着,在高誤差(欠擬合)的狀況下,增大數據集並不會優化你的算法。因此,在高誤差的狀況下,你不須要把時間浪費在收集大量數據上。機器學習
再來看,在高方差的狀況:編輯器
在高方差下,隨着樣本數目的增長,交叉驗證集的誤差一直與測試集的誤差有很大的差距,測試集的誤差在不斷地上升;根據交叉驗證集來看,多項式的泛化程度隨着數據集的增長而不斷地減少。這表明着,在高方差(過擬合)的狀況下,增大數據集在必定程度上會優化你的算法。函數
所以,你瞭解當前算法處於高誤差或高方差對於你決定是否把大量的時間花費在尋找數據集頗有必要,這會爲你節省大量的時間,把時間用在刀刃上吧!學習
回到一開始的問題,在機器學習中,咱們訓練了一個模型,可能會發現這個模型獲得的數據與實際數據誤差太大,也就是這個模型表現的很差。這時,咱們須要想一些方法來優化咱們的算法。測試
下面這些方法,就是在遇到高方差或高誤差時,咱們所須要作的事情。大數據
獲得更多的訓練集:適用於高方差。優化
減少特徵的數目:適用於高方差。spa
嘗試去增長特徵:適用於高誤差。
增長多項式:適用於高誤差。
增大 λ:適用於高方差。
減少 λ:適用於高誤差。
ps. 本篇文章是根據吳恩達機器學習課程整理的學習筆記。若是想要一塊兒學習機器學習,能夠關注微信公衆號「SuperFeng」,期待與你的相遇。