偏差-方差分解
當訓練得到一個模型\(f\)時,我們希望\(f\)的泛化能力足夠強,這樣也代表它對於新的樣本有比較好的預測能力。我們會通過實驗檢驗\(f\)的泛化誤差,那它的泛化誤差到底是由哪幾部分貢獻?
這裡先給出結論:噪聲、偏差與方差。
定義
訓練模型的前提是我們能拿到一個數據集\(D\),它其中包含多個樣本,來自同一個分佈。但是\(D\)不可能包含這個分佈上的所有樣本,也就是說\(D\)本身是總體的一個子集。
在總體中取相同數量的樣本組成不同的\(D_i\),用同一個演算法訓練得到的模型也會不同。所以訓練得到的模型針對某一個樣本\(x\)的預測值有一個期望的概念。即:
\[
\begin{equation}
\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}
\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