在機器學習中,過擬合和欠擬合都會使訓練好的機器學習模型在真實的數據中出現錯誤。我們可以將錯誤分為偏差(Bias)和方差(Variance)兩類。下面就來看看偏差和方差的定義、產生原因以及二者之間如何權衡。
偏差和方差的定義如下:
偏差(bias):偏差衡量了模型的預測值與實際值之間的偏離關係。例如某模型的準確度為96%,則說明是低偏差;反之,如果準確度只有70%,則說明是高偏差。
方差(variance):方差描述的是訓練數據在不同迭代階段的訓練模型中,預測值的變化波動情況(或稱之為離散情況)。從數學角度看,可以理解為每個預測值與預測均值差的平方和的再求平均數。通常在模型訓練中,初始階段模型複雜度不高,為低方差;隨著訓練量加大,模型逐步擬合訓練數據,複雜度開始變高,此時方差會逐漸變高。
也可以通過下面的圖片直觀理解偏差和方差:
如左下角的「打靶圖」,假設我們的目標是中心的紅點,所有的預測值都偏離了目標位置,這就是偏差;在右上角的「打靶圖」中,預測值圍繞著紅色中心周圍,沒有大的偏差,但是整體太分散了,不集中,這就是方差。以上四種情況:
低偏差,低方差:這是訓練的理想模型,此時藍色點集基本落在靶心範圍內,且數據離散程度小,基本在靶心範圍內;低偏差,高方差:這是深度學習面臨的最大問題,過擬合了。也就是模型太貼合訓練數據了,導致其泛化(或通用)能力差,若遇到測試集,則準確度下降的厲害;高偏差,高方差:這是訓練最糟糕的情況,準確度差,數據的離散程度也差。0x02 模型誤差模型誤差 = 偏差 + 方差 + 不可避免的誤差(噪音)。一般來說,隨著模型複雜度的增加,方差會逐漸增大,偏差會逐漸減小,見下圖:
一個模型有偏差,主要的原因可能是對問題本身的假設是不正確的,或者欠擬合。如:針對非線性的問題使用線性回歸;或者採用的特徵和問題完全沒有關係,如用學生姓名預測考試成績,就會導致高偏差。
方差表現為數據的一點點擾動就會較大地影響模型。即模型沒有完全學習到問題的本質,而學習到很多噪音。通常原因可能是使用的模型太複雜,如:使用高階多項式回歸,也就是過擬合。
有一些算法天生就是高方差的算法,如kNN算法。非參數學習算法通常都是高方差,因為不對數據進行任何假設。
有一些算法天生就是高偏差算法,如線性回歸。參數學習算法通常都是高偏差算法,因為對數據有跡象。
0x04 偏差與方差的權衡偏差和方差通常是矛盾的。降低偏差,會提高方差;降低方差,會提高偏差。
這就需要在偏差和方差之間保持一個平衡。
以多項式回歸模型為例,我們可以選擇不同的多項式的次數,來觀察多項式次數對模型偏差&方差的影響:
下面是多項式次數對訓練誤差/測試誤差的影響:
多項式次數模型複雜度訓練誤差測試誤差低低高高中中中低高高低高關於解決方差和偏差的問題中:
我們要知道偏差和方差是無法完全避免的,只能儘量減少其影響。
在避免偏差時,需儘量選擇正確的模型,一個非線性問題而我們一直用線性模型去解決,那無論如何,高偏差是無法避免的。有了正確的模型,我們還要慎重選擇數據集的大小,通常數據集越大越好,但大到數據集已經對整體所有數據有了一定的代表性後,再多的數據已經不能提升模型了,反而會帶來計算量的增加。而訓練數據太小一定是不好的,這會帶來過擬合,模型複雜度太高,方差很大,不同數據集訓練出來的模型變化非常大。最後,要選擇合適的模型複雜度,複雜度高的模型通常對訓練數據有很好的擬合能力。其實在機器學習領域,主要的挑戰來自方差。處理高方差的手段有:
0xFF 總結偏差衡量了模型的預測值與實際值之間的偏離關係,主要的原因可能是對問題本身的假設是不正確的,或者欠擬合。方差描述的是模型預測值的變化波動情況(或稱之為離散情況),模型沒有完全學習到問題的本質,通常原因可能是使用的模型太複雜,過擬合。
參數或者線性的算法一般是高偏差低方差;非參數或者非線性的算法一般是低偏差高方差。所以我們需要調整參數來去衡量方差和偏差的關係。
Long-press QR code to transfer me a reward
As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.