機器學習基礎 偏差與方差

2022-07-20 15:36:12 字數 3583 閱讀 1658

在有監督學習中,通過訓練資料得到的模型,需要考察其泛化能力,通常用泛化誤差來衡量模型泛化能力的高低。

也可以用測試誤差來衡量模型泛化能力,不過測試的樣本是有限的(而且難以保證不是有偏的)。基於大數定律,假設每次參與模型訓練的樣本都是獨立同分布的(實際有點難,會有樣本重疊),那麼從多個訓練樣本中得到的經驗誤差(訓練樣本集上的平均損失)的期望就等於泛化誤差,也就是說,多個樣本上的平均訓練誤差是接近泛化誤差的。

泛化誤差可以分解為3部分,即泛化誤差=偏差+方差+雜訊

這裡以回歸任務為例來說明泛化誤差的分解。回歸任務中常使用平方損失函式(quadratic loss function)來衡量模型**的錯誤程度,該損失函式的基本形式為(統計學習方法,李航):

\[l(y,f(x))=(y-f(x))^2

\]其中\(y\)為真實值,\(f(x)\)為模型**值。

設\(x\)為測試樣本,\(y_d\)為樣本在資料集中的標記,\(y\)為樣本的真實標記,\(f(x;d)\)為訓練集\(d\)上學到的模型\(f\)在\(x\)上的**輸出,其期望值為

\[\overline(x) = \mathbb_d[f(x;d)]

\]那麼:

\[bias^2(x) = \bigl(\overline(x)-y\bigr)^2

\]\[var(x) = \mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]

\]\[\varepsilon^2 = \mathbb_d\bigl[\bigl(y-y_d\bigr)^2\bigr]

\]\[e(f;d)=\mathbb_d\bigl[(f(x;d)-y_d\bigr)^2\bigr]

\]泛化誤差可以分解為偏差、方差和雜訊,推導過程如下(參考《機器學習》,周志華)

\[\begin

e(f;d) & =\mathbb_d\bigl[(f(x;d)-y_d\bigr)^2\bigr]\\

& = \mathbb_d\bigl[\bigl(f(x;d)-\overline(x)+\overline(x)-y_d\bigr)^2\bigr]\\

& =\mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]+\mathbb_d\bigl[\bigl(\overline(x)-y_d\bigr)^2\bigr]\\

& \quad+2\mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)\bigl(\overline(x)-y_d\bigr)\bigr]\\

& =\mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]+\mathbb_d\bigl[\bigl(\overline(x)-y_d\bigr)^2\bigr]\\

& =\mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]+\mathbb_d\bigl[\bigl(\overline(x)-y+y-y_d\bigr)^2\bigr]\\

& =\mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]+\mathbb_d\bigl[\bigl(\overline(x)-y\bigr)^2\bigr]+\mathbb_d\bigl[\bigl(y-y_d\bigr)^2\bigr]\\

& \quad+2\mathbb_d\bigl[\bigl(\overline(x)-y\bigr)(y-y_d)\bigr]\\

& =\mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]+\bigl(\overline(x)-y\bigr)^2+\mathbb_d\bigl[\bigl(y-y_d\bigr)^2\bigr]\\

\end\]

上面公式中的灰色部分為0(假設雜訊的期望\(\mathbb_d[y_d-y]=0\)),這樣我們就得到了如下公式,完成了回歸任務下的泛化誤差分解。

\[\begin

e(f;d) & = \mathbb_d\bigl[\bigl(f(x;d)-\overline(x)\bigr)^2\bigr]+\bigl(\overline(x)-y\bigr)^2+\mathbb_d\bigl[\bigl(y-y_d\bigr)^2\bigr]\\

& = var(x)+bias^2(x)+\epsilon^2\\

\end

\]泛化誤差的分解有什麼意義呢?

source

也可以用下圖來表示方差和偏差的關係:

關於偏差和方差的權衡(bias-variance tradeoff)

偏差和方差的權衡是指,隨著模型複雜度(model complexity)變化,方差和偏差會此消彼長的現象(如下圖所示)。

模型訓練不足時,就出現欠擬合(under-fitting),此時模型的誤差主要來自偏差,如果是在分類任務中可能在訓練集和測試集上的準確率都非常低(反過來說就是錯誤率都很高);

訓練模型時用力過猛時就會發生「過擬合」 (over-fitting),在分類任務上可能會出現訓練集上準確率高,測試集上準確率低。此時樣本本身的特異性也會納入模型之中,導致**值的變異性更大。

如何降低偏差(bias)?

參考machine learning yearning,andrew ng

如何降低方差(variance)?

參考machine learning yearning,andrew ng

k最近鄰演算法(k-nearestneighbor)中隨著k的增大bias和variance會怎麼變化?

從計算的角度看,隨著k(鄰居數)增大模型好像更加複雜了(需要迭代更多的資料點,消耗更多的計算資源)。但是從模型角度考慮「複雜程度」(complexity)的時候應該看**結果的變異性(variability),而不是計算過程的「複雜程度」,結果的變異性越大(複雜度越高)那麼方差就越大。如下圖所示,k=0時knn的決策邊界更顯得「崎嶇不平」,這說明決策的過程更加複雜,對應的方差也更大,反之k=100時的決策邊界很平滑,此時的方差更小;

\]可以發現方差和k是成反比的。

通常來說:

機器學習 診斷偏差和方差

如果乙個機器學習演算法表現不理想,要麼是欠擬合,要麼是過擬合。越高次方越能代表我們的訓練集,但能適應訓練集並不代表能推廣至一般情況。高偏差 訓練誤差很大,訓練誤差與測試誤差很小,隨著樣本增多,訓練誤差增大。高方差 訓練誤差很小,訓練誤差與測試誤差差距很大,隨著樣本增多,測試誤差會減小。訓練集誤差和交...

理解機器學習中的偏差與方差

學習演算法的 誤差,或者說泛化誤差 generalization error 可以分解為三個部分 偏差 bias 方差 variance 和雜訊 noise 在估計學習演算法效能的過程中,我們主要關注偏差與方差.因為雜訊屬於不可約減的誤差 irreducible error 首先拋開機器學習的範疇,...

偏差與方差

偏差度量了學習演算法的期望 與真實結果的偏離程度,即刻畫了學習演算法本身的擬合能力 方差度量了同樣大小的訓練集的變動多導致的學習效能的變化,即刻畫了資料擾動所造成的影響。雜訊則表達了在當前任務上任何學習演算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。偏差 方差分解說明,泛化效能是由學...