貝葉斯線性回歸(Bayesian Linear Regression)
關於參數估計
在很多機器學習或數據挖掘問題中,我們所面對的只有數據,但數據中潛在的概率密度函數是不知道的,概率密度分布需要我們從數據中估計出來。想要確定數據對應的概率分布,就需要確定兩個東西:概率密度函數的形式和概率密度函數的參數。
有時可能知道的是概率密度函數的形式(高斯、瑞利等等),但是不知道具體的參數,例如均值或者方差;還有的時候可能不知道概率密度的類型,但是知道一些估計的參數,比如均值和方差。
關於上面提到的需要確定的兩個東西:概率密度函數的形式和參數,至少在機器學習的教課書上,我所看到的情況都是:給了一堆數據,然后假設其概率密度函數的形式為 高斯分布 ,或者是混合高斯分布,那么,剩下的事情就是對高斯分布的參數,μ 和 σ2 進行估計。所以,參數估計,便成了極其最重要的問題。
其實,常用的參數估計方法有:極大似然估計、最大后驗估計、貝葉斯估計、最大熵估計、混合模型估計。
極大似然估計
這里先以一個分類問題來說明一般參數估計面對的數據形式。考慮一個M類的問題,特征向量服從p(x|),i=1,2...,M 分布。這是現實情況中最常見的一種數據存在形式,數據集合X是由M個類別的數據子集,m=1,2...,M 組成的,第m類別的數據子集對應的概率密度函數是p(x|)。
前面已經介紹過了,想要確定數據的概率分布,需要知道概率密度函數的 形式 和 參數,這里首先做一個基本假設:概率分布的形式已知,比如假設每個類別的數據都滿足高斯分布,那么,似然函數就可以以參數 θi 的形式表示,如果是高斯分布,則參數為μi和,即θi=(μi)。
為了強調概率分布p(x|ωi)和θi有關,將對應的概率密度函數記為p(x|ωi;θi),這種記法屬於頻率概率學派的記法。這里的極大似然估計對應於一個類條件概率密度函數。
在概率論中一直有兩大學派,分別是頻率學派和貝葉斯學派。簡單點說,頻率學派認為,概率是頻率的極限,比如投硬幣,當實驗次數足夠大時,正面朝上的頻率可以認為是這枚硬幣正面朝上的概率,這個是頻率學派。但是,如果要預測一些未發生過的事情,比如,北極的冰山在2050年完全融化的概率,由於這個事情完全沒有發生過,所以無法用頻率來代替概率表示,只能研究過去幾十年,北極冰山融化的速率,並將其作為先驗條件,來預測北極的冰山在2050年完全融化的概率,這就是概率的貝葉斯學派。上面的問題,如果用貝葉斯學派的記法的話,是:p(x|ωi,θi)。這兩個學派適用的情況不太一樣,但是,在我目前所用到的概率論的知識中,貌似這兩個學派並沒有什么太大的區別,只是記法略有不同,稍微注意下即可。
從上面的描述中可以知道,利用每一個類Xi中已知的特征向量集合,可以估計出其對應的參數θi。進一步假設每一類中的數據不影響其他類別數據的參數估計,那么上面的M個類別的參數估計就可以用下面這個統一的模型,獨立的解決:
設x1,x2,...,xN 是從概率密度函數p(x;θ)中隨機抽取的樣本,那么就可以得到聯合概率密度函數 p(X;θ), 其中X={x1,x2,...,xN} 是樣本集合。假設不同的樣本之間具有統計獨立性,那么:

注意:這里的p(xk;θ) 本來的寫法是 p(x|ωi;θi) , 是一個類條件概率密度函數,只是因為這里是一個統一的模型,所以可以將wi省略。
需要重申一下,想要得到上面這個公式,是做了幾個基本的假設的,第一:假設M個類別的數據子集的概率密度函數形式一樣,只是參數的取值不同;第二:假設類別i中的數據和類別j中的數據是相互獨立抽樣的,即類別j的參數僅僅根據類別j的數據就可以估計出來,類別i的數據並不能影響類別j的參數估計,反之亦然;第三:每個類別內的樣本之間具有統計獨立性,即每個類別內的樣本之間是獨立同分布 (iid) 的。
此時,就可以使用最大似然估計(Maximum Likelihood,ML)來估計參數θ了:

為了得到最大值,必須滿足的必要條件是,似然函數對θ的梯度必須為0,即:

一般取對數形式:

需要注意:極大似然估計對應於似然函數的峰值
極大似然函數有兩個非常重要的性質:漸進無偏和漸進一致性,有了這兩個性質,使得極大似然估計成為了非常簡單而且實用的參數估計方法。這里假設θ0是密度函數p(x; θ)中未知參數的准確值。
漸進無偏
極大似然估計是漸進無偏的,即:

也就是說,這里認為估計值本身是一個隨機變量(因為不同的樣本集合X會得到不同的),那么其均值就是未知參數的真實值,這就是漸進無偏。
漸進一致
極大似然估計是漸進一致的,即:

這個公司還可以表示為:

對於一個估計器而言,一致性是非常重要的,因為存在滿足無偏性,但是不滿足一致性的情況,比如,在 θ0周圍震盪。如果不滿足一致性,那么就會出現很大的方差。
注意:以上兩個性質,都是在漸進的前提下(N→∞)才能討論的,即只有N足夠大時,上面兩個性質才能成立
貝葉斯估計
先驗概率,后驗概率
先驗概率(prior)與后驗概率(posterior)簡稱為先驗和后驗。一個先一個后,我們肯定是針對同一事物才有先后之分,如果針對兩個事物,先后就沒有意義了。這個共同的對象,就是我們的參數θ。后驗概率是指掌握了一定量的數據后我們的參數分布是怎么樣的,表位為p(θ|D);那先驗就是在沒有掌握數據后我們的參數怎么分布。
貝葉斯估計最重要的就是那個先驗的獲得。雖然這次的一組數據,比如說仍三次硬幣產生的序列(110)這樣分布的,但是其實我們根據我們的歷史來看,一枚硬幣正反面其實很有可能按照均勻分布來的,只不過試驗的次數太少了,所以要將以往的經驗考慮在里面。先驗很過時候完全是假設,然后去驗證有的數據是否吻合先驗猜想,所以這里的猜想很重要。
模型推導
根據條件概率公式有:

此時,這里面處理分母可以看作是一個歸一化因子外,其余均是概率分布的函數。也就是說,無法再像極大似然估計那樣將先驗概率(p(θ))看作一個常量。這時候就需要考慮用到我們的先驗概率了。我們這次把分母展開,根據全概率公式:
我們可以得到分布的展示式為:

當θ已知的情況下,p(D|θ)就是極大似然估計的聯合密度函數,即

將上述這兩個公式代入到條件概率公式可以得到

貝葉斯估計的增量學習
為了明確的表示樣本集合D中有n個樣本,這里采用記號:Dn={x1,x2,……,xn}。根據前一個公式,在n>1的情況下有:

可以很容易得到:

當沒有觀測樣本時,定義:

為參數θ的初始估計。然后讓樣本集合依次進入上述公式,就可以得到一系列的概率密度函數:

這一過程稱為參數估計貝葉斯遞歸法,也叫貝葉斯估計的增量學習。這是一個在線學習算法,它和隨機梯度下降法有很多相似之處。
其實做到這一步,我們會發現雖然解決了問題,但是又會帶來新的問題,因為在解決這一類貝葉斯估計的問題的時候,我們讓參數以某種概率密度函數分布,就會導致在計算過程中不可避免的高復雜度,人們為了計算上的方便,就提出不再是把所有的后驗概率p(θ|D)都找出來,而是仍然采用類似於極大似然估計的思想,來極大后驗概率(Maximum A Posterior),得到這種簡單有效的叫做MAP(前面英文的首字母)的算法。下面我們再一步步介紹一下MAP。
極大后驗概率(MAP)
雖然本節獨自成為一節,但是其實是隸屬於貝葉斯估計的,屬於貝葉斯估計里面的一個trick,放棄一點的准確性,來極大提升算法性能。所以,這個部分不能算是模型,只能算是算法。
MAP(Maximum A Posterior)的理論依據是絕大部分情況下,參數值最有可能出現在概率最大點附近。為了說清楚MAP的來龍去脈,本節將首先介紹如何利用貝葉斯估計的參數進行預測,然后分析直接使用之前得到的后驗概率有什么不好,最后介紹MAP算法做的工作。
使用貝葉斯估計的參數做預測
前一節中,我們通過貝葉斯估計得到了后驗概率p(θ|D)。那么這個后驗概率能用來做什么呢?當然,就比如擲硬幣,得到了數據D=(1,1,0),還想預測第四次得到的結果什么是什么怎么辦?我們當然就需要計算p(1|D)和p(0|D)看看誰大誰小,哪個更有可能發生。這里,為了泛化,我們將問題再次形式化一下為
已知數據D=(x1,x2,...,xn),預測新的數據x的值。
這個問題還有很多細節,比如先驗概率,后驗概率,數據分布等一些細節,因為前面已經介紹過了,這里為了突出重點,不再重復。在此需要關注的是,所謂預測新的數據的值,其實就是能夠在已知數據D的情況下,找到數據的數學期望。即求

也就是我們需要求p(x|D),這該怎么辦?其實這個式子比較迷惑人的點就在於,它內藏了一個參數,也就是x的分布其實與參數是有關的,但是又參數θ是服從某種概率分布的,要對參數所有可能的情況都考慮就得到了

這一式子。
接下來還時運用基本的條件概率公式:

對這一句公式的解釋就是,x和θ在已知數據D的條件下的概率,等於x在已知θ和數據D的條件下的概率乘θ在已知數據D的條件下的概率。為什么我要費這個心來說這個,一方面是我為了方便大家理解這個多維條件概率符號的含義,另一方面更重要的是右邊式子的第一項p(x|θ,D)可這樣

化簡。為什么?因為我們從數據里面得到的東西對一個新的數據來說,其實只是那些參數,所以對x而言,θ就是D,兩者是同一條件。
那么上式就變成了
p(x|θ)是已知的(例如在我們的問題里面可以是p(1|ρ)或者p(0|ρ));p(θ|D)也是已知的,我們在貝葉斯估計中已經求出來了。所以這個式子完全就是一個只含有x的函數,帶入期望公式完全可以計算出來數學期望。但是!這里面我忽略了一個事實,這里面存在什么困難呢?下面會幫助大家分析
貝葉斯估計中的一個困難
這里面的困難是參數是隨機分布的,我們需要考慮到每一個可能的參數情況然后積分,這種數學上的簡單形式,其實想要計算出來需要大量的運算。那我們不妨退而求其次,我找一個跟你差不多效果的后驗概率,然后就只計算這個后驗帶入計算。那么什么樣的后驗概率和對所有可能的θ積分情況差不多呢?想法就是,找一個θ能夠最大化后驗概率,怎么才能最大化后驗概率呢?
MAP算法
其實最大化后驗概率還是老一套,最大化式子
對式子進行觀察,其實分母只是一個歸一化的因子,並不是θ的函數。真正有效地其實就是最大化分子,於是使用:
這其實與極大似然估計形式上很相似,但是主要區別在於運用了一個先驗概率在這個極大化里面。參數都已經計算出來了,其他過程,其實還是按照極大似然來做就行了,不用再按照貝葉斯一樣對所有可能的參數情況都考慮在求積分了。
這里需要說明,雖然從公式上來看MAP=ML*p(θ),但是這兩種算法有本質的區別,ML將θ視為一個確定未知的值,而MAP將θ視為一個隨機變量。
在MAP中,p(θ)稱為θ的先驗,假設其服從均勻分布,即對於所有θ取值,p(θ)都是同一常量,則MAP和ML會得到同樣的結果。當然了,如果p(θ)的方差非常的小,也就是說,p(θ)是近似均勻分布的話,MAP和ML的結果自然也會非常的相似。
基於基函數的線性回歸
線性回歸模型的基本特征就是,模型是參數向量ω={w0,w1,w2,...,wn}的線性函數,這極大地限制了模型的適用性。這里使用基函數(basis function)對上面的線性模型進行拓展,即:線性回歸模型是一組輸入變量x的非線性基函數的線性組合,在數學上其形式如下:
這里ϕj(x)就是前面提到的基函數,總共的基函數的數目為M個,如果定義ϕ0(x)=1的話,那個上面的式子就可以簡單的表示為:
在"特征選擇和評估"中,實際拿到手的數據,由於各種原因,往往不能直接應用到機器學習算法中,需要對原始數據做一些預處理或者是特征提取的操作,而那些從原始輸入向量x中提取出來的特征, 就是這一個個的ϕj(x).
通過使用非線性的基函數,我們可以使得線性模型y(x,w)成為輸入向量x的非線性函數。
下面舉一些基於不同基函數的線性模型y(x,w)的例子:
-
ϕj (x)= xj
這里取M=n,那么就可以很容易的得到:
-
ϕj (x)= xj
這里就是典型的多項式曲線擬合(Polynomial Curve Fitting),其中M是輸入變量x的最高次數,同時也是模型的復雜度。多項式曲線擬合的一個缺陷就是這個模型是一個輸入變量的全局函數,這使得對輸入空間的一個區間的改動會影響到其他的區間,這個問題可以通過將輸入空間切分成不同的區域,對不同的區域各自在各自的區域中做曲線擬合來解決,這個方法就是經典的樣條函數(spline function)。
-
ϕj (x)=exp {−( x− μj )2/2 s 2}
這里μj表示的是該基函數在輸入空間中的位置,參數s控制的是基函數的空間尺度,這個基函數往往會被稱為高斯基函數(Gaussian basis function)。需要強調一點,這里的高斯函數並不是輸入空間的概率分布,其並沒有概率意義。由於每個基函數前面都有一個比例系數ωj,所以,對參數的歸一化(coefficient normalization)並不是必需的。
-
ϕj (x)=σ( x− μj/s )
這個基函數叫做sigmoid函數,其定義為:
與這個函數擁有相同效果的一個函數叫做tach函數,其定義為:
在神經網絡中,這兩個基函數有着非常廣泛的應用。其實從根本上來講,神經網絡的每一層,也是一些基函數的線性組合,神經網絡之所以能處理非線性問題,其根本也是由於采用了合適的非線性基函數。
線性回歸模型的概率解釋
關於線性模型可以通過其概率意義進行解釋,我個人也是最信服這種解釋方式。即:真實值tn,是輸入xn在模型y(x,w)上加入了一個噪聲產生的,其數學表達式如下:
而我們一般可以定義噪聲ϵ為高斯分布N(0,σ2),那么可以很容易得到,t是以y(x,w)為均值的高斯分布:
那么對於訓練數據{X,t}而言,可以使用極大似然估計來計算參數w和σ2:
取對數似然估計:
首先估計參數w,那么就可以略去和w無關的所有項。最后就是剩下下面這個式子:
這個就是一開始使用的平方誤差和(sum of the squares of the errors),這也解釋為什么用平方誤差和作為損失函數了,w的解在線性回歸那一節中已經有說明。
在估計出wML后,再來估計參數σ2,這里取β−1=σ2,則對數似然估計就變成了:
對其關於β求導,就可以得到:
所以可以得到:
現在參數wML和都已經估計出來了,那么我么就有了t關於x的概率分布模型:
有了這個模型,對於輸入x就可以很容易的得到對應的t,及其概率。
貝葉斯線性回歸
從普通最小二乘線性回歸問題說起
從更為宏觀的角度看,普通的線性回歸問題,從本質上來說就是以"殘差平方和"為統計量的一次多項式模型擬合問題,即
又稱為最小二乘法。非常簡單直接,甚至簡單粗暴的思路,在各類工程問題得到了廣泛地應用。數學上可以證明,最小二乘法的結果和均一正態誤差(即每一個y的測量值yi的的分布是以"真實的"為期望,統一地誤差為標准差的正態分布)情況下的極大似然擬合是一致的。在很多情況下,對於yi分布的假設往往是隱含的,不被顯示指出的。
然而,當上述對於yi的正態分布性質的隱含假設不再成立時,最小二乘盡管仍然可能是對於真實結果的一個足夠良好的逼近,但其可解釋性將會受到顯著的損害。同時,當實際情況中
yi顯著偏離正態分布,而在數據分析中又強加這一假定時,很可能會發現出現顯著偏離模型的野值(野值是相對於給定的yi的分布而言的,例如,如果yi服從的實際上是t分布,而強行假定它符合正態分布,就可能觀察到出現概率極小的測量值,因為t分布相對於正態分布有兩個很長的尾巴)。
對於這些顯著偏離模型的所謂野值,我們當然可以修正統計量,使得擬合結果更為穩健(即所謂穩健擬合),然而很多情況下這只是權宜之計。
此外,對於自變量和因變量都存在彌散的情況下,普通的最小二乘線性擬合盡管能稍作修改應用在此類問題上,但這種修改的可推廣性很差,難以應用到更復雜的非線性模型中。
貝葉斯線性回歸模型
貝葉斯線性回歸不僅可以解決極大似然估計中存在的過擬合的問題,而且,它對數據樣本的利用率是100%,僅僅使用訓練樣本就可以有效而准確的確定模型的復雜度。
線性回歸模型是一組輸入變量x的基函數的線性組合,在數學上其形式如下:
這里ϕj(x)就是前面提到的基函數,總共的基函數的數目為M個,如果定義ϕ0(x)=1的話,那個上面的式子就可以簡單的表示為:
則線性模型的概率表示如下:
假設參數w滿足高斯分布,這是一個先驗分布:
一般來說,我們稱p(w)為共軛先驗(conjugate prior)。這里t是x對應的目標輸出,β−1和α−1分別對應於樣本集合和w的高斯分布的方差,w是參數,
那么,線性模型的對數后驗概率函數:
式子的推導過程:
這里M+1是模型的復雜度,即多項式回歸的次數。那么根據貝葉斯規則:
這個叫做MAP極大后驗概率(maximum posterior)。對這個式子做對數似然,去除無關項之后,可以很容易得到下面這個結果:
這里可以看出,先驗概率對應的就是正則項,其正則參數為
可以假設,復雜的模型有較小的先驗概率,而相對簡單的模型有較大的先驗概率。
貝葉斯線性回歸的學習過程
根據前面關於貝葉斯估計的增量學習可以很容易得到下面這個式子,這個就是貝葉斯學習過程:在前一個訓練集合Dn−1的后驗概率p(θ|Dn−1)上,乘以新的測試樣本點xn的似然估計,得到新的集合Dn的后驗概率p(θ|Dn),這樣,相當於p(θ|Dn−1)成為了p(θ|Dn)的先驗概率分布:
有了上面的基礎知識,這里就着重的講下面這幅圖,這個圖是從RMPL第155頁截取下來的,這幅圖清晰的描述了貝葉斯線性回歸的學習過程,下面結合這幅圖,詳細的說明一下貝葉斯學習過程。
首先,說一下這里的模型:
第一行:
第一行是初始狀態,此時只有關於w的先驗信息,即:p(θ|D0)=p(θ)=N(w|0,α−1I)。先看中間這幅圖,這幅圖是關於w的先驗分布,由於我們假設w初始為高斯分布N(w|0,α−1I),故其圖形是以(0,0)為中心的圓組成的。由於此時還沒有樣本點進入,所以沒有關於樣本的似然估計,故第一行中左邊likelihood沒有圖。第一行右邊data space的那幅圖顯示的是從第二幅圖prior/posterior中隨機抽取一些點(w0,w1),並以(w0,w1)為參數,畫出來的直線,此時這些直線是隨機的。
第二行:
此時有了第一個樣本點x1,那么根據x1就可以得到第二行中,關於x1的似然估計,由於y=w0+w1x,似然估計的結果其實是這個式子的對偶式,即w1=1/x*y−1/x*w0。從第二行的最右邊data space中的圖中可以估計出,第一個樣本點的坐標大概為:(0.9,0.1),所以其第一幅圖中,似然估計的中心線的方程為:
近似為左邊那幅圖的畫法。由於第二行的先驗分布是第一行的后驗分布,也就是第一行的中間那幅圖。則,第二行的后驗分布的求法就是:將第二行的第左邊那幅圖和第一行的中間那幅圖相乘,就可以得到第二行中間那幅圖。第二行最右邊那幅圖就是從第二行中間那幅圖中隨機抽取一些點(w0,w1),並以(w0,w1)為參數,畫出來的直線。
第三行之后,就可以一次類推了。
上面就是貝葉斯學習過程的完整描述。
貝葉斯線性回歸的優缺點
優點:
1. 貝葉斯回歸對數據有自適應能力,可以重復的利用實驗數據,並防止過擬合
2. 貝葉斯回歸可以在估計過程中引入正則項
缺點:
1. 貝葉斯回歸的學習過程開銷太大
