數學解釋
偏差:描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實數據,如下圖第二行所示。
方差:描述的是預測值的變化范圍,離散程度,也就是離其期望值的距離。方差越大,數據的分布越分散,如下圖右列所示。
機器學習中的偏差和方差
首先,假設你知道訓練集和測試集的關系。簡單來講是我們要在訓練集上學習一個模型,然后拿到測試集去用,效果好不好要根據測試集的錯誤率來衡量。但很多時候,我們只能假設測試集和訓練集的是符合同一個數據分布的,但卻拿不到真正的測試數據。這時候怎么在只看到訓練錯誤率的情況下,去衡量測試錯誤率呢?
由於訓練樣本很少(至少不足夠多),所以通過訓練集得到的模型,總不是真正正確的。(就算在訓練集上正確率100%,也不能說明它刻畫了真實的數據分布,要知道刻畫真實的數據分布才是我們的目的,而不是只刻畫訓練集的有限的數據點)。而且,實際中,訓練樣本往往還有一定的噪音誤差,所以如果太追求在訓練集上的完美而采用一個很復雜的模型,會使得模型把訓練集里面的誤差都當成了真實的數據分布特征,從而得到錯誤的數據分布估計。這樣的話,到了真正的測試集上就錯的一塌糊塗了(這種現象叫過擬合)。但是也不能用太簡單的模型,否則在數據分布比較復雜的時候,模型就不足以刻畫數據分布了(體現為連在訓練集上的錯誤率都很高,這種現象叫欠擬合)。過擬合表明采用的模型比真實的數據分布更復雜,而欠擬合表示采用的模型比真實的數據分布要簡單。
在統計學習框架下,大家刻畫模型復雜度的時候,有這么個觀點,認為Error = Bias +Variance。這里的Error大概可以理解為模型的預測錯誤率,是有兩部分組成的,一部分是由於模型太簡單而帶來的估計不准確的部分——偏差(Bias),另一部分是由於模型太復雜而帶來的更大的變化空間和不確定性——方差(Variance)。
朴素貝葉斯的高偏差和低方差解釋
有了上面的分析就容易分析朴素貝葉斯了。它簡單的假設了各個數據之間是無關的,是一個被嚴重簡化了的模型。所以,對於這樣一個簡單模型,大部分場合都會Bias部分大於Variance部分,也就是說高偏差而低方差。
在實際中,為了讓Error盡量小,我們在選擇模型的時候需要平衡Bias和Variance所占的比例,也就是平衡over-fitting和under-fitting。
偏差、方差如何權衡
偏差(bias)和方差(variance)是統計學的概念,首先得明確,方差是多個模型間的比較,而非對一個模型而言的,對於單獨的一個模型,比如說:
這樣的一個給定了具體系數的估計函數,是不能說f(x)的方差是多少。而偏差可以是單個數據集中的,也可以是多個數據集中的,這個得看具體的定義。
方差和偏差一般來說,是從同一個數據集中,用科學的采樣方法得到幾個不同的子數據集,用這些子數據集得到的模型,就可以談他們的方差和偏差的情況了。方差和偏差的變化一般是和模型的復雜程度成正比的,就像本文一開始那四張小圖片一樣,當我們一味的追求模型精確匹配,則可能會導致同一組數據訓練出不同的模型,它們之間的差異非常大。這就叫做方差,不過他們的偏差就很小了,如下圖所示:
上圖的藍色和綠色的點是表示一個數據集中采樣得到的不同的子數據集,我們有兩個N次的曲線去擬合這些點集,則可以得到兩條曲線(藍色和深綠色),它們的差異就很大,但是他們本是由同一個數據集生成的,這個就是模型復雜造成的方差大。模型越復雜,偏差就越小,而模型越簡單,偏差就越大,方差和偏差是按下面的方式進行變化的:
當方差和偏差加起來最優的點,就是我們最佳的模型復雜度。
最后還是用數學的語言來描述一下偏差和方差:
E(L)是損失函數,h(x)表示真實值的平均,第一部分是與y(模型的估計函數)有關的,這個部分是由於我們選擇不同的估計函數(模型)帶來的差異,而第二部分是與y無關的,這個部分可以認為是模型的固有噪聲。
對於上面公式的第一部分,我們可以化成下面的形式:
前一半是表示偏差,而后一半表示方差,我們可以得出:損失函數=偏差^2+方差+固有噪音。
這是一個曲線擬合的問題,對同分布的不同的數據集進行了多次的曲線擬合,左邊表示方差,右邊表示偏差,綠色是真實值函數。ln lambda表示模型的復雜程度,這個值越小,表示模型的復雜程度越高,在第一行,大家的復雜度都很低的時候,方差是很小的,但是偏差同樣很小,但是到了最后一幅圖,我們可以得到,每個人的復雜程度都很高的情況下,不同的函數就有着天壤之別了,但是偏差就很小了。