1. 程式人生 > >【原】Coursera—Andrew Ng機器學習—課程筆記 Lecture 10—Advice for applying machine learning

【原】Coursera—Andrew Ng機器學習—課程筆記 Lecture 10—Advice for applying machine learning

Lecture 10—Advice for applying machine learning

 

10.1 如何除錯一個機器學習演算法?

有多種方案:

1、獲得更多訓練資料;2、嘗試更少特徵;3、嘗試更多特徵;4、嘗試新增多項式特徵;5、減小 λ;6、增大 λ

為了避免一個方案一個方案的嘗試,可以通過評估機器學習演算法的效能,來進行除錯。

機器學習診斷法 Machine learning diagnostic 的定義:

10.2 評估一個假設

想要評估一個演算法是否過擬合

(一)首先,劃分測試集和訓練集

  如果資料已經隨機分佈了, 可以選擇前70%資料作為訓練集,剩下的30%作為測試集;

  如果資料不是隨機分佈的,最好先打亂,或者隨機選擇70%資料作為訓練集,剩下的30%作為測試集

(二)然後,計算測試誤差

1、對於迴歸問題。例如線性迴歸。首先使用訓練集進行訓練,然後使用測試集計算測試誤差:

2、對於分類問題。例如邏輯迴歸,也是一樣的:

有一種更易理解的測試誤差定義方式,叫做 錯分率 Misclassification error (也叫0/1錯分率):

err(hθ(x),y) 的意思是:如果分類預測結果 hθ(x) 錯誤,則 err 值為1;如果 hθ(x) 預測正確,則 err 值為0。   整體的測試誤差就是所有 err 值的加和。

10.3 模型選擇 和 "訓練/驗證/測試"集

產生過擬合的一個原因是:僅僅在測試集合上除錯 θ 得到的訓練誤差,通常不能作為對實際泛化誤差的一個好的估測。

 

 

那麼究竟應該選擇幾次多項式來作為我們的模型呢?

假設針對 x 有10個模型:一次方程 直到 十次方程。對每個多項式,在訓練集上訓練出 θ 。然後分別使用 test 集合計算誤差,分別得到 Jtest(1)),...Jtest(10)),發現 Jtest(5))的值最小,因此選擇 d=5 這個模型。

但這裡有個問題:我們選的這個模型,就是能夠最好地擬合測試集的引數d的值及多項式的度。因此,再使用同樣的測試集來評價假設,顯然很不公平,很可能導致過擬合。

所以,我們改為將資料集分為 6:2:2 三部分:training set、cross validation set(cv, 或者直接簡稱validation set)、test set

每個集合上的誤差計算公式:

 

現在我們是用 cv 集合計算誤差,分別得到 Jcv(1)),...Jcv(10)),發現 Jcv(4)) 的值最小,因此選擇 d=4 這個模型,最後在 test 集合上進行預測,能得到一個更理想的泛化誤差。

 

10.4 檢驗誤差和方差 Diagnosing bias vs. variance

模型表現不好,通常有兩種情況:

(1) 誤差 bias 過大,導致欠擬合 underfitting;

(2) 方差 variance 過大,導致過擬合 overfitting

使用多項式的度 d 作為橫軸,在訓練集和cv集上分別計算 J(θ),得到曲線:

 

下面說如何根據兩條曲線判斷模型是高誤差(欠擬合)、還是高方差(過擬合)。

(1) 先看曲線左邊,當 d=1 ,訓練集和cv集的誤差都很大,說明欠擬合

(2) 再看曲線右邊,當 d=4 ,訓練集誤差很小、cv集誤差遠大於訓練誤差,說明在訓練集上過擬合

 

10.5 正規化 和 偏差/方差

考慮正則化的線性迴歸模型:

(1) 當 λ 過大,θ 被懲罰後會變得很小、接近於0,最後方程只剩下 θ0 這一項,成為一條直線,導致高偏差bias、欠擬合。

(2) 當 λ 過小,正則項不起作用,導致高方差 variance、過擬合。

 

那怎麼選擇 λ 的值呢?

首先,當我們定義每個集合上的誤差函式時,不考慮 λ。

 

 然後按照步長兩倍的方式遞增 λ,針對每個 λ 訓練θ。然後分別計算對應的Jcv(θ),得到最小的Jcv(5))。然後在 test 集合上進行測試。

 

 現在我們看一下,λ 的大小對損失函式的影響。

(1) 先看曲線左邊,當 λ 很小 ,Jcv(θ) 的值遠大於 Jtrain(θ),說明過擬合

(2) 再看曲線右邊,當 λ 很大 ,Jcv(θ) 和 Jtrain(θ) 都很大,說明欠擬合

 

 10.6 學習曲線

m指訓練樣本的個數,曲線顯示不同的m對於J(θ)的影響

 

 高偏差 bias、欠擬合:

 

高方差 variance、過擬合。兩個曲線會有一個很大的gap:

 

 

10.7 接下來

每種解決方案對應的問題如下(箭頭右側指向的是表現出的問題,左側是解決方案):

 

對於神經網路,開始可以嘗試一個相對比較簡單的神經網路模型,計算量小。

如果使用大型神經網路,使用正則化來修正過擬合。

如果不知道選擇幾層hidden layer,可以將資料分為三個資料集之後,分別做測試。