Evaluating a learning algorithm
1. Design what to do next
在預測房價的學習例子,假如你已經完成了正則化線性回歸,也就是最小化代價函數J的值。假如在你得到你的學習參數以后把它應用到放到一組新的房屋樣本上進行測試,發現在預測房價時產生了巨大的誤差。
要想改進這個算法,應該怎么辦?
其中一種辦法是使用更多的訓練樣本,但是這個辦法不總是有用;
也許需要更多的特征,或者減少特征;
減小或增大正則化參數lambda的值;
…
機器學習診斷能夠讓你深入理解系統哪里工作,哪里不工作或者存在問題。
2. Evaluating a hypothesis
如何評估假設函數?下面討論如何避免過擬合和欠擬合問題。
如何判斷一個假設函數是過擬合的?
對于簡單的例子,可以對假設函數h(x)進行畫圖,然后觀察圖形趨勢。但對于特征變量不止一個的這種一般情況,想要通過畫出假設函數來進行觀察就會變得很難甚至是不可能實現。因此,我們需要另一種方法來評估我們的假設函數。 如下給出了一種評估假設函數的標準方法,假設我們有這樣一組數據組,在這里我只展示出10組訓練樣本。為了確保我們可以評估我們的假設函數,將這些數據分成兩部分。按照7:3的比例將70%的數據作為訓練集,30%的數據作為測試集。如果這組數據有某種規律或順序的話,那么隨機選擇70%作為訓練集,剩下的30%作為測試集。如果數據已經隨機分布了,可以選擇前70%和后30%.
接下來展示了一種典型的方法,你可以按照這些步驟訓練和測試你的學習算法 比如線性回歸算法。 首先,你需要對訓練集進行學習得到參數θ。 具體來講就是最小化訓練誤差J(θ)。 這里的J(θ)是使用那70%數據。 然后計算出測試誤差, JtestJtest來表示測試誤差.使用包含參數θ的假設函數對每一個測試樣本進行測試,然后通過假設函數和測試樣本計算出mtest個平方誤差. 這是使用線性回歸和平方誤差標準時測試誤差的定義.
如果是考慮分類問題,比如說使用邏輯回歸.訓練和測試邏輯回歸的步驟與之前所說的非常類似. 唯一的區別是現在我們使用的是mtest個測試樣本.測試誤差Jtest(θ)叫誤分類率,也被稱為0/1錯分率. 當你的假設函數h(x)的值大于等于0.5,并且y的值等于0或者當h(x)小于0.5并且y的值等于1,這個誤差等于1.用錯分率誤差來定義測試誤差.
3. Model selection and Train/Validation/Test sets
模型選擇問題:
怎樣選用正確的特征來構造學習算法?
選擇學習算法中的正則化參數λ?
…
數據集的劃分:
通常劃分為3部分,按照6:2:2分為訓練集、驗證集和測試集,定義訓練誤差 交叉驗證誤差 和測試誤差。
我們的做法是訓練多個不同的模型,使用驗證集去選擇交叉驗證最小的模型,最后使用測試集估計模型的泛化誤差。