過擬合與欠擬合的數學分析

來自專欄機器學習

上一篇文章我們通過帶入高斯分佈後最大化貝葉斯公式中的似然函數推出了最小二乘法,這一篇文章我們將解釋模型的過擬合與欠擬合,從而在下一篇文章通過最大化後驗估計(MAP)推出嶺回歸的公式,嶺回歸就是在最小二乘的基礎上加上了懲罰函數從而防止最小二乘法對訓練樣本過擬合的一種正則化的方法。


  1. 期望(Expectation)與方差(Variance):

(1) Expectation(期望):

對於一個函數 f(x) 在概率分佈 p(x) 下的平均值叫做期望,用 mathbb{E}[f] 表示。

  • 對於離散數據 (Discrete Value):

mathbb{E}[f]=sum_{x}P(x)f(x)

  • 對於連續數據(Continuous Value):

mathbb{E}[f]=int P(x)f(x)dx

  • 如果有 N 個數據,當 N
ightarrow infty 時 (離散數據):

mathbb{E}[f]approxfrac{1}{N}sum_{n=1}^{N}f(x_n)

  • 對於包含多個變數的函數 f(x,y) 來說 (連續數據):

mathbb{E}_x[f(x,y)]=int_xf(x,y)dp(x,y)

因為 P(x,y)=P(y|x)P(x) (乘法定則),

Rightarrow int_xf(x,y)dP(x,y)=int_xint_yf(x,y)dP(y|x)dP(x)

Rightarrowmathbb{E}_x[f(x,y)]=int_xint_yf(x,y)dP(y|x)dP(x)

  • 對於包含多個變數的函數 f(x,y) 來說(離散數據):

mathbb{E}_x[f(x,y)]=sum_xf(x,y)P(x,y)

Rightarrow sum_xf(x,y)P(x,y)=sum_x[sum_yf(x,y)P(y|x)]P(x)

Rightarrow mathbb{E}_x[f(x,y)]=sum_x[sum_yf(x,y)P(y|x)]P(x)

(2)Variance(方差):

一個函數 f(x) 的方差定義為:

var[f]=mathbb{E}[(f(x)-mathbb{E}[f(x)])^2]

並且方差滿足:

var[x]=mathbb{E}[x^2]-mathbb{E}^2[x]


2. 機器學習中Bayes Error(貝葉斯誤差), Bias(偏差), Variance(方差), 與 Generalization Error(泛化誤差):

(1)Generalization Error:

模型在真實情況下(即某種事件的所有的數據)所表現出的誤差就稱為泛化誤差,這個誤差能真正反映模型出預測的準確性。

(2) Bayes Error:

我們用訓練數據訓練模型時,希望最小化訓練誤差,而最小化的訓練誤差就是貝葉斯誤差。

  • 對於連續數據:

varepsilon(f)=mathbb{E}[(y-f(x))^2]

=int(y-f(x))^2dP(x,y)

因為對於某個數據來說它的誤差為 (y_i-f(x_i))^2 ,且這個數據出現的概率為 P(x,y) ,因此連續變數的誤差為: int(y-f(x))^2dP(x,y)

在監督學習問題中,我們需要找到一個函數 f ,使得 f(x)approx y ,因此:

f^*=argmin_f varepsilon(f)

=argmin_fint(y-f(x))^2dP(x,y)

=argmin_fint_xint_y(y-f(x))^2dP(y|x)dP(x)

因為 x 已知,

Rightarrow f^*=argmin_fint_y(y-f(x))^2dP(y|x)

Rightarrowf(x)=y 時, varepsilon(f) 最小,

Rightarrow f^*=int_yydP(y|x)

  • 對於離散數據來說:

varepsilon(f)=sum_xsum_y(y-f(x))^2dP(x,y)

=sum_x[sum_y(y-f(x))^2dP(y|x)]dP(x)

因為 x 已知,

Rightarrow varepsilon(f)=sum_y(y-f(x))^2dP(y|x)

Rightarrow f^*=argmin_fsum_y(y-f(x))^2dP(y|x)

Rightarrow f^*=sum_yyP(y|x)=mathbb{E}[y|x]

(3)Bias:

Bias=f^*(x)-mathbb{E}[A(x)]

由該公式可知,Bias描述了所有可能的訓練數據集在演算法 A 下訓練出所有模型輸出的平均值 mathbb{E}[A(x)] 與真是模型 f^*(x) 的差異。

(4)Variance:

Variance=mathbb{E}[(A(x)-mathbb{E}[A(x)])^2]

有公式可知,方差描述了對演算法 A 使用不同的訓練數據集訓練出來的模型的輸出值之間的差異。


3. Bayes Error(貝葉斯誤差), Bias(偏差), Variance(方差), 與 Generalization Error(泛化誤差)之間的關係推導:

對於某個演算法 A 的期望誤差為:

varepsilon(A(x))=mathbb{E}[(y-A(x))^2]

=mathbb{E}[(y^2-2yA(x)+A^2(x)]

=mathbb{E}[y^2]-2mathbb{E}[yA(x)]+mathbb{E}[A^2(x)]

因為 var[x]=mathbb{E}[x^2]-mathbb{E}^2[x]=mathbb{E}[(x-mathbb{E}[x])^2]

Rightarrow mathbb{E}[y^2]-2mathbb{E}[yA(x)]+mathbb{E}[A^2(x)]

=mathbb{E}^2[y]+var[y]-2mathbb{E}[y]mathbb{E}[A(x)]+var[A(x)]+mathbb{E}^2[A(x)]

=var[y]+var[A(x)]+(mathbb{E}[y]-mathbb{E}[A(x)])^2

=mathbb{E}[(y-mathbb{E}(y))^2]+mathbb{E}[(A(x)-mathbb{E}[A(x)])^2]+(f^*(x)-mathbb{E}[A(x)])^2

因為 mathbb{E}[y]=f^*(x)

=mathbb{E}[(y-mathbb{E}(f^*(x)))^2]+mathbb{E}[(A(x)-mathbb{E}[A(x)])^2]+(f^*(x)-mathbb{E}[A(x)])^2

=Bayes Error+Variance+Bia^2

Rightarrow Generalization Error = Bayes Error + Variance + Bias ^2

因此在模型擬合過程中,我們希望讓模型的泛化誤差最小從而得到在test dataset上誤差最小的模型,我們希望模型的variance和bias都很小,這樣模型的泛化誤差才會足夠的小。但是實際中我們並不能得到一個bias與variance都很小的模型,因為黨有很多個特徵時,模型會更好的擬合訓練樣本,則模型的bias會變小,而variance變大。當有很少的特徵時,模型不會很好的擬合訓練樣本,則variance會變小,bias會變大。因為在訓練過程中,bias與variance是互相衝突的。則我們只需要在訓練過程中讓模型的variance與bias都相對較小即可得到最好的模型。


4. 過擬合(Overfitting)與欠擬合(Underfitting):

(1)Overfitting:

如果我們在訓練集 S 上讓 varepsilon_{emp} 足夠小,則模型在訓練集的誤差基本為 0 ,那麼模型會非常的擬合訓練樣本,從而降低了模型的泛化能力,因為訓練樣本只是所有樣本的一部分,模型過度擬合訓練樣本就會在訓練數據集的誤差升高,則模型就出現了過擬合現象。因為模型過擬合於訓練樣本,則在不同訓練樣本訓練出的模型輸出值的差異就會增大,則variance增大,但模型在所有可能的訓練數據集輸出值與真實模型的輸出值的差異就會減小,則bias就會減小。

(2)Underfitting:

當模型並沒有對所有可能的訓練樣本擬合時,模型在不同的訓練數據集的輸出值基本相同,且輸出值與真實模型的輸出值差異都會很大且模型的輸出值基本都是錯誤的,則模型的bias就會很大,而variance就會很小。這是欠擬合的一種極端情況,即模型沒有被訓練樣本訓練。同樣的,如果訓練數據集的維數過小(即feature很少)或者模型的複雜程度不足以擬合訓練樣本,或者訓練樣本太少,也會出現欠擬合現象。

(3)總結:

因此我們在用訓練樣本對模型擬合的過程中希望找到一個variance與bias都相對較小的模型,如上圖,即讓模型的泛化誤差最小,而不是訓練誤差最小的模型,因為讓訓練誤差很小模型會過擬合,即在訓練模型的過程中不但讓訓練誤差足夠小,且模型需要有良好的泛化能力纔是最好的模型。


5. No Free Lunch Theorem(NFL) 沒有免費午餐定理:

在有限的搜索空間中,當且僅當我們指定了具體問題,我們才能說一個優化方法要優於另一種優化方法。即不存在一種演算法在所有問題上都是最優的。(即一種演算法只對某些問題是最優的,但對於另一類問題卻不是最優的)。比如,現在的深度學習網路在圖片分類,語音識別等領域取得了良好的結果,但是對於機票推薦等問題準確率卻低於隨機森林及xgboost的準確率。


6. Overfitting與Underfitting的解決:

(1) Underfitting:

欠擬合是因為模型對訓練樣本擬合不夠,則我們可以通過增加訓練樣本的維度,或者增加模型的複雜度來解決欠擬合問題。

(2) Overfitting:

過擬合是因為模型過得擬合訓練樣本導致模型的訓練誤差過小,而泛化誤差升高,因而我們可利用對訓練樣本降維或者增加訓練樣本的數量或者,或者使用正則化的方法對模型損失函數加上懲罰函數來防止模型的過擬合。或者在神經網路中,通過抑制某些神經元的傳導來防止模型的過擬合。

推薦閱讀:

查看原文 >>
相關文章