Machine Learning學習日記 — Coursera篇 (Week 6.1):Deciding What to Try Next, Evaluating a Hypothesis, Model Selection and Train/Validation/Test Sets
Evaluating a Learning Algorithm
大綱
- Deciding What to Try Next
- Evaluating a Hypothesis
- Model Selection and Train/Validation/Test Sets
1. Deciding What to Try Net
假設我們為了預測房價而擬定了一個Linear Regression的模型來預測
但是卻發現這個模型出現了難以接受的誤差,這時候我們有幾個選擇可以來試著改善:
而每個選擇看似簡單,實則容易擴張成動輒數月、耗費時間跟金錢的專案。但是許多人選擇的方式常常都只是憑著"gut feeling",也近似於隨機選取了
在下面,將會提到我們將藉由Machine Learning diagnostic的方式來診斷出模型的問題,並依此作為一個改善模型的依據。
隨堂練習
Ans:
2. Evaluating a Hypothesis
How to evaluate a hypothesis
在前面的文章中,當我們擁有100筆的資料時,往往都是直接全部投入進去hypothesis的training中,這樣一來便無法評估其模型的效果。
但在這裏,Andrew提到可能可以將這100筆的資料分成70筆的資料進行訓練(Training Set),而另外30筆的資料(Test Set)用來評估
下面為大家複習一下Linear Regression跟Logistic Regression的Cost Function:
Linear Regression
Logistic Regression
這張圖主要是想表達,logistic regression的誤差非0即1,詳見Logistic Regression Cost Function
隨堂練習
Ans:
因為在Training set當中出現了overfitting,代表在訓練資料中幾乎沒有誤差。但是overfitting的問題將使在Test Set中出現大量誤差的情況
3. Model Selection and Train/Validation/Test Sets
剛剛都只提到怎麼評估預測模型的效率,但是卻沒有提及要怎麼選擇出最好的訓練模型?
假設我們用跟前面的方式將資料分成兩種:Training set跟Test set,且目前我們手上有多個不同的模型(二次方、三次方...等)
合理的做法應該是透過Training set來訓練這些不同的模型,然後再透過Test set來得到這些不同模型的預測誤差,最後我們再從中挑選出最好的模型A(Test set中最小的預測誤差)
但這樣子會有什麼問題呢?
當我們需要評估模型A的績效時,也只能用Test Set去評估,但這樣很得到一個過度樂觀的結果(模型A是當初在Test Set中表現最好的模型)
因此我們還需要多一個資料集,這意味著我們要將所有的資料筆數分成Training set, Cross Validation set, Test set
每個模型用來計算預測誤差的函式是完全相同的(這邊以Linear Regression為例)
所以重來一次前面的情境,假設我們手上有10個不同的模型(hypothesis),我們也將資料切成三份:Training set, Cross Validation set, Test set
首先,我們透過Training set訓練模型1,然後算出其Cross Validation set的預測誤差error1
然後我們再透過Training set訓練模型2,然後算出其Cross Validation set的預測誤差error2
....
一直到所有的模型都運算完畢,也得到每個不同模型的error值
這時我們再從這些error值(error1 ... error10)中挑選出最小的值,挑選出model4,作為最適合的hypothesis。
最後再透過Test set來評估此模型的績效。
隨堂練習
Ans: