偏差Bias和方差Variance——機器學習中的模型選擇
模型性能的度量
在監督學習中,已知樣本 ,要求擬合出一個模型(函數) ,其預測值 與樣本實際值 的誤差最小。
考慮到樣本數據其實是採樣, 並不是真實值本身,假設真實模型(函數)是 ,則採樣值 ,其中 代表噪音,其均值為0,方差為 。
擬合函數 的主要目的是希望它能對新的樣本進行預測,所以,擬合出函數 後,需要在測試集(訓練時未見過的數據)上檢測其預測值與實際值 之間的誤差。可以採用平方誤差函數(mean squared error)來度量其擬合的好壞程度,即
誤差期望值的分解
經過進一步的研究發現,對於某種特定的模型(下面還會進一步說明「特定模型」的含義),其誤差的期望值可以分解為三個部分:樣本噪音、模型預測值的方差、預測值相對真實值的偏差
公式為:
其中
即:誤差的期望值 = 噪音的方差 + 模型預測值的方差 + 預測值相對真實值的偏差的平方
先看一個圖比較直觀。
使用特定模型對一個測試樣本進行預測,就像打靶一樣。
靶心(紅點)是測試樣本的真實值,測試樣本的y(橙色點)是真實值加上噪音,特定模型重複多次訓練會得到多個具體的模型,每一個具體模型對測試樣本進行一次預測,就在靶上打出一個預測值(圖上藍色的點)。所有預測值的平均就是預測值的期望(較大的淺藍色點),淺藍色的圓圈表示預測值的離散程度,即預測值的方差。
所以,特定模型的預測值 與 真實值 的誤差的 期望值,分解為上面公式中的三個部分,對應到圖上的三條橙色線段:預測值的偏差、預測值的方差、樣本噪音。
理解誤差期望值
回顧一下,期望值的含義是指在同樣的條件下重複多次隨機試驗,得到的所有可能狀態的平均結果(更詳細的定義參考維基百科-期望值)。對於機器學習來說,這種實驗就是我們選擇一種演算法(並選定超參數),以及設置一個固定的訓練集大小,這就是同樣的條件,也就是上文所說的特定的模型。然後每次訓練時從樣本空間中選擇一批樣本作為訓練集,但每次都隨機抽取不同的樣本,這樣重複進行多次訓練。每次訓練會得到一個具體的模型,每個具體模型對同一個未見過的樣本進行預測可以得到預測值。不斷重複訓練和預測,就能得到一系列預測值,根據樣本和這些預測值計算出方差和偏差,就可以幫助我們考察該特定模型的預測誤差的期望值,也就能衡量該特定模型的性能。對比多個特定模型的誤差的期望值,可以幫助我們選擇合適的模型。
進一步理解誤差期望值
再看一個更接近實際的例子,來自 Bias-Variance in Machine Learning
我們設置真實模型 ,函數圖像如下圖曲線所示。 樣本值 y 就在真實值的基礎上疊加一個隨機噪音 N(0, 0.2)。
現在我們用線性函數來構建模型,訓練樣本來自隨機採集的一組 y,經過多次重複,可以得到一系列具體的線性模型,如下圖中那一組聚集在一起的黑色直線所示,其中間有一條紅色線是這一組線性函數的平均(期望值)。這就是特定模型(線性函數)在同樣條件下(每次取20個樣本點)重複多次(得到50個線性函數)。
根據生成的50個具體的線性函數來考察該線性模型的預測性能,選取一個樣本點,比如選擇 x=5 時(下圖中紅色豎線位置),真實值 f(x) = 6.876,樣本 ,y 與 f(x) 的偏差體現在圖片右下方的噪音(noise) 部分。紅色線性函數在 x=5 位置的值是這50個線性函數在該位置的期望值,黑色直線在 x=5 位置的一系列值的分布則反映了它們的方差(Variance)。50個預測的期望值與真實值 f(x) 之間的距離體現了偏差(Bias)。(參考下圖右下部分的 variance 和 bias)。
總之,在機器學習中考察 偏差 和 方差,最重要的是要在不同數據集上訓練出一組具體的模型,這些模型對一個測試樣本進行預測,考察這一組預測值的方差和偏差。
誤差的期望值公式推導
誤差的期望值公式為什麼可以分解為 噪音、偏差和方差,可以從數學上推導得來。先準備幾個推導中需要用到的公式,為了方便,我們簡化符號,記作
- 方差的定義和計算公式 即 隨機變數X的方差 = X平方的期望 - X期望的平方(參考 維基百科-方差),移項後得到
- 測試樣本y的期望值 因為真實值 是一個確定的值,所以 另外根據上文測試樣本值和噪音的定義 所以 ,即
- 測試樣本y的方差 即
- 樣本噪音與預測值無關 因為 與 不相關,所以 (參考維基百科-期望值)
- 誤差的期望 公式推導如下 最後得到的三個項分別是:噪音的方差、模型預測值的方差、預測值相對真實值的偏差的平方。
偏差 - 方差的選擇
理想中,我們希望得到一個偏差和方差都很小的模型(下圖左上),但實際上往往很困難。
選擇相對較好的模型的順序:方差小,偏差小 > 方差小,偏差大 > 方差大,偏差小 > 方差大,偏差大。 方差小,偏差大 之所以在實際中排位相對靠前,是因為它比較穩定。很多時候實際中無法獲得非常全面的數據集,那麼,如果一個模型在可獲得的樣本上有較小的方差,說明它對不同數據集的敏感度不高,可以期望它對新數據集的預測效果比較穩定。
選擇模型就是選擇假設集合
很多時候,機器學習所面臨的問題,我們事先並不確切的知道要擬合的是一個怎樣形式的函數,是幾次多項式,是幾層神經網路,選擇樣本的哪些特徵,等等,都缺乏先驗的知識來幫助我們選擇。我們在一個基本上無窮大的假設(模型)集合中,憑藉有限的經驗進行嘗試和選擇。
機器學習有多種演算法,以及每種演算法中經常又可以選擇不同的結構和超參數。它們所覆蓋的假設集合有不同的大小。所以,選擇一種演算法(包括其結構和超參數),就是選擇(限定)了一個假設集合。我們期望真實模型存在於我們所選定的假設集合範圍內,並且該假設集合越小越好。
下面兩幅圖粗略表現了不同假設集合的關係
我們思考一下監督學習的整個流程,其實就是一個不斷縮小假設集合的過程。從大的方面看可以分為兩個步驟。
1. 選擇一個假設集合,包括某種演算法模型及相關結構、超參數等。
2. 使用樣本數據進行訓練,使該模型盡量擬合樣本,就是從上面選定的假設集合中找到一個特定的假設(模型)。
上面第一個步驟中,我們可以選擇一些不同的假設集合,然後通過考察它們的偏差方差,對各假設集合的性能進行評估。比如不同次數多項式的假設集合,上圖假設真實模型是一個二次多項式,那麼線性函數集合中的模型會欠擬合(方差低,偏差太高),高次多項式集合中的模型容易過擬合(方差太高,偏差低),二項式集合中的模型能夠有較好的折中(方差和偏差都相對較低),總體誤差最小。
偏差 - 方差權衡
下面幾個案例來自 Andrew Ng 的公開課《Machine Learning》。
1. 多項式回歸
多項式回歸模型,我們可以選擇不同的多項式的次數,對模型的影響如下。
2.正則化項
添加正則化項(Regularization)相當於對模型參數施加懲罰,壓縮了參數的範圍,限制了模型的複雜度,從而有助於緩解模型過擬合問題,選擇不同的 正則化項權重λ 對模型的影響如下。
3.樣本數量
一般來說,我們希望樣本數量越多越好。隨著樣本數量增加,訓練誤差會逐漸增長,測試誤差會逐漸降低。
4.神經網路
K-Fold 交叉驗證
計算偏差、方差可以幫助評估不同的假設集合,不過它需要較多的樣本,以及重複多次擬合模型,需要比較多的數據和計算資源(參考上面圖3)。
實際中,比較常用的方法是K-Fold交叉驗證。它與標準的偏差、方差計算過程不太一樣。簡單的說,就是將訓練樣本分成k份,每次取其中一份作為驗證集,另外 k-1 份作訓練集。這樣進行 k 次訓練得到 k 個模型。這 k 個模型對各自的驗證集進行預測,得到 k 個評估值(可以是誤差、準確率,或按某種規則計算的得分等等)。注意到每個樣本參與了 k-1 個模型的訓練(導致模型之間存在關聯),每個樣本有一次被用作測試(沒有用另外的從未見過的測試集數據),所以這與標準的計算過程是不一樣的。
不過,K-Fold依然是很有價值的模型性能評估。可以直接針對這 k 個模型的評估值(誤差、準確率,或按某種規則計算的得分等等)進行分析,取其平均可以體現該模型的預測準確性。對這 k 個值,比如k個誤差值,計算方差,可以反應該模型的預測誤差的離散程度,即後續用於未見過的樣本數據時,模型的預測準確性是否穩定。
參考
維基百科 - Bias–variance tradeoff
Bias-Variance in Machine Learning
維基百科 - 方差
維基百科 - 期望值
《Pattern Recognition and Machine Learning》之 3.2. The Bias-Variance Decomposition
推薦閱讀: