機器學習系列15:學習曲線

  • 2019 年 10 月 7 日
  • 筆記

我們在調試一個學習演算法時,通常會用學習曲線(Learning Curves)觀察機器學習演算法是否為欠擬合過擬合

隨著樣本數的不斷增大,我們發現在高偏差(欠擬合)時交叉驗證集代價函數 J_cv(θ)測試集代價函數 J_test (θ) 的影像如下,這個影像也叫做學習曲線(Learning Curves):

在高偏差時,隨著樣本數目的增加,測試集的偏差與交叉驗證集的偏差幾乎相等,測試集的偏差在上升到一定程度後就不會繼續上升;根據交叉驗證集來看,多項式的泛化程度隨著數據集的增加減小到一定程度後就不再減小。這代表著,在高偏差(欠擬合)的情況下,增大數據集並不會優化你的演算法。所以,在高偏差的情況下,你不需要把時間浪費在收集大量數據上。

再來看,在高方差的情況:

在高方差下,隨著樣本數目的增加,交叉驗證集的偏差一直與測試集的偏差有很大的差距,測試集的偏差在不斷地上升;根據交叉驗證集來看,多項式的泛化程度隨著數據集的增加而不斷地減小。這代表著,在高方差(過擬合)的情況下,增大數據集在一定程度上會優化你的演算法。

因此,你了解當前演算法處於高偏差或高方差對於你決定是否把大量的時間花費在尋找數據集很有必要,這會為你節省大量的時間,把時間用在刀刃上吧!

回到一開始的問題,在機器學習中,我們訓練了一個模型,可能會發現這個模型得到的數據與實際數據偏差太大,也就是這個模型表現的不好。這時,我們需要想一些方法來優化我們的演算法。

下面這些方法,就是在遇到高方差或高偏差時,我們所需要做的事情。

  • 得到更多的訓練集:適用於高方差
  • 減小特徵的數目:適用於高方差
  • 嘗試去增加特徵:適用於高偏差
  • 增加多項式:適用於高偏差
  • 增大 λ:適用於高方差
  • 減小 λ:適用於高偏差