天天看點

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

内容來自Andrew老師課程Machine Learning的第六章内容的Evaluating a Learning Algorithm部分。

一、Evaluating a Hypothesis(評估假設)

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

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

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

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

下面給出一張評估假設函數的标準方法:即,将使用的資料集分為訓練集和測試集,比較典型的做法是按照訓練集:資料集=7:3的比例進行分割。 強調:若資料已經随機分布了,可以選擇前70%作為訓練集,後30%作為測試集,但是如果資料集本身是有序的,則最好随機選擇,或者現将資料順序打亂,再按順序選擇。

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

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

(d = degree of polynomid)

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

最小,本題的結果是d=5。

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

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

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

交叉驗證誤差:

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

測試誤差:

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

模型選擇:

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

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

Machine Learning第六講[應用機器學習的建議] --(一)評估學習算法

最小,本題的結果是d=4。

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

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

繼續閱讀