有監督學習中,預測偏差的來源主要有兩部分,分別爲 bias 與 variance,模型的性能取決於 bias 與 variance 的 tradeoff ,理解 bias 與 variance 有助於咱們診斷模型的錯誤,避免 over-fitting 或者 under-fitting.html
在統計與機器學習領域權衡 Bias 與 Variance 是一項重要的任務,由於他可使得用有限訓練數據訓練獲得的模型更好的範化到更多的數據集上,監督學習中的偏差來源主要爲 Bias 與 Variance,接下來來看偏差來源的推導。算法
咱們知道,一樣的算法在不一樣的數據集上獲得的模型結果極可能不一樣,儘管數據集來自於同一個分部。對於觀測數據 $X$ 以及待預測的變量 $Y$ ,假設二者服從 $Y = f(X) + \varepsilon$ ,$\varepsilon$ 爲噪聲,其服從的$N(0,\delta_{\varepsilon }^2)$ ,預測任務中須要獲得 $Y$ 值,首先在數據集 $D$ 上經過算法學習一個近似 $f(X)$ 的模型 $\hat{f}(X)$ 來預測獲得 $X$ 的輸出。給定 $X$ 一個觀測值 $x$ ,待預測變量 $y = f(x) +\varepsilon$ 。機器學習
將模型的偏差分解,採用均方損失,模型 $\hat{f}(X)$ 在點 $x$ 的總體預測偏差爲真實值與模型預測值之間的偏差:\[Err(x) = E[(y - \hat{f}(x))^2]\] 這個式子其實等價於:函數
\[Err(x) = [E \hat{f}(x) –f(x)]^2 +E[\hat{f}(x) - E\hat{f}(x)]^2 + \delta_{\varepsilon }^2\]性能
——————————————————————————————————————————————————————————————學習
這裏爲推倒過程,先回憶幾個公式 :$Var[X] = E[X^2]-E^2[X]$ , 且因爲函數 $f(X)$ 是肯定的,因此 $E[f(x)] = f(x)$,且有 $\varepsilon \sim N(0,\delta_{\varepsilon }^2)$ ,再結合 $y = f(x) + \varepsilon$ 能夠獲得:測試
\[E[y] = E[f(x) + \varepsilon] = E[f(x)]+0 =E[f(x)] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \tag{1} \]spa
\[Var[y] = E[(y-E[y])^2] = E[(f(x) + \varepsilon –f(x))^2] = E[\varepsilon^2] = \delta_{\varepsilon }^2 \tag{2}\]rest
\begin{aligned}
Err(x) &= E[(y - \hat{f}(x))^2] \\
&= E[y^2 - 2y \hat{f}(x) + \hat{f}^2(x)] \\
&= E[y^2] - E[2y \hat{f}(x)] + E[\hat{f}^2(x)] \\
&= E[y^2] \mathbf{- E^2[y] +E^2[y]} - 2E[y]E[\hat{f}(x)] + E[\hat{f}^2(x)] \mathbf{ -E^2[\hat{f}(x)]+ E^2[\hat{f}(x)]} \\
& \ \ \ \ \ \ \mathbf{Combined \ with\ the\ above\ equations \ (1) \ (2).} \\
&= \color{Blue} {E^2[\hat{f}(x)] - 2f(x)E[\hat{f}(x)] +f^2(x)} +\color{Green} {E[\hat{f}^2(x)] -E^2[\hat{f}(x)]} + \color{Red} {E[y^2] - E^2[y]} \\
& \ \ \ \ \ \ \mathbf{The \ last\ two \ terms \ based \ on }: Var[X] = E[X^2] -E^2[X] \\
&= [E[\hat{f}(x)]-f(x)]^2+E[(\hat{f}(x)-E\hat{f}(x))^2]+Var[y] \\
&= E^2[\hat{f}(x)] +Var[\hat{f}(x)] +\delta_{\varepsilon}^2 \\
\end{aligned}htm
——————————————————————————————————————————————————————————————
$E \hat{f}(x) –f(x)$ 即爲 Bias ,$E[\hat{f}(x) - E\hat{f}(x)]^2$ 爲 Variance , $\delta_{\varepsilon}^2$ 即爲模型沒法避免的 Noise ,也可稱爲 Irreducible Error ,因此如今對於一個預測模型的偏差能夠 分爲以下幾部分:
\[Error = Bias^2 +Variance + Noise \]
對於預測模型問題,若是咱們可以得到全部可能的數據集合,並在這個數據集合上將 Error 最小化,這樣學習到的模型就能夠稱之爲「真實模型」,固然,咱們是不管如何都不能得到並訓練全部可能的數據的,因此「真實模型」確定存在,但沒法得到,咱們的最終目標就是去學習一個模型使其更加接近這個真實模型。爲了在有限的訓練數據集上達到這個目標,就要使 Error 最小了,Error 分爲 Bias 、 Variance 與 Noise :
因爲 Bias 是沒法避免的 因此要獲得好的模型,就須要低 Bias 與低 Variance 下圖給出一個 Bias 與 Variance 的示意圖,明顯能夠看到低 Bias 與低 Variance 次次會命中靶心,而低 Bias 高 Variance 取均值後纔會大多命中靶心,其餘狀況全打歪了。
低 Bias 與低 Variance 纔會獲得低 Error,但低 Bias 與低 Variance 每每是不能兼得的。若是要下降模型的 Bias,就必定程度上會提升模型的 Variance,反之亦然。這裏以 K-NN 爲例,看一些 K-NN 中 Bias 與 Variance 與其參數 K 的關係,在 K-NN 中,偏差形式以下:
\[Err(x)=\underbrace{\left [f(x)-\frac{1}{k}\sum_{i=1}^kf(x_i) \right ]^2}_{\mathbf{Bias^2}} + \underbrace{ \frac{\delta^2}{k} }_{\mathbf{Var}}+ \underbrace{\delta^2}_{\mathbf{Noise}}\]
這裏 $x_1,x_2,…x_k$ 是 $x$ 在訓練數據集中最近的 $k$ 個鄰居 ,當 $K$ 取值很小時,$\frac{1}{k}\sum_{i=1}^kf(x_i)$ 與 $f(x)$ 十分接近,因此 Bias 很低,但第二項 Variance 很大,隨着 $K$ 的增大,Bias 明顯會增大,但 Variance 會減少,這即是 Bias 與 Variance 之間的一個很微妙的關係。 爲何這樣呢?
由於預測模型試圖用有限的訓練樣本上去獲得一個用來預測全數據集的模型,爲了下降模型的偏差率,就要儘可能使模型在訓練數據集上更加「準確」,這樣作每每會增長 Model Complexity ,但卻忽略模型在全數據集的泛化能力,模型在訓練數據集的Bias 減小了,可是對於訓練數據集中沒有出現的數據,模型對其預測就會很不穩定,這樣就會形成高 Variance ,這也就是常說的 over-fitting ,爲了不 over-fitting,就不能徹底依賴於有限的訓練數據,這時能夠加入一些先驗信息,先驗信息在模型求解的過程當中會增長一些限制,提升模型的穩定程度,同時減小 Model Complexity,進而能夠下降 Variance,可是因爲「不信任」訓練數據,會使模型的 Bias 增大,或者訓練不足時,模型擬合能力不夠,訓練數據的擾動不足以使模型擬合其真實狀況,這時候 Bias 太大,模型對訓練數據的預測能力就會降低,這即是 under-fitting 了,因此須要要 Bias 與 Variance 之間 尋找一個 tradeoff。
由於 Noise 是不可避免的,這裏忽略 Noise ,根據 Bias 、Variance 與 Model Complexity 之間的關係,能夠獲得下圖左所示的圖形,該圖表示在訓練數據上幾個量之間的關係,爲了找到最優的模型,
在訓練集中 Bias 降低與 Variance 上升的過程當中來找到所謂的 tradeoff ,這時的 Model Complexity 是適中的,找到了這個 tradeoff ,在全數據集或者預測集上的預測集上的表現以下圖右所示,因此 Bias 與 Variance 須要適中,纔會獲得在訓練集與測試集偏差都小的模型。
最後談一下 K-fold Cross Validation 與權衡 Bais-Variance 之間的關係。這個理解其實很簡單,先看對於數據的劃分「
每次留出一個 fold 用來作「驗證集」來計算偏差,當 K 設置很大時,每一個 fold 都會有不多的數據,小數據集更容易有噪音,因此小的數據集會有大的 Bias ,同時 K 個 fold 表明 K 組數據分別訓練一個模型,求平均後 Variance 會很小;相反若是 K 很大,每一個 fold 數據相對來講仍是不少的,因此 Bias 相對較小,可是因爲總模型數較小,因此 Variance 仍是比較大的。
參考:
http://scott.fortmann-roe.com/docs/BiasVariance.html#fn:1
http://www.zhihu.com/question/27068705/answer/35151681
https://en.m.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff#K-nearest_neighbors