浅谈贝叶斯
文章目錄
- 貝葉斯
- 1.貝葉斯決策論
- 2.樸素貝葉斯分類器
- 3.半樸素貝葉斯分類器
- 4.貝葉斯網絡
- 5.EM算法
貝葉斯
1.貝葉斯決策論
很多朋友都應該聽說過貝葉斯決策論,甚至知道其相關公式,但是對于正確理解貝葉斯決策論可能還有一些小問題,今天我們就來說一說這些問題。
1.1.先驗概率
以拋硬幣為例,假如有人告訴我們所拋硬幣正面朝上的概率p1=0.7,反面朝上的概率p2=0.3。在這種情況下,我們會傾向預測結果是正面,因為0.7>0.3,此時錯誤率就是1-0.7=0.3,也就是反面朝上的概率。
對于這種在觀測前我們就知道的概率p1和p2就是先驗概率(指的是在觀測前我們就已知的結果概率分布 p(y))。此時我們不需要考慮其他因素,例如硬幣的大小、質量等等。
1.2.后驗概率
但在實際情況中,往往有很多因素會對我們的預測結果造成不同程度的影響,而并不是像前面一樣不考慮其他因素的影響,所以就有了當……因素時,硬幣……的概率是多少,當硬幣正面朝上時用數學表達式就是p(y=1|x),當硬幣反面朝上時用數學表達式就是p(y=0|x)。這里的x指的是影響預測結果的因素。
ps:這里把正面朝上記為1,反面朝上記為0
這里p(y=1|x)、p(y=0|x)就是我們所說的后驗概率,指的是在觀測到x后我們對結果y的估計。和 p(y=1) 不同,它不是計算y=1的概率,而是計算僅當x被觀測到時y=1的概率
說了這么多那么先驗概率和后驗概率間有怎樣的聯系呢?
簡單來看,后驗概率可以被看做是對先驗概率的一種“更加細致的刻畫和更新“,因為此時我們觀測到了x,有了額外的信息。
因此后驗概率比先驗概率更有意義,因為我們引入了額外信息,所以預測結果會更加準確。而大部分機器學習模型嘗試得到的,就是后驗概率。
1.3.引入貝葉斯公式求解后驗概率
后驗概率這種表達叫做條件概率(conditional probability),一般寫作 p(A|B) ,即僅當B事件發生時A發生的的概率,假設p(A)和p(B)都大于0,則有:
于是我們前面的后驗概率就有:
舉個例子:
假設做了100次硬幣實驗,有大中小三種硬幣(x)。其中30次結果是反面(y=0),在反面時小硬幣出現6次。在70次正面向上的情況中(y=1)小硬幣出現了7次。我們此時假設x指的是小硬幣,觀察公式1&2:
分母p(x)代表觀測x為小硬幣出現的概率,那么p(x)=(6+7)/100=0.13
分子上的p(x|y=0)代表當結果是反面時,小硬幣的概率。有實驗結果可知:p(x|y=0)=6/30=0.2。而分子上的p(y=0)=30/100=0.3
于是我們就可以因此計算當觀測到小硬幣時反面的后驗概率:
p(y=0|x)=(0.2*0.3)/0.13=0.46
同理也可計算觀測到小硬幣時正面的后驗概率:
p(y=1|x)=(0.1*0.7)/0.13=0.54
貝葉斯決策的預測值是選取后驗概率最大的結果。在二分類問題中,也就是對比p(y=0|x) 和p(y=1|x)的結果。因為0.54>0.46,因此我們認為觀測到小硬幣時的結果是正面的概率更大。
1.4.貝葉斯決策論的不足
貝葉斯決策中假設比較強,實際操作起來并不容易:
很喜歡原作者的這一段話:
拋開統計學習不談,貝葉斯思想是對生活也很有指導意義,畢竟我們總是不斷利用先驗(過往的經驗)和觀測到現象(x)做出決策(試圖得到后驗概率)。那為什么懂了那么多道理(規則),卻依然過不好這一生呢(誤差太大)?根本原因在于別人的先驗和我們的可能差別太大了,最終導致了過高的方差以至于過擬合(笑)。
參考文章: 如何簡單理解貝葉斯決策理論(Bayes Decision Theory)?
2.樸素貝葉斯分類器
前面我們說過了如果用單純的貝葉斯公式去計算后驗概率,可能會碰到很多問題,而樸素樸素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。對于一些問題,樸素貝葉斯比直接使用貝葉斯公式更適用。
如何理解樸素貝葉斯算法的樸素一詞
下面給出一個例子:
現在給我們的問題是,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥,性格不好,身高矮,不上進,請你判斷一下女生是嫁還是不嫁?
由貝葉斯公式得:
我們需要求p(嫁|(不帥、性格不好、身高矮、不上進),這是我們不知道的,但是通過貝葉斯公式可以轉化為好求的三個量,p(不帥、性格不好、身高矮、不上進|嫁)、p(不帥、性格不好、身高矮、不上進)、p(嫁)
但是有這樣一個等式:
p(不帥、性格不好、身高矮、不上進|嫁) = p(不帥|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上進|嫁),那么我就要分別統計后面幾個概率,也就得到了左邊的概率!
為什么這個等式成立呢?學過概率論可能知道,這個等式成立的條件需要特征間相互獨立。
為什么要相互獨立呢
1.我們這么想,假如沒有這個假設,那么我們對右邊這些概率的估計其實是不可做的,這么說,我們這個例子有4個特征,其中帥包括{帥,不帥},性格包括{不好,好,爆好},身高包括{高,矮,中},上進包括{不上進,上進},那么四個特征的聯合概率分布總共是4維空間,總個數為233*2=36個。
24個,計算機掃描統計還可以,但是現實生活中,往往有非常多的特征,每一個特征的取值也是非常之多,那么通過統計來估計后面概率的值,變得幾乎不可做,這也是為什么需要假設特征之間獨立的原因。
2.假如我們沒有假設特征之間相互獨立,那么我們統計的時候,就需要在整個特征空間中去找,比如統計p(不帥、性格不好、身高矮、不上進|嫁),
我們就需要在嫁的條件下,去找四種特征全滿足分別是不帥,性格不好,身高矮,不上進的人的個數,這樣的話,由于數據的稀疏性,很容易統計到0的情況。 這樣是不合適的。
根據上面倆個原因,樸素貝葉斯法對條件概率分布做了條件獨立性的假設,由于這是一個較強的假設,樸素貝葉斯也由此得名!這一假設使得樸素貝葉斯法變得簡單,但有時會犧牲一定的分類準確率。
解釋了這些原因以后,我們就可以解決例題了。
由圖知:
p(嫁) = 6/12(總樣本數) = 1/2
p(不帥|嫁) = 3/6 = 1/2
p(性格不好|嫁)= 1/6
p(矮|嫁) = 1/6
p(不上進|嫁) = 1/6
p(不帥) = 4/12 = 1/3
p(性格不好) = 4/12 = 1/3
p(身高矮) = 7/12
p(不上進) = 4/12 = 1/3
代入公式:
同理得:
顯然,(1/61/211/2)>(1/21/61/61/6),所以最終答案就是不嫁
參考文章: 帶你理解樸素貝葉斯分類算法.
原文大佬講得非常詳細,大家可以去看看
3.半樸素貝葉斯分類器
半樸素貝葉斯分類器顧名思義是指適當考慮一部分屬性間的相互依賴關系,不同于樸素貝葉斯分類器各特征完全相互獨立,也不直接套用公式不考慮任何獨立性。
其中最常用的策略:假定每個屬性僅依賴于其他最多一個屬性,稱其依賴的這個屬性為其超父屬性,這種關系稱為:獨依賴估計(ODE)。
因此,對某個樣本x 的預測樸素貝葉斯公式就由如下:
修正為如下的半樸素貝葉斯分類器公式:
這里pai 為屬性xi所依賴的屬性
采用拉普拉斯修正后的先驗概率P?的計算公式:
基于類c和類外的依賴屬性pai的條件概率計算公式如下:
我們還是給出一個例子來理解半樸素貝葉斯分類器
則先驗概率 P(c),
P(c = 好果)= (4+1) / (10+2) = 5/12
P(c = 一般) = (6+1) / (10+2) = 7/12
帶有依賴屬性的類條件概率:
P(大小=大 | c=好果,形狀=圓形) = (2+1)/(3+2) = 3/5
P(顏色=青色 | c=好果) = (0+1)/(4+2) = 1/6
P(形狀=圓形 | c=好果,大小=大) = (2+1) / (3+2) = 3/5
P(大小=大 | c=一般,形狀=圓形) = (1+1) /( 2+2) = 2/4
P(顏色=青色 | c=一般) = (5+1)/(6+2) = 6/8
P(形狀=圓形 | c=一般,大小=大) = (1+1)/(3+2) = 2/5
因此:
P(c=好果) * P(大小=大 | c=好果,形狀=圓形) * P(顏色=青色 | c=好果) * P(形狀=圓形 | c=好果,大小=大)
= 5/12 * 3/5 * 1/6 * 3/5
= 0.025
P(c=一般) * P(大小=大 | c=一般,形狀=圓形) * P(顏色=紅色 | c=一般) * P(形狀=圓形 | c=一般,大小=大)
= 7/12 * 2/4 * 6/8 * 2/5
= 0.0875
因此,測試集上要預測的這個樣本和樸素貝葉斯分類器要預測的結果是相同的,都為一般的果子。
這種依賴屬性選取算法稱為超父ODE算法:SPODE。顯然,這個算法是每個屬性值只與其他唯一 一個有依賴關系。基于它之上,又提出另一種基于集成學習機制,更為強大的獨依賴分類器,AODE。
這個算法思路很簡單,就是在SPODE算法的基礎上在外面包一個循環吧,說的好聽點就是嘗試將每個屬性作為超父屬性來構建SPODE。
公式:
可能大家對上面的式子后加上一個數字有疑問,這里實際涉及到了拉普拉斯平滑,具體案例可以參考下面這位大佬的文章。
參考文章: 理解樸素貝葉斯分類的拉普拉斯平滑.
4.貝葉斯網絡
4.1.什么是貝葉斯網絡
貝葉斯網絡是一種模型,用來反應世界上一些事物的可能的情況的發生概率。
任何系統都能用貝葉斯網絡來模
貝葉斯網由一個有向無環圖(DAG)和條件概率表(CPT)組成
通過DAG和一組隨機變量表示它們的條件依賴關系。
學生示例的貝葉斯網圖
學生的成績不僅取決于他的智商,同時也取決于課程的難度,課程的難度
因此這個問題包括五個隨機變量,學生的智商(I)課程的難度(D),考試的成績(G),學生的SAT成績(S),推薦信的質量(L),G可以三個值,其余的都只能取兩個值,因此,聯合分布可以取值的總數為48
貝葉斯網可以用有向圖來表示,節點表示隨機變量,邊表示一個變量對另一個變量的直接影響。
課程的難度和學生的智商以獨立的方式確定,并且先于模型中的任何變量。學生的成績同時取決于這兩個變量。SAT只取決于學生的智商。
所以就有了上圖所示的關系
ps:模型中的每個變量都直接依賴于其在網絡中的父節點。
模型中每個變量X都關聯著一個條件概率分布,在已知其父節點的每種可能聯合賦值的條件下,用來具體指明X的值的一個分布。對沒有父節點的節點,條件概率分布以空變量集為條件。這個網絡結構和條件概率分布一起組成了貝葉斯網β
貝葉斯網絡的構造和學習
訓練貝葉斯網絡,如果不訓練,我們只能知道定性的網絡,而不能定量。實際上這一步也就 是要完成條件概率(CPT表)的構造,如果每個隨機變量的值都是可以直接觀察的,那么這一步的訓練就是直觀的。但通常貝葉斯網絡存在隱藏變量節點。
假設DAG已經構造了,我們要做的就是訓練這個DAG網絡,也就是說調整CPT的參數,最優化聯合條件概率。
梯度下降法。
因此,把這種方法應用在訓練貝葉斯網絡上。
?1.初始化隨機CPT表中的項目
?2.求Pw (D)在w初始值時的“梯度”。
?3.更新權重
?4.規格化權重
?5.繼續迭代直至結束。
轉載地址
5.EM算法
在介紹EM算法前我們來看一個問題
兩箱蘋果,其中從A箱中取到一個好蘋果的概率大于從B箱中取得,如果有一堆蘋果來自于A箱和B箱,但是不知道某個蘋果來自于A箱還是B箱,進行了5組實驗,每組抽取10個蘋果,每組抽到的好蘋果和一般蘋果都記錄到紙上,通過這些觀測數據,能得出從A或B箱中取到一個好蘋果的概率嗎?
這個預測,無形中增加了一個隱變量:蘋果出處這屬性吧(取值:A箱或B箱)。在這種情況下,介紹一種常用的估計類似參數隱變量的利器:Expectation-Maximization 算法(期望最大算法)。EM算法正如它的名字那樣每輪迭代經過兩步:E步和M步,迭代,直至收斂。
第一步是計算期望(E),利用對隱藏變量的現有估計值,計算其最大似然估計值;
第二步是最大化(M),最大化在E步上求得的最大似然值來計算參數的值。M步上找到的參數估計值被用于下一個E步計算中,這個過程不斷交替進行。
小例
舉個例子,拋硬幣,有兩個硬幣,但是兩個硬幣的材質不同導致其出現正反面的概率不一樣,目前我們只有一組觀測數據,要求出每一種硬幣投擲時正面向上的概率。總共投了五輪,每輪投擲五次,現在先考慮一種簡單的情況,假設我們知道這每一輪用的是哪一個硬幣去投擲的:
那么我們拿著這樣的一組數據,就可以很輕松的估計出A硬幣和B硬幣出現正面的概率,如下:
PA = (3+1+2)/ 15 = 0.4
PB= (2+3)/10 = 0.5
假如我們不知道用的哪一種硬幣,也就是說硬幣類型是一個隱變量,那怎么辦呢?
那么現在可以想一想,假設我們把每一次硬幣的種類設為z,則這五次實驗生成了一個5維的向量(z1,z2,z3,z4,z5),現在問題來了,如果我們要根據觀測結果去求出PA,PB,那么首先需要知道z,但是如果用最大似然估計去估計z,又要先求出PA,PB。這就產生了一個循環。那么這個時候EM算法的作用就體現出來了,EM算法的基本思想是:先初始化一個PA,PB,然后我們拿著這個初始化的PA,PB用最大似然概率估計出z,接下來有了z之后就用z去計算出在當前z的情況下的PA,PB是多少,然后不斷地重復這兩個步驟直到收斂。
有了這個思想之后現在用這個思想來做一下這個例子,假設初始狀態下PA=0.2, PB=0.7,然后我們根據這個概率去估計出z:
因為這里給的PA=0.2,即是說A類型硬幣正面朝上的概率是0.2,所以對應的反面朝上的概率就是0.8,拿第一組為例,就有0.20.20.20.80.8=0.00512,同理可求得為硬幣B的概率就是0.03087
因為0.03087>0.00512,故第一組預測的硬幣類型為硬幣B
故按照最大似然估計,z=(B,A,A,B,A),有了z之后我們反過來重新估計一下PA,PB:
PA = (2+1+2)/15 = 0.33
PB =(3+3)/10 = 0.6
可以看到PA,PB的值已經更新了,假設PA,PB的真實值0.4和0.5,那么你在不斷地重復這兩步你就會發現PA,PB在不斷地靠近這兩個真實值。
博主真心覺得這個例子對于理解EM算法非常有用,具體公式大家也可以去參考給出這個例子的大佬的博客。
參考文章: 【機器學習基礎】EM算法
總結
- 上一篇: 计算机装逼技巧,【干货来啦】电脑装逼技巧
- 下一篇: Simulink统一模块大小