一、Variance and Bias 分解
我們訓練好一個模型之後,其模型的預測值通常沒有辦法跟資料的觀測值(標籤)一模一樣,而預測值跟觀測值的差異,稱為殘差 (Residual)。大家不要跟誤差 (Error) 搞混囉,通常誤差是指觀測值跟實際值的差異。
我們可以透過 Variance and Bias 分解,來了解殘差的來源。令 Y 為觀測值、Y' 為預測值,其預期的殘差為:
其中
紅色的部分我們稱為 Bias,可以解讀為:「觀測值」與「模型平均預測值」的預期差異,綠色的部分我們稱為 Variance,可以解讀為:「模型平均預測值」與「某一個模型的預測值」的預期差異。所謂的「模型平均預測值」可以想像成「假設我們可以不斷做實驗蒐集觀測值、訓練模型、做出預測,將所有預測值做平均,即為模型平均預測值」。
從上面的數學推演,我們可以知道殘差可以分為 Variance 以及 Bias 兩項。Variance 代表著是模型產生的預測值的變化程度,比如說假設訓練資料有一點點改變,模型的預測值就會有很大的變化,這時候代表模型的 Variance 比較大,通常類神經網路的 Variance 會比最小二乘法模型還大。
Bias 代表模型預測值的期望值與標籤的差異,假設 Bias 很大,代表模型並沒有掌握到資料的特性,因此預期的預測值跟標籤會差很多。比如我們之前提到的身高、體重的範例,從資料中我們知道身高、體重的資料大概是 2~3 次方的關係,若是使用 1 次方的模型,那麼不管資料的量有多少,模型預測值的期望值大概都會跟標籤有較大的差異。此外,通常類神經網路的 Bias 會比最小二乘法模型還大。
二、Bias and Variance Trade-off
我們會希望可以有一個模型,Bias 跟 Variance 都很低,但通常這件事情是無法達成…一般來說,一個模型的 Bias 低,伴隨著 Variance 就會高;反之亦然。圖一是典型的模型 Bias 跟 Variance 分析結果,x 軸為模型的複雜度,y 軸是標準化的殘差。從圖中可以看到我們頂多只能選一個 Bias 跟 Variance 都能接受的模型。如果要選一個 Bias 最佳的模型,則 Variance 就會比較大。而所謂比較好的模型,通常就是 Bias 跟 Variance 交會的點,以圖一的範例來看就是 model complexity = 4 的模型。
這種 Bias 跟 Variance 不能兩全齊美的現象,我們稱為 Bias and Variance Trade-off。在人工智慧的世界裡,常常會有這種無法兩個 (或數個) 優點都兼具的現象,此時,就是要靠人的智慧 (也就是讀者自己) 來抉擇了,人工智慧常常沒有辦法幫我們解決 Trade-off 的問題。
三、交叉驗證的 fold 數選擇
當我們要進行交叉驗證的時候,首先必須決定的事情是:要把資料切成幾等分?這個問題,我們可以從上述的 Variance and Bias 來看:假設我們把資料切成 2 等份,每 1 份只有 1 半的資料,也就是我們只有用一半的資料訓練模型,可想而知訓練好的模型應該 Bias 會比較大吧!反之,如果 fold 數越多,代表每次拿來訓練模型的資料越接近所有資料,這樣模型的預測應該要比較準。
為了驗證這個的想法,我們來進行以下的實驗:先產生 100 筆測試資料,接著我們訓練 100 個模型,第 1 個模型只有 1 筆訓練資料,第 2 個模型有 2 筆訓練資料,如此方式直到第 100 個模型有 100 筆訓練資料。最後用這 100 個模型分別來預測 100 筆測試資料。我們將這 100 個模型的 bias算出來後如圖二所示。
我們可以從圖三發現,當模型使用 80 筆訓練資料時,其 Bias 幾乎跟用更多筆資料差不多了,所以在這個實驗當中,假設訓練資料跟測試資料各有 100 筆,我們可以考慮使用 5 fold 交叉驗證,此時每一次拿來訓練模型的資料剛好是 80 筆,剩下的 20 筆則作為驗證資料。
小編來考考讀者囉:既然 fold 數設定大一點,模型的 Bias 會比較小,那為什麼不要把 fold 數設定成跟訓練資料筆數一樣呢?
以上述的例子,我們就用 100 fold 交叉驗證,每一次拿來訓練模型的資料是 99 筆,這樣 Bias 最小呀?
聰明的讀者應該已經知道問題在哪裡了!通常 Bias 越小,Variance 就會越大喔!
四、模型訓練時間的考量
除了從 Bias 來考慮 fold 數的選擇,另一個也很重要的議題是:模型訓練所需的時間。如果從 2 fold 交叉驗證換成 4 fold 交叉驗證,很顯然的模型訓練時間就變成原來的 2 倍,而訓練模型的資料數則只有增加 1.5 倍(以上述的範例是從 50 筆變成 75 筆)。如果 fold 數越多,訓練時間就會更久,但是訓練資料增加的比例會越來越少。因此,讀者也能從自己可以接受的模型訓練時間,來決定到底要選多少個 fold 。
重點整理
1、殘差可以分為 Bias 跟 Variance
2、Bias 跟 Variance 通常沒有辦法兩全其美
3、透過 Bias 分析,可以讓我們知道交叉驗證中的 fold 數要怎麼選
4、選擇 fold 數的時候,也要考慮模型訓練所需時間
參考資料
1、Kadowaki, D., Sakata R., Hosaka, K., and Hiramatsu, Y. (2021). Kaggle競賽攻頂秘笈 — 揭開 Grandmaster 的特徵工程心法,掌握制勝的關鍵技術. 1st ed. Translated by 李彥婷. Taipei: Flag Technology.
2、Hastie, T., Tibshirani R., and Friedman J. (2009). The Elements of Statistical Learning — Data Mining, Inference, and Prediction. 2nd ed. New York: Springer, pp. 241–245.
關於作者
Chia-Hao Li received the M.S. degree in computer science from Durham University, United Kingdom. He engages in computer algorithm, machine learning, and hardware/software codesign. He was former senior engineer in Mediatek, Taiwan. His currently research topic is the application of machine learning techniques for fault detection in the high-performance computing systems.