0.什么是貝葉斯?
貝葉斯公式是由一位數學家——托馬斯·貝葉斯提出的,也稱為貝葉斯法則, 他在許許多多的領域都有所應用,我們也在許多數學課程中學習過他。
這就是說,當你不能准確知悉一個事物的本質時,你可以依靠與事物特定本質相關的事件出現的多少去判斷其本質屬性的概率。 用數學語言表達就是:支持某項屬性的事件發生得愈多,則該屬性成立的可能性就愈大。
它告訴我們當我們要預測一個事物, 我們需要的是首先根據已有的經驗和知識推斷一個先驗概率, 然后在新證據不斷積累的情況下調整這個概率。整個通過積累證據來得到一個事件發生概率的過程我們稱為貝葉斯分析。
由於筆者水平有限,在此對貝葉斯的深度理解及其推導不做討論,http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 劉未鵬大神的這篇文章由淺入深的講述了貝葉斯的方法,非常值得閱讀。
1.貝葉斯決策論
先驗概率:通俗來說,對於某一個概率事件,我們都會有基於自己已有的知識,對於這個概率事件會分別以什么概率出現各種結果會有一個預先的估計,而這個估計並未考慮到任何相關因素。
后驗概率是指:當與事件相關的一些證據或背景也被考慮進來時的條件概率。
總的來說,先驗概率基於已有知識對隨機事件進行概率預估,但不考慮任何相關因素(P(y))。后驗概率基於已有知識對隨機事件進行概率預估,並考慮相關因素(P(y|x))。
$P(y|x)=\frac{P(y)P(x|y)}{P(x)}=\frac{P(x,y)}{P(x)}$
X是依賴特征向量(大小為n) 例: X=(下雨,刮風,氣溫高)
Y是類變量 例: y = 已知天氣情況X,是否能出門玩
- P(y|x):在x的條件下,隨機事件出現c情況的概率。(后驗概率)
- P(y):(不考慮相關因素)隨機事件出現c情況的概率。(先驗概率)
- P(x|y):在已知事件出現c情況的條件下,條件x出現的概率。(c的后驗概率)
- P(x):x出現的概率。(先驗概率)
2. 朴素貝葉斯分類器
2.0 前提
朴素貝葉斯算法的朴素之處在於:假設所有用於分類的特征都是相互獨立的。
- 例如溫度熱不熱跟濕度沒有任何關系,天氣是否下雨也不影響是否刮風。因此,這就是假設特征相互獨立。
- 每個特征都有相同的權重(或者是重要性)
- 只能應用在離散數據上
2.1 朴素貝葉斯分類器表達式
由數學推導得到分類模型:
$$h_{nb}(x)=argmax_{c\in y} P(c)\Pi_{i=1}^dP(x_i|c)$$
它的值就是貝葉斯分類器對於給定x的因素下,最可能出現的情況c。y是c的取值集合
3. 半朴素貝葉斯分類器
3.0 起始
由於朴素貝葉斯有着 “特征都是相互獨立” 的限制,但這個假設幾乎不存在。因為往往屬性之間都有所關聯。於是,人們進行改進之后產生了半朴素貝葉斯分類器(semi-naive Bayes classifiers)。
3.1 獨依賴估計(One-Dependent Estimator,簡稱ODE)
獨依賴估計半朴素貝葉斯分類器最常用的一種策略。獨依賴是假設每個屬性在類別之外最多依賴一個其他屬性,下圖公式中的paj為屬性xi所依賴的屬性,稱為xi的父屬性。
於是,問題的關鍵變成了如何確定每個屬性的父屬性。不同的做法產生了不同的獨依賴分類器。
- SPODE(Super-Parent ODE)這種方法假定所有的屬性都依賴於共同的一個父屬性。
- TAN(Tree Augmented naive Bayes)每個屬性依賴的另外的屬性由最大帶權生成樹來確定。
- AODE(Averaged ODE)是一種集成學習的方法,嘗試將每個屬性作為超父來構建SPODE,與隨機森林的方法有所相似。
4. 貝葉斯網
4.0 起始
貝葉斯網絡(Bayesian network),又稱信念網絡(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型, 比朴素貝葉斯更復雜,但由於貝葉斯網絡
4.1 有向無環圖(DAG)
下圖中這樣一個簡單的網絡對應着全概率公式,P(a,b,c) = P(a)P(b)P(c|a,b)

4.2 定義
一個貝葉斯網絡定義包括一個有向無環圖(DAG)和一個條件概率表集合。
下圖為一個Student模型對應的概率圖,作為參考

5. EM算法
5.0 定義
EM的計算方法中每一次迭代都分兩步,其中一個為期望步(E步),另一個為極大步(M步),所以算法被稱為EM算法(Expectation Maximization Algorithm)。
由於筆者理解EM略有困難,還需要學習,在這里參考知乎@文兄的解釋
借用我之前看到的一個例子來講一下EM算法吧。
現在一個班里有50個男生,50個女生,且男生站左,女生站右。我們假定男生的身高服從正態分布
,女生的身高則服從另一個正態分布:
。這時候我們可以用極大似然法(MLE),分別通過這50個男生和50個女生的樣本來估計這兩個正態分布的參數。
但現在我們讓情況復雜一點,就是這50個男生和50個女生混在一起了。我們擁有100個人的身高數據,卻不知道這100個人每一個是男生還是女生。
這時候情況就有點尷尬,因為通常來說,我們只有知道了精確的男女身高的正態分布參數我們才能知道每一個人更有可能是男生還是女生。但從另一方面去考量,我們只有知道了每個人是男生還是女生才能盡可能准確地估計男女各自身高的正態分布的參數。
這個時候有人就想到我們必須從某一點開始,並用迭代的辦法去解決這個問題:我們先設定男生身高和女生身高分布的幾個參數(初始值),然后根據這些參數去判斷每一個樣本(人)是男生還是女生,之后根據標注后的樣本再反過來重新估計參數。之后再多次重復這個過程,直至穩定。這個算法也就是EM算法。
5.1 實現流程
1、初始化分布參數
2、E-step:根據參數計算每個樣本屬於
的概率(也就是我們的Q)
3、M-step:根據Q,求出含有的似然函數的下界並最大化它,得到新的參數
4、不斷地迭代更新下去,直到收斂。