1. 程式人生 > >【機器學習】貝葉斯線性迴歸(最大後驗估計+高斯先驗)

【機器學習】貝葉斯線性迴歸(最大後驗估計+高斯先驗)

引言

如果要將極大似然估計應用到線性迴歸模型中,模型的複雜度會被兩個因素所控制:基函式的數目(\theta的維數)樣本的數目。儘管為對數極大似然估計加上一個正則項(或者是引數的先驗分佈),在一定程度上可以限制模型的複雜度,防止過擬合,但基函式的選擇對模型的效能仍然起著決定性的作用。

上面說了那麼大一段,就是想說明一個問題:由於極大似然估計總是會使得模型過於的複雜以至於產生過擬合的現象,所以單純的使用極大似然估計並不是特別的有效。

當然,交叉驗證是一種有效的限制模型複雜度,防止過擬合的方法,但是交叉驗證需要將資料分為訓練集合測試集,對資料樣本的浪費也是非常的嚴重的。

貝葉斯迴歸

基於上面的討論,這裡就可以引出本文的核心內容:貝葉斯線性迴歸

  1. 貝葉斯線性迴歸不僅可以解決極大似然估計中存在的過擬合的問題。
  2. 它對資料樣本的利用率是100%,僅僅使用訓練樣本就可以有效而準確的確定模型的複雜度。

在極大似然估計線性迴歸中我們把引數w看成是一個未知的固定值,而貝葉斯學派則把w看成是一個隨機變數。 

線性迴歸模型是一組輸入變數x的基函式的線性組合,在數學上其形式如下: 

這裡\phi_{j}(x)就是前面提到的基函式,總共的基函式的數目為M個,如果定義\phi_{0}(x)=1的話,那個上面的式子就可以簡單的表示為: 

以下tx對應的目標輸出,即樣本為(x,t),並且假設樣本集合滿足正態分佈,引數w也滿足正態分佈,\alpha^{-1}\beta^{-1}分別對應於w與樣本集合的高斯分佈方差。

則引數\ww滿足以下分佈:

線性模型的概率表示如下:

引數有點多。p(t|x,w,\beta)表示樣本(x,t)的輸出t關於輸入特徵x、模型引數w以及樣本分佈方差\beta的概率密度函式。其服從於N(t|y(x,w),\beta^{-1}I)正態分佈,這個正態分佈線上性迴歸的概率解釋中出現過,表示均值為y(x,w),方差為\beta^{-1}I的正態分佈(I表示單位矩陣),可以通過殘差的獨立正態分佈性質推導得到。

一般來說,我們稱p(w)為共軛先驗(conjugate prior)。

貝葉斯統計中,如果後驗分佈先驗分佈屬於同類,則先驗分佈與後驗分佈被稱為共軛分佈,而先驗分佈被稱為似然函式的共軛先驗

共軛先驗的好處主要在於代數上的方便性,可以直接給出後驗分佈的封閉形式,否則的話只能數值計算。共軛先驗也有助於獲得關於似然函式如何更新先驗分佈的直觀印象。

那麼,線性模型的後驗概率函式:L(\theta)=L(w)

下面筆誤。

且注意,到這一步之後與最大似然估計其實一模一樣了,最大後驗估計與最大似然估計的唯一區別就在於是否加上先驗也就是這裡的p(w),乘上p(w)之後不必再糾結在p(t_i|x_i,w,\beta^{-1}I)w為隨機變數,此時的w完全可以理解為MLE中的待估引數,在先驗p(w)給定下是已經確定了的,只是我們還不知道。

對數後驗概率函式為:

最後我們可以化為:

這不就是加了L2正則的loss function嗎,於是我們就利用貝葉斯估計準確來講是最大後驗估計加上高斯先驗推匯出了帶有L2正則的線性迴歸!

這裡可以看出,先驗概率對應的就是正則項,其正則引數為\lambda=\alpha/\beta

可以假設,複雜的模型有較小的先驗概率,而相對簡單的模型有較大的先驗概率。

貝葉斯線性迴歸的學習過程

根據前面關於貝葉斯估計的增量學習可以很容易得到下面這個式子,這個就是貝葉斯學習過程:在前一個訓練集合D^{n-1}的後驗概率p(\theta |D^{n-1})上,乘以新的測試樣本點x_n的似然估計,得到新的集合D^n的後驗概率p(\theta|D^n),這樣,相當於p(\theta |D^{n-1})成為了p(\theta|D^n)的先驗概率分佈:

有了上面的基礎知識,這裡就著重的講下面這幅圖,這個圖是從RMPL第155頁擷取下來的,這幅圖清晰的描述了貝葉斯線性迴歸的學習過程,下面結合這幅圖,詳細的說明一下貝葉斯學習過程。

image_1almvfrg71b51132bg166ndsbs9.png-442.7kB

首先,說一下這裡的模型:

第一行: 
第一行是初始狀態,此時只有關於w的先驗資訊,即:p(\theta|D^0)=p(\theta)=N(w|0,\alpha^{-1}I)。先看中間這幅圖,這幅圖是關於w的先驗分佈,由於我們假設w初始為高斯分佈N(w|0,\alpha^{-1}I),故其圖形是以(0,0)為中心的圓組成的。由於此時還沒有樣本點進入,所以沒有關於樣本的似然估計,故第一行中左邊likelihood沒有圖。第一行右邊data space的那幅圖顯示的是從第二幅圖prior/posterior中隨機抽取一些點(w_0,w_1),並以(w_0,w_1)為引數,畫出來的直線,此時這些直線是隨機的。

第二行: 
此時有了第一個樣本點x_1,那麼根據x_1就可以得到第二行中,關於x_1的似然估計,由於y=w_0+w_1x,似然估計的結果其實是這個式子的對偶式(單個樣本hypothesis就是結果,完全擬合),即w_1=\frac{1}{x}y-\frac{1}{x}w_0。從第二行的最右邊data space中的圖中可以估計出,第一個樣本點的座標大概為:(0.9,0.1),所以其第一幅圖中,似然估計的中心線的方程為:

近似為左邊那幅圖的畫法。由於第二行的先驗分佈是第一行的後驗分佈,也就是第一行的中間那幅圖。則,第二行的後驗分佈的求法就是:將第二行的第左邊那幅圖和第一行的中間那幅圖相乘,就可以得到第二行中間那幅圖。第二行最右邊那幅圖就是從第二行中間那幅圖中隨機抽取一些點(w_0,w_1),並以(w_0,w_1)為引數,畫出來的直線。

第三行之後,就可以一次類推了。

上面就是貝葉斯學習過程的完整描述。

貝葉斯迴歸的優缺點

優點: 

  1. 貝葉斯迴歸對資料有自適應能力,可以重複的利用實驗資料,並防止過擬合 
  2. 貝葉斯迴歸可以在估計過程中引入正則項 
  3. 先驗分佈:如果具備領域知識或者對於模型引數的猜測,我們可以在模型中將它們包含進來,而不是像線上性迴歸的頻率方法那樣:假設所有關於引數的所需資訊都來自於資料。如果事先沒有沒有任何的預估,我們可以為引數使用無資訊先驗,比如一個正態分佈。(例如高斯先驗引入了L2正則化)
  4. 後驗分佈:使用貝葉斯線性迴歸的結果是一個基於訓練資料和先驗概率的模型引數的分佈。這使得我們能夠量化對模型的不確定性:如果我們擁有較少的資料點,後驗分佈將更加分散。

缺點: 

  1. 貝葉斯迴歸的學習過程開銷太大

參考文章:

貝葉斯迴歸