斯坦福大學公開課機器學習:advice for applying machine learning | diagnosing bias vs. variance(機器學習:診斷誤差和方差問題)

當咱們運行一個學習算法時,若是這個算法的表現不理想,那麼有兩種緣由致使:要麼誤差比較大、要麼方差比較大。換句話說,要麼是欠擬合、要麼是過擬合。那麼這兩種狀況,哪一個和誤差有關、哪一個和方差有關,或者是否是和兩個都有關,搞清楚這點很重要。能判斷出現的狀況是這兩種中的哪種,是一個頗有效的指示器,指引着能夠改進算法的最有效的方法和途徑。html

下面深刻地探討一下有關誤差和方差的問題,而且能弄清楚怎樣評價一個學習算法、可以判斷一個算法是誤差仍是方差有問題。由於這個問題對於弄清如何改進學習算法的效果很是重要。算法

以下圖,用兩個很簡單的假設來擬合數據,好比說用一條直線,那麼不足以擬合這組數據(欠擬合,左圖),而若是你用兩個很複雜的假設來擬合時,那麼對訓練集來講則會擬合得很好,但又過於完美(過擬合,右圖)。而像這樣的中等複雜度的假設(中間的圖),好比某種二次多項式的假設,次數既不高也不低,這種假設對數據擬合得剛恰好。此時對應的的泛化偏差,也是三種狀況中最小的。app

 

 

前面已經掌握了訓練集、驗證集和測試集的概念(斯坦福大學公開課機器學習:advice for applying machine learning | model selection and training/validation/test sets(模型選擇以及訓練集、交叉驗證集和測試集的概念)),接下來就能更好地理解誤差和方差的問題。具體來講沿用以前所使用的訓練集偏差和驗證集、偏差的定義,也就是平方偏差。即對訓練集數據進行預測,或對驗證集數據進行預測,所產生的平均平方偏差。下面咱們來畫出以下這個示意圖,橫座標上表示的是多項式的次數(中間圖),所以橫座標越往右的位置,表示多項式的次數越大。那麼咱們來畫這幅圖對應的狀況,d可能等於1的狀況,是用很簡單的函數來進行擬合。而在右邊的這個圖中,水平橫座標表示有更多更大的d值.表示更高次數的多項式。所以這些位置對應着使用更復雜的函數,來擬合訓練集時所須要的d值。先畫訓練集偏差,隨着咱們增大多項式的次數,咱們將對訓練集擬合得愈來愈好。因此若是d等於1時,對應着一個比較大的訓練偏差。而若是咱們的多項式次數很高時,咱們的訓練偏差就會很小,甚至可能等於0,由於可能很是擬合訓練集。因此,當咱們增大多項式次數時,不難發現訓練偏差明顯降低(紫紅色曲線)。這裏寫上J下標3來表示訓練集偏差。接下來再看交叉驗證偏差,若是咱們觀察測試集偏差的話,咱們會獲得一個和交叉驗證偏差很是接近的結果。因此,咱們知道若是d等於1的話,意味着用一個很簡單的函數來擬合數據。也就是說,咱們會獲得一個較大的交叉驗證偏差(紅色曲線標註1)。而若是咱們用一箇中等大小的多項式次數來擬合時,在前一張幻燈片中咱們用的d等於2,那麼咱們會獲得一個更小的交叉驗證偏差。由於咱們找了一個可以更好擬合數據的次數。一樣地,反過來,若是次數d太大,好比說d的值取爲4,那麼咱們又過擬合了,咱們又會獲得一個較大的交叉驗證偏差。所以,若是你平穩地過渡這幾個點,你能夠繪製出一條平滑的曲線,就像這樣,我用Jcv(θ)來表示(紅色曲線)。一樣地,若是你畫出Jtest(θ),你也將獲得一條相似的曲線,這樣一幅圖也同時能幫助咱們更好地理解誤差和方差的概念。機器學習

 

 

具體來講,假設咱們得出了一個學習算法,但這個算法並無表現地如預期那麼好。即交叉驗證偏差或者測試集偏差都很大。那麼咱們應該如何判斷此時的學習算法是高誤差的問題仍是高方差的問題呢?交叉驗證偏差比較大的狀況,對應着曲線中的左右兩端(下圖Jcv(θ)對應的曲線)。左端對應的就是高誤差的問題,也就是咱們使用了一個過於小的多項式次數,好比d等於1。但實際上咱們須要一個較高的多項式次數來擬合數據。相反地,右端對應的是高方差問題。也就是說,多項式次數d對於咱們的數據來說太大了。具體地說,第1、高誤差的狀況,對應欠擬合的狀況:交叉驗證偏差和訓練偏差都會很大。所以,若是你的算法有誤差問題的話,那麼訓練集偏差將會比較大。同時你可能會發現交叉驗證集偏差也很大。兩個偏差可能很接近,或者可能驗證偏差稍大一點,因此若是你看到這樣的組合狀況,那就表示你的算法正處於高誤差的問題。第2、若是算法處於高方差的問題,那麼Jtrain(訓練偏差)會很小。也就意味着,訓練集數據擬合得很是好。而交叉驗證集偏差或者說交叉驗證集對應的代價函數的值,將會遠遠大於訓練集偏差(雙大於符號是一個數學符號,表示遠遠大於,用兩個大於符號表示)。所以若是存在這種組合的狀況,預示着學習算法可能正處於高方差和過擬合的狀況。同時,區分這兩種不一樣情形的關鍵依據是,若是算法處於高誤差的狀況,那麼你的訓練集偏差會很大。由於你的假設不能很好地擬合訓練集數據。而當你處於高方差的問題時,你的訓練偏差一般都會很小,而且遠遠小於交叉驗證偏差。函數

 

相關文章
相關標籤/搜索