close

image

image

第三週主要是談論一些實務上如何把機器學習給應用得更好的手法。

假設今天在一個線性廻歸問題上,我們的機器學習演算法在做預測時誤差很大,那我們該做些什麼呢?

第一,有可能是資料數不夠,因此收集更多資料會是手法之一。

第二,特徵 (feature) 有問題,可能是來自於數量太多/太少,或是需要做一些處理來加入多次項

第三,演算法的參數有問題,比方說,regularization 的參數設得太大或太小。

有這麼多的手法可以嘗試,到底給優先從哪個來做起,就需要所謂的Machine Learning Diagnostic 來幫忙。

image

最典型的評斷model 的作法,就是把資料組區分為訓練組 (training set) 和 測試組 (test set),

根據資料數量的多寡,可以是 7:3 或 8:2 之類的比例來搭配。

訓練組會進入演算法中,在計算 cost function 時會透過把訓練組的預測值和實際值之間的差縮給縮小的過程,

達到優化模型的目的。

最終訓練好模型後,會再把訓練組餵給模型,算出來的誤差叫 training error,

而把測試組餵給模型後,算出來的誤差叫 test error。

image

image

隨著我們調整不同的regularizationn 參數,模型可能會有百百種,比方說帶有高次方項的,或是很單純的,

至於該如何去選擇最適合的模型呢?

一般嚷說會透過檢視 test set 的error,會希望找到一個test error 不要太高的模型,象徵其泛化的能力比較好,

也就是比較有預測沒看過的新資料的能力。

image

另一種做法是再多分成一組就 cross validation set,又被稱為 validation set,dev set等,

它的作用類似測試組,在正式發布模型之前,會先把訓練好的模型透過validation set 來挑選,

因為它也是沒進模型的,所以作用類似於test set,只不過在這裡是在發布前先驗證過,這樣會相對比較有保障。

image

演算法的結構同樣也會影響到建模的結構,通常來說越複雜的演算法越容易產生出泛化能力較差的模型,

因此同樣也需要透過檢視 test error 或validation error 來找出哪一個演算法是複雜度是最剛好的。

事實上,像這樣子檢視training error 和 test error的數值高低,在機器學習領域會使用 bias 和 variance 來表示。

image

當training error 很高,而且validation error 也很高時,這樣的模型連最基本有被用來訓練它的資料都無法「複習」,

我們稱之為 high bias (高偏差),這個模型是「欠擬合」 (underfit)的。

而當training error 很低,但validation error 卻偏高,表示這個模型雖然已經記住了它學過的資訊,

但是卻無法有效地針對沒看過的資料做預測,這通常是來自於方程式太過於複雜,比方說含有太多高次方向,

由於這樣的模型會產生太廣大的質域,因此被稱為 high variance (高變異),這個模型是「過擬合」 (overfit)的。

對我們來說,最理想的狀況是找到一個不論是在training error 還是 validation error 都有堪用表現的模型,

就如同上面投影片中的中間圖,雖然沒有把每一筆training data 都學得絲絲入扣,但是整體的表現卻最均衡。

image

總地來說,bias 和 variance 的發生通常和模型的次方項有關係,

隨著模型往高次方項 (high degree of polynomial)的方向發展,training error 通常會一路降低,

但是 validation error 會先降低到一個程度後就開始升高,

因此我們要找的就是開始升高前的那個完美的甜蜜點,儘可能避免掉 underfit 或 overfit 的發生。

arrow
arrow

    William.Echoes 發表在 痞客邦 留言(0) 人氣()