1. 程式人生 > >吳恩達第六講[應用機器學習的建議] -- 評估學習演算法

吳恩達第六講[應用機器學習的建議] -- 評估學習演算法

一、Evaluating a Hypothesis(評估假設)

即使我們已經實現了某種演算法,但是我們可能會發現這種演算法存在很大的問題,這就涉及到了模型的選擇和改進。

在模型選擇之前,我們先來看些該如何評估一個模型。

對於有2個特徵的假設函式來說,我們很容易通過畫圖來判斷它是否過擬合,下圖就是典型的過擬合情況:

這是特徵變數比較少的情況,我們可以很容易看出這是過擬合的情況。那如果是特徵變數比較多的情況呢?可能有100個甚至更多的特徵變數?這種情況使用圖形去觀察是否過擬合會變得非常複雜,甚至你根本不可能去實現它。

下面給出一張評估假設函式的標準方法:即,將使用的資料集分為訓練集和測試集,比較典型的做法是按照訓練集:資料集=7:3的比例進行分割。


強調:若資料已經隨機分佈了,可以選擇前70%作為訓練集,後30%作為測試集,但是如果資料集本身是有序的,則最好隨機選擇,或者現將資料順序打亂,再按順序選擇。

1、線性迴歸的訓練/測試過程。
S1:訓練選擇合適的學習引數Θ值,使得J(Θ)的值最小。
S2:計算測試誤差。
  
2、logistic迴歸的訓練/測試過程。
S1:訓練選擇合適的學習引數Θ值,使得J(Θ)的值最小。
S2:計算測試誤差。

S3:誤分類率(0/1分類率)

二、Model Selection and Train/Validation/Test Sets(模型選擇以及訓練集/驗證集/測試集)

(d = degree of polynomid)

如上圖,在測試集中,通過對每一個多項式選擇一個Θ使這個多項式的J(Θ)值最小,找到所有多項式對應的Θ值,比較所有的J(Θ)值,最小的代價函式對應的d就是我們要選擇的d,它使得最小,本題的結果是d=5。

因為選擇d是根據測試集的代價函式選擇的,因此這個d對代價函式來說一定是使得代價函式最小的,但是對於另一個測試集不一定會達到很好的效果,由此,引入了模型選擇。

模型選擇將資料分為了3部分:訓練集、交叉驗證集(Cross Validation,簡稱CV)、訓練集。一般按照訓練集:驗證集:測試集=6:2:2。

訓練誤差/驗證誤差/測試誤差:
訓練誤差(training error):

交叉驗證誤差:

測試誤差:

模型選擇:

如上圖,在驗證集中,通過對每一個多項式選擇一個Θ使這個多項式的J(Θ)值最小,找到所有多項式對應的Θ值,比較所有的J(Θ)值,最小的代價函式對應的d就是我們要選擇的d,它使得最小,本題的結果是d=4。

為什麼使用這種方法可以解決上面提到的在測試集中效果好,但是在另一個測試集中可能不太好的問題呢?
因為我們選擇d,是由驗證集中的資料訓練得到的,在此過程中,測試集並沒有參與,避免了測試集的過擬合,因此我們可以使用這個模型來評估測試集的泛化誤差。

整理下具體步驟:
S1:對每一個多項式利用訓練集優化Θ值,選擇一個Θ值,使得這個多項式的訓練誤差最小。
S2:使用S1中的Θ值,利用交叉驗證集,找到最小的交叉驗證集對應的d。
S3:用S2中的d,評估測試集的泛化誤差。(因為測試集沒有參與訓練找出d的過程)