1. 程式人生 > >Machine Learning第六講[應用機器學習的建議] --(二)診斷偏差和方差

Machine Learning第六講[應用機器學習的建議] --(二)診斷偏差和方差

一、Diagnosing Bias vs. Variance(診斷偏差 vs. 方差)

如果一個演算法表現的不理想,多半是出現兩種情況,一種情況是偏差比較大(這種情況是欠擬合情況),另一種是方差比較大(這種情況是過擬合的情況)。下圖是欠擬合、剛好、過擬合三種情況的Size-price圖(仍然是預測房價的示例)。


那麼,多項式的次數對cv誤差的影響是什麼呢?

上圖展示了訓練誤差、驗證誤差的公式,以及對欠擬合和過擬合一個直觀上的分析,最簡單的情況就是看最左邊和最右邊的圖形,這有助於理解整個d-error曲線。關於在這個曲線上哪些地方是欠擬合,哪些地方是過擬合,見下圖:

上圖圈出了對應區域可能出現欠擬合和過擬合的情況,隨著d的增大:J_train(Θ)不斷減小,J_cv(Θ)先減小再增加。藍色圈出的地方(cv誤差較小的地方)maybe是d的最優值。
在欠擬合(高偏差)情況下:J_train(Θ)比較高,並且J_cv(Θ)≈J_train(Θ);
在過擬合(高方差)情況下:J_train(Θ)比較低,但是J_cv(Θ)比較高,J_cv(Θ) >> J_train(Θ)。

二、Regularization and Bias/Variance(正則化以及偏/方差)

演算法正則化能夠通過控制λ的值,使引數Θ儘可能地小,這樣可以有效防止過擬合問題的發生,那麼,正則化和演算法的方差/偏差到底有什麼關係呢?正則化係數λ的大小對方差/偏差的影響是什麼呢?

由上圖可知,當λ非常大的時候,對Θ的壓縮也比較大,使得θ1、θ2、......、θn都≈0(記住,θ0沒有被壓縮),因此h(x)≈θ0,即h(x)是一條直線,在這種情況下,會出現欠擬合的現象,若最左側的圖;中間的圖形是比較合適的λ,這種情況下擬合效果"Just right";最右側的圖是過擬合的情況,在這種情況下,λ的值較小。

正則化引數λ對J_train(θ)曲線和J_cv(θ)曲線的有什麼影響呢?


In order to choose the model and the regularization term λ, we need to:

Create a list of lambdas (i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
Create a set of models with different degrees or any other variants.
Iterate through the s and for each  go through all the models to learn some .
Compute the cross validation error using the learned Θ (computed with λ) on the  without regularization or λ = 0.
Select the best combo that produces the lowest error on the cross validation set.
Using the best combo Θ and λ, apply it on  to see if it has a good generalization of the problem.
三、Learning Curves(學習曲線)

本部分主要分析三張圖的曲線,和 對應的學習曲線及其分析。

(一)的學習曲線

由右側圖形可知,隨著訓練集樣本數的增加,二次函式擬合的效果越來越差,即訓練誤差越來越高。而隨著訓練樣本數的增加,驗證誤差/測試誤差越來越小,即當m足夠大時,cv error(test error)≈train error。

(二)的學習曲線

上圖的學習曲線是高偏差(high bias)的情況,在這種情況下:
(1)當m較小時,train error較小,cv error(test error)非常大
(2)當m較大時,train error≈cv error(test error),這是由於在接近找到最好的擬合函式時,train error和cv error(test error)趨於平穩。
以上表明:當學習演算法出現高偏差時,使用更多的訓練資料集不會有太大的幫助。

(三)的學習曲線

上圖的學習曲線是高方差(high variance)的情況,在這種情況下:
(1)當m較小時,train error較小,cv error(test error)非常大
(2)當m較大時,仍然存在train error < cv error(test error),train error和cv error(test error)之間有一定的距離。但是兩者都越來越接近於desired performance曲線。
以上表明:當學習演算法出現高方差時,使用更多的訓練資料集可能會有幫助。

四、Deciding What to Do Next Revisited(決定下一步做什麼)

當我們實現了預測模型,但是在使用它進行預測的時候,發現其效果並不是很好,我們可能會想到一下幾種解決方法。

通過繪製學習曲線我們可以觀察到模型是出現高方差還是高偏差,那麼上面的幾種解決方法是高偏差的時候使用還是高方差的時候使用呢?我們有如下總結:

上述問題對應的是線上性迴歸中的一些情況,在神經網路中什麼時候會出現過擬合什麼情況會出現欠擬合呢?如下圖:

在神經網路的架構中,預設情況下是使用一個隱藏層,若需要使用多個隱藏層,則需要嘗試1層、2層、3層......,找到使得交叉驗證誤差較小的層數值。