偏差-方差分解

當訓練得到一個模型\(f\)時,我們希望\(f\)的泛化能力足夠強,這樣也代表它對於新的樣本有比較好的預測能力。我們會通過實驗檢驗\(f\)的泛化誤差,那它的泛化誤差到底是由哪幾部分貢獻?

這裏先給出結論:噪聲、偏差與方差。

定義

訓練模型的前提是我們能拿到一個數據集\(D\),它其中包含多個樣本,來自同一個分佈。但是\(D\)不可能包含這個分佈上的所有樣本,也就是說\(D\)本身是總體的一個子集。

在總體中取相同數量的樣本組成不同的\(D_i\),用同一個算法訓練得到的模型也會不同。所以訓練得到的模型針對某一個樣本\(x\)的預測值有一個期望的概念。即:
\[
\begin{equation}
\overline{f}(\boldsymbol{x})=\mathbb{E}_{D}[f(\boldsymbol{x} ; D)]
\end{equation}
\]

這裏\(D\)是來自同一個分佈樣本數量相同的不同訓練集,它是一個變量的概念。不同的\(D_i\)訓練得到不同的模型\(f_i\)。使用它們預測\(x\),再對預測的值取期望就是(1)式的含義。\(\overline{f}(\boldsymbol{x})\)是模型對樣本\(x\)預測的期望值。

所以也就有一個方差的概念,即不同模型\(f_i\)對於\(x\)的預測值的波動情況。如果是迴歸任務的話,那麼預測值的方差可以表示爲:
\[
\begin{equation}
\operatorname{var}(\boldsymbol{x})=\mathbb{E}_{D}\left[(f(\boldsymbol{x} ; D)-\overline{f}(\boldsymbol{x}))^{2}\right]
\end{equation}
\]

(2)式是方差的定義。下面看一下噪聲,怎麼理解噪聲?

可能出現噪聲的場景,還是以迴歸任務爲例。樣本\(x\)對應的\(y\)在輸入的輸出錯了,多加了30上去。那麼多出來的30就是噪聲。噪聲是Irreducible error,它難以依靠模型優化消除。
\[
\begin{equation}
\varepsilon^{2}=\mathbb{E}_{D}\left[\left(y_{D}-y\right)^{2}\right]
\end{equation}
\]

上述是噪聲的方差定義,\(y\)是樣本的真實標籤,\(y_D\)是樣本在不同\(D_i\)中的標籤。比如在得到\(D_1\)這個數據集時,往其中加入\((x, y)\)這個樣本,將標籤\(y\)誤輸爲\(y+30\),此時便產生了噪聲。爲了方便計算,我們假設噪聲期望爲0,即:
\[
\begin{equation}
\mathbb{E}_{D}\left[y_{D}-y\right]=0
\end{equation}
\]

最後定義偏差,預測值的期望\(\overline{f}(\boldsymbol{x})\)與真實標籤\(y\)之差,偏差的平方如下:
\[
\begin{equation}
\operatorname{bias}^{2}(\boldsymbol{x})=(\overline{f}(\boldsymbol{x})-y)^{2}
\end{equation}
\]

推導

經過上面一番定義,有了許多和噪聲、方差、偏差相關的量。下面開始推導,對於樣本\(x\)的預測誤差的期望可以寫爲:
\[
\begin{equation}
Expected \ prediction \ error\ at \ x = \mathbb{E}_{D}\left[\left(f(\boldsymbol{x} ; D)-y_{D}\right)^{2}\right]
\end{equation}
\]

爲了簡便,作一些縮寫,記:
\[
f(\boldsymbol{x} ; D) \rightarrow f \\
y_{true} \rightarrow y \\
\overline{f}(x) \rightarrow \overline{f}
\]

第一次分解,引入真實標籤\(y\),

\(
原式=\mathbb{E}_{D}\left[\left(f-y_{D}\right)^{2}\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-y+y-y_{D}\right)^{2}\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-y\right)^{2}+\left(y-y_{D}\right)^{2}+2\left(f-y\right)\left(y-y_{D}\right)\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-y\right)^{2}\right]+\mathbb{E}_{D}\left[\left(y-y_{D}\right)^{2}\right]+\mathbb{E}_{D}\left[2\left(f-y\right)\left(y-y_{D}\right)\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-y\right)^{2}\right]+\varepsilon^{2}+0
\)

接下來對第一項進行分解,引入\(\overline{f}\),將其分解爲方差與偏差的組合:

\(
原式=\mathbb{E}_{D}\left[\left(f-y\right)^{2}\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-\overline{f}+\overline{f}-y\right)^{2}\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-\overline{f}\right)^{2}+\left(\overline{f}-y\right)^{2}+2\left(f-\overline{f}\right)\left(\overline{f}-y\right)\right] \\ \ \ \ \ \
=\mathbb{E}_{D}\left[\left(f-\overline{f}\right)^{2}\right]+\mathbb{E}_{D}\left[\left(\overline{f}-y\right)^{2}\right]+\mathbb{E}_{D}\left[2\left(f-\overline{f}\right)\left(\overline{f}-y\right)\right] \\ \ \ \ \ \
=\operatorname{var}(\boldsymbol{x})+\left(\overline{f}-y\right)^{2}+2\left(\overline{f}-y\right)\mathbb{E}_{D}\left(f-\overline{f}\right)
\\ \ \ \ \ \
=\operatorname{var}(\boldsymbol{x})+\operatorname{bias}^{2}(\boldsymbol{x})+2\left(\overline{f}-y\right)\left(\mathbb{E}_{D}\left(f\right)-\overline{f}\right)
\\ \ \ \ \ \
=\operatorname{var}(\boldsymbol{x})+\operatorname{bias}^{2}(\boldsymbol{x})
\)

至此,分解結束。

參考文獻

[1]《機器學習》. 周志華
[2]《神經網絡與深度學習》. 邱錫鵬
[3] 華盛頓大學機器學習課程Regression,week3.《Formally defining the 3 sources of error》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章