機器學習筆記:朴素貝葉斯及貝葉斯網絡
本文轉載於多篇博客:http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html 如有冒犯,請留言告知,謝謝!
-
朴素貝葉斯(Naïve Bayes)
-
貝葉斯基礎知識
眾所周知,朴素貝葉斯是一種簡單但是非常強大的線性分類器。它在垃圾郵件處理、文檔分類、疾病診斷(糖尿病診斷)等方面中都取得了很大的成功。它之所以稱為朴素,是因為它假設特征之間是相互獨立的。但是在現實生活中,這種假設基本上是不成立的。那么即使是在假設不成立的條件下,它依然表現的很好,尤其是在小規模樣本的情況下。但是如果每個特征之間有很強的關聯性和非線性的分類問題使用朴素貝葉斯會有很差的分類效果
貝葉斯公式:
①后驗概率(Posterior Probabilities)
是后驗概率,一般是我們求解的目標,在x發生的條件下Y發生的概率。
②先驗概率(Prior Probabilities)
、
是先驗概率,根據以往經驗和分析得到的概率,統計得到
③似然概率(也叫條件概率)
一般是通過歷史數據統計得到
④條件概率的公式:
即事件A和事件B同時發生的概率等於在A發生的條件下B發生的概率乘以A的概率。
⑤全概率公式:
假設B是由相互獨立的事件組成的概率空間
,則
可以用全概率公式展開:
-
⑥舉例:
某個醫院早上收了六個門診病人,如下表:
症狀 職業 疾病
打噴嚏 護士 感冒
打噴嚏 農夫 過敏
頭痛 建築工人 腦震盪
頭痛 建築工人 感冒
打噴嚏 教師 感冒
頭痛 教師 腦震盪現在又來了第七個病人,是一個打噴嚏的建築工人。請問他患上感冒的概率有多大?
根據貝葉斯定理:
P(A|B) = P(B|A) P(A) / P(B)
可得
P(感冒|打噴嚏x建築工人)
= P(打噴嚏x建築工人|感冒) x P(感冒)
/ P(打噴嚏x建築工人)假定"打噴嚏"和"建築工人"這兩個特征是獨立的,因此,上面的等式就變成了
P(感冒|打噴嚏x建築工人)
= P(打噴嚏|感冒) x P(建築工人|感冒) x P(感冒)
/ P(打噴嚏) x P(建築工人)這是可以計算的。
P(感冒|打噴嚏x建築工人)
= 0.66 x 0.33 x 0.5 / 0.5 x 0.33
= 0.66因此,這個打噴嚏的建築工人,有66%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震盪的概率(這里這兩個概率都為0值)。比較這幾個概率,就可以知道他最可能得什么病。
其實這個例子已經開始分類了,是否患病,患哪種病,只不過都是概率的形式來描述
-
模型概述
朴素貝葉斯方法,是指:
朴素:特征條件獨立
貝葉斯:基於貝葉斯定理
根據貝葉斯定理,對於一個分類問題,給定樣本特征x,樣本屬於類別y的概率是
在這里,x是一個特征向量,將x維度設為M,因為朴素的假設,即特征條件獨立,根據全概率公式展開,公式(1)可表達為:
這里,只要分別估計出,特征
在每一類的條件概率就可以了,類別y的先驗概率可以通過訓練集算出,同樣通過訓練集上的統計,可以得出對應每一類上的,條件獨立的特征對應的條件概率向量。
-
學習貝葉斯模型
訓練集
包含N條訓練數據,其中
是M維向量,
屬於K類中的一類。
❶學習1: 統計訓練集中
的數目,然后除以總的訓練樣本數目得到
的概率
❷學習2:
經過上述步驟,我們就得到了模型的基本概率,也就完成了學習的任務。
-
使用貝葉斯模型進行分類
-
拉普拉斯平滑
-
朴素貝葉斯實現文本分類常見模型
❶文本分類問題
在文本分類中,假設我們有一個文檔d∈X,X是文檔向量空間(document space),和一個固定的類集合C={c1,c2,…,cj},類別又稱為標簽。顯然,文檔向量空間是一個高維度空間。我們把一堆打了標簽的文檔集合& lt;d,c>作為訓練樣本,∈X×C。例如:
={Beijing joins the World Trade Organization, China}
對於這個只有一句話的文檔,我們把它歸類到 China,即打上china標簽。
我們期望用某種訓練算法,訓練出一個函數γ,能夠將文檔映射到某一個類別:
γ:X→C
這種類型的學習方法叫做有監督學習,因為事先有一個監督者(我們事先給出了一堆打好標簽的文檔)像個老師一樣監督着整個學習過程。
朴素貝葉斯分類器是一種有監督學習,常見有兩種模型,多項式模型(multinomial model)和伯努利模型(Bernoulli model)。
❷多項式模型
基本原理:在多項式模型中,設文檔
,整個文檔的單詞順序就是d,
是該文檔中出現過的單詞,允許重復,c為文檔的種類。則先驗概率
V是訓練樣本的單詞表(即抽取單詞,單詞出現多次,只算一個),|V|則表示訓練樣本包含多少種單詞。在這里,m=|V|, p=1/|V|。
P(tk|c)可以看作是單詞tk在證明d屬於類c上提供了多大的證據,而P(c)則可以認為是類別c在整體上占多大比例(有多大可能性)。
-
-
貝葉斯網絡
-
貝葉斯定理:
-
貝葉斯網絡
-
貝葉斯網絡的定義
貝葉斯網絡(Bayesian network),又稱信念網絡(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型,於1985年由Judea Pearl首先提出,它是一種模擬人類推理過程中因果關系的不確定性處理模型,其網絡拓撲結構是一個有向無環圖(DAG)。
貝葉斯網絡的有向無環圖中的節點表示隨機變量
,他們可以是可觀察到的變量,或隱變量、未知參數等。認為有因果關系(或非條件獨立)的變量或命題則用箭頭來連接。若兩個節點間以一個單箭頭連接在一起,表示其中一個節點是"因(parents)",另一個是"果(children)",兩節點就會產生一個條件概率值。
總而言之,連接兩個節點的箭頭代表此兩個隨機變量是具有因果關系,或非條件獨立。
例如,假設節點E直接影響到節點H,即E->H,則用從E指向H的箭頭建立節點E到節點H的有向弧(E,H),權值(即連接強度)用條件概率
來表示,如下圖所示:
簡言之,把某個研究系統中涉及的隨機變量,根據是否條件獨立繪制在一個有向圖中,就形成了貝葉斯網絡。其主要用來描述隨機變量之間的條件依賴,用圈表示隨機變量(random variables),用箭頭表示條件依賴(conditional dependencies)。
令G=(I,E)表示一個有向無環圖(DAG),其中I代表圖形中所有的節點的集合,而E代表有向連接線段的集合,且令
為其有向無環圖中的某一節點i所代表的隨機變量,若節點X的聯合概率可以表示成:
則稱X為相對於一有向無環圖G的貝葉斯網絡,其中
表示節點i之"因
,或稱
是i的父母parents。此外,對於任意的隨機變量,其聯合概率可由各自的局部條件概率分布相乘而得出:
如下圖,便是一個簡單的貝葉斯網絡:
由上圖
,
等於所有隨機變量
的條件概率的乘積,即上邊所說,對於任意的隨機變量,其聯合概率可由各自的局部條件概率分布相乘而得出。上式
,其中
的條件概率為
,
的條件概率為
,
的條件概率為
。
-
貝葉斯網絡的3中結構形式
給定如下圖的一個貝葉斯網絡:
從圖中可以比較直觀的看出:
❶
的聯合分布為:
❷
相互獨立(對應head-to-head),無相互依賴關系
❸
在
給定的條件下,是相互獨立的。
形式1:head-to-head
貝葉斯網絡的第一種結構形式如下圖所示:
所以有
,化簡后可得:
所以最后可得:
即在c未知得條件下,a,b被阻斷(blocked),是獨立得,稱之為head-to-head條件獨立。
形式2:tail-to-tail
貝葉斯網絡得第二種結構如下圖所示:
①在c未知得條件下,有:
此時,無法得出
,即c未知時,a,b不獨立。
②在c已知得條件下,有:
,然后將
帶入式子中,得到
,即c已知時,a,b獨立。
所以在c給定得條件下,a,b時被阻斷(blocked)的,是獨立的,稱之為tail-to-tail條件獨立。
形式3:head-to-tail
貝葉斯網絡的第三種結構形式如下圖所示:
還是分c未知和c已知兩種情況:
①、c未知時,有:
,但無法推出
,即c未知時,a,b不獨立
②c已知時,有:
所以在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為head-to-tail條件獨立。
實心圓圈表示已知
根據之前對head-to-tail的講解,我們已經知道,在xi給定的條件下,xi+1的分布和x1,x2…xi-1條件獨立。意味着啥呢?意味着:xi+1的分布狀態只和xi有關,和其他變量條件獨立。通俗點說,當前狀態只跟上一狀態有關,跟上上或上上之前的狀態無關。這種順次演變的隨機過程,就叫做馬爾科夫鏈(Markov chain)。且有:
接着,將上述結點推廣到結點集,則是:對於任意的結點集A,B,C,考察所有通過A中任意結點到B中任意結點的路徑,若要求A,B條件獨立,則需要所有的路徑都被阻斷(blocked),即滿足下列兩個前提之一:
A和B的"head-to-tail型"和"tail-to-tail型"路徑都通過C;
A和B的"head-to-head型"路徑不通過C以及C的子孫;
-
貝葉斯網絡實例:
-
-