偏差方差分解
偏差方差分解 (誤差分解)
先引入一個問題: Machine Learning 與 Curve Fitting 的區別是什麽?1
Curve Fitting 是使用所有的數據擬合一條曲線; 而 Machine Learning 是采用真實世界中采樣的一小部分數據,並且我們希望我們的模型能夠對於未知數據有不錯的泛化性能.因此涉及到Bias-Variance的權衡.
學習算法的預測誤差, 或者說泛化誤差(generalization error)可以分解為三個部分: 偏差(bias), 方差(variance) 和噪聲(noise). 在估計學習算法性能的過程中, 我們主要關註偏差與方差. 因為噪聲屬於不可約減的誤差 (irreducible error).
下面來用公式推導泛化誤差與偏差與方差, 噪聲之間的關系.
符號 | 涵義 |
---|---|
\(\mathbf{x}\) | 測試樣本 |
\(D\) | 數據集 |
\(y_{D}\) | \(\mathbf{x}\) 在數據集中的標記 |
\(y\) | \(\mathbf{x}\) 的真實標記 |
\(f\) | 訓練集 \(D\) 學得的模型 |
\(f(\mathbf{x}; D)\) | 由訓練集 \(D\) 學得的模型 \(f\) 對 \(\mathbf{x}\) 的預測輸出 |
\(\bar{f}(\mathbf{x})\) | 模型 \(f\) 對 \(\mathbf{x}\) 的 期望預測 輸出 |
泛化誤差
以回歸任務為例, 學習算法的平方預測誤差期望為:
\begin{equation}
Err(\mathbf{x}) = E\left[\left( y - f(\mathbf{x}; D) \right)^2\right]
\end{equation}
方差
在一個訓練集 \(D\) 上模型 \(f\) 對測試樣本 \(\mathbf{x}\) 的預測輸出為 \(f(\mathbf{x}; D)\), 那麽學習算法 \(f\) 對測試樣本 \(\mathbf{x}\) 的 期望預測 為:
\begin{equation}
\overline{f}(\mathbf{x}) = E_D\left[f\left(\mathbf{x}; D\right)\right]
上面的期望預測也就是針對 不同 數據集 \(D\), \(f\) 對 \(\mathbf{x}\) 的預測值取其期望, 也被叫做 average predicted.
使用樣本數相同的不同訓練集產生的方差為:
\begin{equation}
\rm{var}(\mathbf{x}) = E_D\left[\left( f(\mathbf{x}; D) - \overline{f}(\mathbf{x}) \right)^2\right]
\end{equation}
噪聲
噪聲為真實標記與數據集中的實際標記間的偏差:
\begin{equation}
\varepsilon^2 = E_D\left[ (y_D - y)^2 \right]
\end{equation}
偏差
期望預測與真實標記的誤差稱為偏差(bias), 為了方便起見, 我們直接取偏差的平方:
\begin{equation}
\rm{bias}^2(\mathbf{x}) = \left( \overline{f}(\mathbf{x}) - y \right)^2
\end{equation}
對算法的期望泛化誤差進行分解:
上面的公式2藍色部分是對上面對應的等價替換, 然後對其展開後, 紅色部分剛好為 0.
對最終的推導結果稍作整理:
至此, 繼續來看一下偏差, 方差與噪聲的含義 3:
偏差、方差、噪聲
- 偏差:度量了模型的期望預測和真實結果的偏離程度,刻畫了模型本身的擬合能力。
- 方差:度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響。
- 噪聲:表達了當前任務上任何模型所能達到的期望泛化誤差的下界,刻畫了學習問題本身的難度。
偏差-方差窘境(bias-variance dilemma)
為了得到泛化性能好的模型,我們需要使偏差較小,即能充分擬合數據,並且使方差小,使數據擾動產生的影響小。但是偏差和方差在一定程度上是有沖突的,這稱作為偏差-方差窘境。
下圖給出了在模型訓練不足時,擬合能力不夠強,訓練數據的擾動不足以使學習器產生顯著變化,此時偏差主導泛化誤差,此時稱為欠擬合現象。當隨著訓練程度加深,模型的擬合能力增強,訓練數據的擾動慢慢使得方差主導泛化誤差。當訓練充足時,模型的擬合能力非常強,數據輕微變化都能導致模型發生變化,如果過分學習訓練數據的特點,則會發生過擬合。
- 針對欠擬合,我們提出集成學習的概念並且對於模型可以控制訓練程度,比如神經網絡加多隱層,或者決策樹增加樹深。
增加模型的叠代次數;更換描述能力更強的模型;生成更多特征供訓練使用;降低正則化水平。 - 針對過擬合,我們需要降低模型的復雜度,提出了正則化懲罰項。
擴增訓練集;減少訓練使用的特征的數量;提高正則化水平。
隨著模型復雜度的提升, 偏差逐漸減小, 方差逐漸增大. 最佳的模型復雜度是在 Total Error 最小的時候, 該點導數為0. 由於 Err=variance+bias+noise, 所以在拐點處:4
\[ \newcommand{\dif}{\mathop{}\!\mathrm{d}} \frac{\dif\text{Bias}}{\dif\text{Complexity}} = - \frac{\dif\text{Variance}}{\dif\text{Complexity}} \]
給出了尋找最優平衡點的數學描述。若模型復雜度大於平衡點,則模型的方差會偏高,模型傾向於過擬合;若模型復雜度小於平衡點,則模型的偏差會偏高,模型傾向於過擬合。
Bias-Variance Tradeoff 理論意義
- 能夠讓我們更好地認識模型的復雜度, 指導我們對模型的改進方向.
- 偏差-方差分解實用價值很有限. 偏差和方差並不能夠真正的被計算,因為我們不知道數據的真實分布. 偏置-方差分解依賴於對所有的數據集求平均,而在實際應用中我們只有一個觀測數據集。
K折交叉驗證與Bias-Variance關系
為什麽K-fold Cross Validation中的k值會影響偏差和方差呢?
K折交叉驗證重復k次地把數據集分成訓練集和測試集,K值越大,每次劃分的訓練集就越大,估計模型的期望\(E[\hat f]\)就越接近整個數據集的真實模型f,因此模型偏差就越小。 5
參考資料:
http://www.learnopencv.com/bias-variance-tradeoff-in-machine-learning/?
偏差與方差?
《機器學習》, 周誌華, 2.5 節偏差與方差.?
Understanding the Bias-Variance Tradeoff?
機器學習中的Bias(偏差),Error(誤差),和Variance(方差)有什麽區別和聯系??
偏差方差分解