機器學習中的偏差和方差

2021-10-08 01:17:35 字數 3286 閱讀 4735

首先了解一下資料集的分類:

偏差,可以理解為樣本y與模型**結果的差距,可以使用平方差計算。

方差,是樣本y值與模型期望的差的平方和。

如果你在訓練集上的錯誤率是 15%(即 85% 的精度),但你的目標是 5% 錯誤率(95% 精度),那麼首先要解決的問題是提高演算法在訓練集上的效能。演算法在驗證/測試集上的效能通常比在訓練集上要差。所以,如果演算法在已知樣本上達到了 85% 的精度,那麼是不可能在未知樣本上達到 95% 精度的。

如上所述,假設你的演算法在驗證集上有 16% 的錯誤率(84% 精度),我們將這 16% 的錯誤率分為兩部分:

注意:在統計學領域有著更多關於偏差和方差的正式定義。粗略地說,偏差指的是演算法在大型訓練集上的錯誤率;方差指的是演算法在測試集上的表現低於訓練集的程度。當你使用均方誤差(mse)作為誤差度量指標時,你可以寫下偏差和方差對應的兩個公式,並且證明總誤差=偏差+方差。

模型對實驗資料欠擬合(underfitting) 是會出現搞偏差,而過擬合(overfitting)會造成高方差。

因此,一些學習演算法的優化能解決誤差**的第乙個部分——偏差,並且提高演算法在訓練集上的效能;而另一些優化能解決第二個部分——方差,並幫助演算法從訓練集到驗證/測試集上更好地泛化。還有一些方法能夠對系統架構做出較大改變,同時減少偏差和方差。但是這些方法往往難以鑑定和實

現。

假設你正在構建乙個語音識別系統,並發現 14% 的音訊片段背景雜訊太多,或者十分難以理解,導致即使是人類也無法識別出所說的內容。在這種情況下,即使是「最優」的語音識別系統也可能約有 14% 的誤差。

假設在這個語音識別問題上,你的演算法達到:

演算法在訓練集上的表現已經接近最優錯誤率 14%,因此在偏差上或者說在訓練集表現上沒有太大的提公升空間。然而,演算法沒有很好地泛化到驗證集上,在方差造成的誤差上還有很大的提公升空間。可以將 30% 的總驗證集誤差分解如下(類似的分析可以應用於測試集誤差):

如果可避免偏差值是負的,即演算法在訓練集上的表現比最優錯誤率要好。這意味著你正在過擬合訓練集,並且演算法已經過度記憶(over-memorized)訓練集。你應該專注於有效降低方差的方法,而不是選擇進一步減少偏差的方法。

為了將這與我們之前的定義聯絡起來,偏差和可避免偏差關係如下:

偏差 = 最佳誤差率(「不可避免偏差」)+ 可避免的偏差

使用這些定義是為了更好地幫助讀者理解如何改進學習演算法。這些定義與統計學家定義的偏差和方差不同。從技術角度上說,這裡定義的「偏差」應該叫做「我們認為是偏差的誤差」;另外「可避免偏差」應該叫做「我們認為學習演算法的偏差超過最優錯誤率的誤差」

這個「可避免偏差」反映了演算法在訓練集上的表現比起「最優分類器」差多少。

方差的概念和之前保持一致。理論上來說,我們可以通過訓練乙個大規模訓練集將方差減少到接近零。因此只要擁有足夠大的資料集,所有的方差都是可以「避免的」,所以不存在所謂的「不可避免方差

再考慮乙個例子,該例子中最優錯誤率是 14%,我們有:

可避免的偏差誤差是 1%,方差誤差約為 1%。因此,演算法已經做的很好了,幾乎沒有提公升的空間。它只比最佳錯誤率低 2%。

從這些例子中我們可以看出,了解最優錯誤率有利於指導我們的後續工作。在統計學上,最優錯誤率也被稱為貝葉斯錯誤率(bayes error rate),或貝葉斯率。

如何才能知道最優錯誤率是多少呢?對於人類擅長的任務,例如識別或音訊剪輯轉錄,你可以讓普通人提供標籤,然後測評這些人為標籤相對於訓練集標籤的精度,這將給出最優錯誤率的估計。如果你正在解決一項人類也很難解決的問題(例如**推薦什麼電影,或向使用者展示什麼廣告),這將很難去估計最優錯誤率。

如果你的學習演算法遭受高可避免偏差,你可以嘗試以下方法:

注意:

如果你的學習演算法遭受高方差,你可以嘗試以下方法:

新增正則化(l2正則化,l1正則化,dropout):該方法減少了方差,但增加了偏差。

新增提前停止(early stopping)(基於驗證集錯誤提前停止梯度下降):該方法減少方差但增加了偏差。提前停止的行為很像正則化方法,一些作者稱它為正則化方法。

以下是處理偏差和方差問題最簡單的公式:

如果你可以增加神經網路的大小,並無限制的增加訓練集資料,在實踐中,增加網路的模型終將導致你會遇到計算問題,因為訓練大的模型很慢。你也可能會增加方差和過擬合的風險。

模型的大小和方差的使用:增加模型的大小,通常可以減少偏差,但可能會增加方差。但是,可以通過正則化補充,因為增加正則化一般會增加偏差,但是能減少方差。

通過增加訓練資料,你通常也可以在不影響偏差的情況下減少方差。

選擇合適的特徵數目/型別:減少特徵數量可能有助於解決方差問題,但也可能增加偏差。略微減少特徵數量(比如從1000個特徵減少到900)不太可能對偏差產生很大影響。顯著地減少它(比如從1000減少到100——減少10倍)更可能有顯著的影響,只要你沒有將太多有用的特徵排除在外。在現代深度學習中,當資料豐富時,已經特徵選擇了,盡可能給演算法我們所有的特徵,並讓演算法根據資料分類使用哪些特徵。但是當你訓練集比較小時,特徵選擇可能非常有用。

減少模型大小(如神經元/層的數量):謹慎使用。該方法能夠減少方差,但可能增加偏差。但是,我不推薦使用該方法來處理方差。增加正則化通常能得到更好的分類效能。減少模型大小的好處就是降低計算成本,從而加快訓練模型的速度。如果加快模型的訓練是有用的,那無論如何考慮減少模型的大小。但是如果你的目標是減少方差,並且你不關心計算成本,那麼考慮新增正則化替代之。

不同的模型架構(例如,不同的神經網路架構)對於你的問題將有不同的偏差/方差量。

假設你正在應用深度學習,有l2正則化和dropout,有在驗證集上表現最好的正則化引數。如果你增加模型的大小,通常你的表現會保持不變或提公升,它不太可能明顯的變差。避免使用更大模型的唯一原因就是計算代價變大。

藍色的訓練錯誤曲線相對低,紅色驗證錯誤曲線遠高於藍色訓練錯誤。因此,偏差較小,但是方差較大。新增更多訓練資料可能有助於縮小驗證錯誤和訓練錯誤之間的差距。

這次,訓練錯誤較大,遠高於期望效能水平。驗證錯誤也比訓練錯誤大很多。因此,具有顯著的偏差和方差。你將不得不在演算法中去尋找同時減少偏差和方差的方法。

參考:

機器學習中的偏差和方差

數學解釋 偏差 描述的是 值 估計值 的期望與真實值之間的差距。偏差越大,越偏離真實資料,如下圖第二行所示。方差 描述的是 值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,資料的分布越分散,如下圖右列所示。機器學習中的偏差和方差 首先,假設你知道訓練集和測試集的關係。簡單來講是我們要在訓練...

機器學習中的偏差和方差

機器學習中誤差的 主要有兩個方面 bias 偏差 和variance 方差 只有找到誤差的 才能為下一步的模型優化提供方向。這裡以估計隨機變數 x 的均值和方差為例,進行分析。假設,對於隨機變數 x 1.1 首先考慮均值 我們在總體中取出 n 個樣本 對隨機變數 x 的均值作估計 m 1n xn f...

機器學習中偏差和方差的區別

l2與l1的區別在於,l1正則是拉普拉斯先驗,而l2正則則是高斯先驗。它們都是服從均值為0,協方差為1 當 0時,即沒有先驗 沒有正則項,則相當於先驗分布具有無窮大的協方差,那麼這個先驗約束則會非常弱,模型為了擬合所有的訓練集資料,引數w可以變得任意大從而使得模型不穩定,即方差大而偏差小。越大,標明...