Andrew Ng 機器學習筆記 10 :評價學習演算法
阿新 • • 發佈:2018-11-14
評估假設函式
為了確保我們可以評估我們的假設函式,我們要做的是將這些資料進行分組,將所有資料按照7:3的比例劃分,是一種常見的劃分比例。
- 第一部分(70%)作為訓練集(Training Set)
- 第二部分(30%)作為測試集(Test Set)
線性迴歸中:
- 使用70%的訓練集資料進行學習,得到最小化訓練誤差J(θ)。
取出學習得到的引數θ,帶入到Jtest(θ),計算測試誤差:
這實際上是測試集平方誤差的平均值。
分類問題中:
在分類問題中的測試誤差 其實也被稱作誤分類率(也被稱為0/1錯分率),表示預測到的正確或錯誤樣本的情況:
模型選擇
假如你想要確定對於某組資料最合適的多項式次數是幾次,怎樣選用正確的特徵來構造學習演算法,這些問題我們稱之為”模型選擇問題“。
- 在模型選擇中,通常將資料集分為三段:訓練集、交叉驗證集(cross validation set)、測試集。
- 一種典型的分割比例是:訓練集60%,交叉驗證集20%,測試集20%。
我們可以得到 訓練集/交叉驗證集/測試集 的誤差:
模型選擇問題,即使用交叉驗證集來選擇合適的模型:
- 通過使用訓練集對每一個假設函式依次去求最小化的代價函式 ,並求得對應的引數向量 。
- 在交叉驗證集中測試這些假設的表現,測出 來看看這些假設在交叉驗證集中表現如何。
- 選擇交叉驗證集誤差最小的那個假設模型。
- 使用測試集來評價模型的表現。
正則化引數λ對假設函式的影響
演算法正則化可以有效地防止過擬合,通常的做法是選取一系列要嘗試的λ值,可能從0.01,0.02,0.04開始,一直試下去,通常會將步長設為2倍的速度增長,直到一個比較大的值。
- 選用第一個模型,也就是 ,使用 來表示第一個引數向量
- 然後再取第二個模型 ,最小化代價方差,得到引數向量
- 以此類推,一直到最後一個 或 的模型對應的
- 用交叉驗證集來評價這些假設引數,測出每一個引數 在交叉驗證集上的評價誤差平方和,然後選取這12個模型中交叉驗證集誤差最小的那個模型作為最終選擇。
λ 在訓練集上的變化
- 當λ的取值很小時,對訓練集的擬合相對較好,因為沒有使用正則化。
- 而如果λ的值很大時,將處於高偏差問題,不能對訓練集很好地擬合,訓練集誤差 的值會趨於上升。
λ在交叉驗證集上的變化
- 當λ的值取得很大時,會處於欠擬合問題。這對應著偏差問題,此時交叉驗證集誤差將會很大。
- 當λ值取得很小,會對資料過度擬合,交叉驗證集誤差也會很大。
- 這就是當改變正則化引數λ的值時,交叉驗證集誤差和訓練集誤差隨之發生的變化。當然,在中間取的某個λ的值,表現得剛好合適,這種情況下表現最好,交叉驗證集誤差或者測試集誤差都很小。
學習曲線(Learning Curves)
繪製學習曲線非常有用,可以判斷某一個學習演算法是否處於偏差方差問題,或者二者皆有。
高偏差下的學習曲線
假如你的假設處於高偏差問題,當樣本數量增多的時候,你不難發現用來擬合這些資料的直線相較於之前不會變化太大。
所以,如果你繪製出交叉驗證集誤差,應該是這個樣子:
- 最左邊表示訓練集樣本容量很小,比如說只有一組樣本,那麼表現當然很不好;
- 當達到某一個容量值的時候,你就會找到那條最有可能擬合數據的那條直線,並且此時即便你繼續增大訓練集的樣本容量m,你基本上還是會得到一條差不多的直線。因此交叉驗證集誤差將會很快變為水平而不再變化。
- 同樣,訓練誤差一開始也是很小的,而在高偏差的情形中,你會發現訓練集誤差會逐漸增大,一直趨於接近交叉驗證集誤差,這是因為你的引數很少。但當m很大的時候,資料太多,此時訓練集和交叉驗證集的預測結果將會非常接近。
- 這就是當你的學習演算法處於高偏差情形時學習曲線的大致走向。
- 高偏差的情形反映出的問題是交叉驗證集和訓練集誤差都很大,也就是說,你最終會得到一個值比較大的 和 。
高方差下的學習曲線
- 處於高方差的時候,如果訓練集樣本容量很小時,訓練集誤差 將會很小。
- 隨著訓練集樣本容量的增大,