文章原創(chuàng),最近更新:2018-06-23
1.分類問題綜述
2.概率基礎(chǔ)
3.樸素貝葉斯分類
4.貝葉斯推斷
5.案例
參考鏈接:
1、 CH10 分類|10.1樸素貝葉斯《白話大數(shù)據(jù)與機器學(xué)習(xí)》-學(xué)習(xí)筆記
2、帶你理解樸素貝葉斯分類算法
3、機器學(xué)習(xí)(10)之趣味案例理解樸素貝葉斯
4、樸素貝葉斯分類和預(yù)測算法的原理及實現(xiàn)
前言:通過網(wǎng)上找的文章,通過歸納總結(jié)具體如下:
1.分類問題綜述
貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。而樸素樸素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。
分類和回歸看上去有一些相似之處,從直觀感覺上去認(rèn)識,可以這么感覺:因變量是定量型的歸納學(xué)習(xí)稱為回歸,或者說是連續(xù)變量預(yù)測;因變量是定性型的歸納學(xué)習(xí)稱為分類,或者說是離散變量預(yù)測。
從實時收集的路況來預(yù)測某地段目前的行車速度為多少米每秒是典型的回歸歸納過程,而預(yù)測這個路段的行車狀態(tài)是“暢通”、“繁忙”、“擁堵”則是典型的分類歸納過程。
分類算法是一大類算法,都是用來解決這種離散變量預(yù)測的,舉例如下。
在銀行的信用卡審批這一環(huán)節(jié)會用到分類的例子,應(yīng)不應(yīng)該給一個人辦理信用卡呢?應(yīng)該給一個申請人分配多少金額呢?尤其在有大量的申請人及調(diào)額申請的情況下。在這里會比較密集地用到分類算法。在此只示意性地進行說明,畢竟這個過程非常復(fù)雜,而且不同銀行的計算原則也不盡相同。
既然是貝葉斯分類算法,那么分類的數(shù)學(xué)描述又是什么呢?從數(shù)學(xué)角度來說,分類問題可做如下定義:
已知集合C=y1,y2,……,yn 和I=x1,x2,……,xn確定映射規(guī)則y=f(),使得任意xi∈I有且僅有一個yi∈C,使得yi∈f(xi)成立。
其中C叫做類別集合,其中每一個元素是一個類別,而I叫做項集合(特征集合),其中每一個元素是一個待分類項,f叫做分類器。分類算法的任務(wù)就是構(gòu)造分類器f。
分類算法的內(nèi)容是要求給定特征,讓我們得出類別,這也是所有分類問題的關(guān)鍵。那么如何由指定特征,得到我們最終的類別,也是我們下面要講的,每一個不同的分類算法,對應(yīng)著不同的核心思想。
2.概率基礎(chǔ)
下面我們通過維恩圖來說明貝葉斯公式中常見的幾個概率。
維恩圖中:
- S:S是樣本空間,是所有可能事件的總和。
- P(A):是樣本空間S中A事件發(fā)生的概率,維恩圖中綠色的部分。
- P(B):是樣本空間S中B事件發(fā)生的概率,維恩圖中藍(lán)色的部分。
- P(A∩B):是樣本空間S中A事件和B事件同時發(fā)生的概率,也就是A和B相交的區(qū)域。
- P(A|B):是條件概率,是B事件已經(jīng)發(fā)生時A事件發(fā)生的概率。
對于條件概率,還有一種更清晰的表示方式叫概率樹。下面的概率樹表示了條件概率P(A|B)。與維恩圖中的P(A∩B)相比,可以發(fā)現(xiàn)兩者明顯的區(qū)別。
- P(A∩B)是事件A和事件B同時發(fā)現(xiàn)的情況,因此是兩者相交區(qū)域的概率。
-
事件概率P(A|B)是事件B發(fā)生時事件A發(fā)生的概率。這里有一個先決條件就是P(B)要首先發(fā)生。
因為條件概率P(A|B)是在事件B已經(jīng)發(fā)生的情況下,事件A發(fā)生的概率,因此P(A|B)可以表示為事件A與B的交集與事件B的比率。
該公式還可以轉(zhuǎn)換為以下形式,以便我們下面進行貝葉斯公式計算時使用。
3.樸素貝葉斯分類
那么既然是樸素貝葉斯分類算法,它的核心算法又是什么呢?是下面這個貝葉斯公式:
葉斯算法通過已知的P(A|B),P(A),和P(B)三個概率計算P(B|A)發(fā)生的概率。假設(shè)我們現(xiàn)在已知P(A|B),P(A)和P(B)三個概率,如何計算P(B|A)呢?通過前面的概率樹及P(A|B)的概率可知,P(B|A)的概率是在事件A發(fā)生的前提下事件B發(fā)生的概率,因此P(B|A)可以表示為事件B與事件A的交集與事件A的比率。
該公式同樣可以轉(zhuǎn)化為以下形式:
到這一步,我們只需要證明P(A∩B)= P(B∩A)就可以證明在已知P(A|B)的情況下可以通過計算獲得P(B|A)的概率。我們將概率樹轉(zhuǎn)化為下面的概率表,分別列出P(A|B),P(B|A),P(A),和P(B)的概率。
通過計算可以證明P(A|B)*P(B)和P(B|A)*P(A)最后求得的結(jié)果是概率表中的同一個區(qū)域的值,因此:
我們通過P(A∩B)=P(B∩A)證明了在已知P(A|B),P(A),和P(B)三個概率的情況下可以計算出P(B|A)發(fā)生的概率。整個推導(dǎo)和計算過程可以說得通。但從統(tǒng)計學(xué)的角度來看,P(A|B)和P(B|A)兩個條件概率之間存在怎樣的關(guān)系呢?我們從貝葉斯推斷里可以找到答案。
4.貝葉斯推斷
貝葉斯推斷可以說明貝葉斯定理中兩個條件概率之間的關(guān)系。換句話說就是我們?yōu)槭裁纯梢酝ㄟ^P(A|B),P(A),和P(B)三個概率計算出P(B|A)發(fā)生的概率。
在貝葉斯推斷中,每一種概率都有一個特定的名字:
- P(B)是"先驗概率"(Prior probability)。
- P(A)是"先驗概率"(Prior probability),也作標(biāo)準(zhǔn)化常量(normalized constant)。
- P(A|B)是已知B發(fā)生后A的條件概率,叫做似然函數(shù)(likelihood)。
- P(B|A)是已知A發(fā)生后B的條件概率,是我們要求的值,叫做后驗概率。
- P(A|B)/P(A)是調(diào)整因子,也被稱作標(biāo)準(zhǔn)似然(standardisedlikelihood)。
貝葉斯推斷中有幾個關(guān)鍵的概念需要說明下:
- 第一個是先驗概率,先驗概率是指我們主觀通過事件發(fā)生次數(shù)對概率的判斷。
- 第二個是似然函數(shù),似然函數(shù)是對某件事發(fā)生可能性的判斷,與條件概率正好相反。通過事件已經(jīng)發(fā)生的概率推算事件可能性的概率。
維基百科中對似然函數(shù)與概率的解釋:
1)概率:是給定某一參數(shù)值,求某一結(jié)果的可能性。
例如,拋一枚勻質(zhì)硬幣,拋10次,6次正面向上的可能性多大?
2)似然函數(shù):給定某一結(jié)果,求某一參數(shù)值的可能性。
例如,拋一枚硬幣,拋10次,結(jié)果是6次正面向上,勻質(zhì)的可能性多大?
- 第三個是調(diào)整因子:調(diào)整因子是似然函數(shù)與先驗概率的比值,這個比值相當(dāng)于一個權(quán)重,用來調(diào)整后驗概率的值,使后驗概率更接近真實概率。調(diào)整因子有三種情況,大于1,等于1和小于1。
- 調(diào)整因子P(A|B)/P(A)>1:說明事件可能發(fā)生的概率要大于事件已經(jīng)發(fā)生次數(shù)的概率。
- 調(diào)整因子P(A|B)/P(A)=1:說明事件可能發(fā)生的概率與事件已經(jīng)發(fā)生次數(shù)的概率相等。
- 調(diào)整因子P(A|B)/P(A)<1:說明事件可能發(fā)生的概率與事件小于已經(jīng)發(fā)生次數(shù)的概率。
因此,貝葉斯推斷可以理解為通過先驗概率和調(diào)整因子來獲得后驗概率。其中調(diào)整因子是根據(jù)事件已經(jīng)發(fā)生的概率推斷事件可能發(fā)生的概率(通過硬幣正面出現(xiàn)的次數(shù)來推斷硬幣均勻的可能性),并與已經(jīng)發(fā)生的先驗概率(硬幣正面出現(xiàn)的概率)的比值。通過這個比值調(diào)整先驗概率來獲得后驗概率。
后驗概率 = 先驗概率 x 調(diào)整因子
5.案例
5.1案例1:病人分類的例子
某個醫(yī)院早上收了六個門診病人,如下表:
癥狀 | 職業(yè) | 疾病 |
---|---|---|
打噴嚏 | 護士 | 感冒 |
打噴嚏 | 農(nóng)夫 | 過敏 |
頭疼 | 建筑工人 | 腦震蕩 |
頭疼 | 建筑工人 | 感冒 |
打噴嚏 | 教師 | 感冒 |
頭疼 | 教師 | 腦震蕩 |
現(xiàn)在又來了第七個病人,是一個打噴嚏的建筑工人。請問他患上感冒的概率有多大? 根據(jù)貝葉斯定理:
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%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震蕩的概率。比較這幾個概率,就可以知道他最可能得什么病。
這就是貝葉斯分類器的基本方法:在統(tǒng)計資料的基礎(chǔ)上,依據(jù)某些特征,計算各個類別的概率,從而實現(xiàn)分類。
5.2案例2:賬號分類
根據(jù)某社區(qū)網(wǎng)站的抽樣統(tǒng)計,該站10000個賬號中有89%為真實賬號(設(shè)為C0),11%為虛假賬號(設(shè)為C1)。接下來,就要用統(tǒng)計資料判斷一個賬號的真實性。
C0 = 0.89
C1 = 0.11
假定某一個賬號有以下三個特征
- F1: 日志數(shù)量/注冊天數(shù) ,F1 = 0.1
- F2: 好友數(shù)量/注冊天數(shù) ,F2 = 0.2
- F3: 是否使用真實頭像(真實頭像為1,非真實頭像為0),F3 = 0
請問該賬號是真實賬號還是虛假賬號?方法是使用樸素貝葉斯分類器,計算下面這個計算式的值。
P(F1|C)P(F2|C)P(F3|C)P(C)
雖然上面這些值可以從統(tǒng)計資料得到,但是這里有一個問題:
- F1和F2是連續(xù)變量,不適宜按照某個特定值計算概率。
- 一個技巧是將連續(xù)值變?yōu)殡x散值,計算區(qū)間的概率。比如將F1分解成[0, 0.05]、(0.05, 0.2)、[0.2, +∞]三個區(qū)間,然后計算每個區(qū)間的概率。
- 在我們這個例子中,F(xiàn)1等于0.1,落在第二個區(qū)間,所以計算的時候,就使用第二個區(qū)間的發(fā)生概率
根據(jù)統(tǒng)計資料,可得:
- P(F1|C0) = 0.5, P(F1|C1) = 0.1
- P(F2|C0) = 0.7, P(F2|C1) = 0.2
- P(F3|C0) = 0.2, P(F3|C1) = 0.9
因此
P(F1|C0) P(F2|C0) P(F3|C0) P(C0) = 0.5 x 0.7 x 0.2 x 0.89 = 0.0623
P(F1|C1) P(F2|C1) P(F3|C1) P(C1) = 0.1 x 0.2 x 0.9 x 0.11 = 0.00198
5.3案例3:性別分類
下面是一組人類身體特征的統(tǒng)計資料。
性別 | 身高(英尺) | 體重(磅) | 腳掌(英寸) |
---|---|---|---|
男 | 6 | 180 | 12 |
男 | 5.92 | 190 | 11 |
男 | 5.58 | 170 | 12 |
男 | 5.92 | 165 | 10 |
女 | 5 | 100 | 6 |
女 | 5.5 | 150 | 8 |
女 | 5.42 | 130 | 7 |
mv | 5.75 | 150.9 | 9 |
已知某人身高6英尺、體重130磅,腳掌8英寸,請問該人是男是女?根據(jù)樸素貝葉斯分類器,計算下面這個式子的值:
P(身高|性別) x P(體重|性別) x P(腳掌|性別) x P(性別)
P(身高|性別) x P(體重|性別) x P(腳掌|性別) x P(性別)
這里的困難在于,由于身高、體重、腳掌都是連續(xù)變量,不能采用離散變量的方法計算概率。而且由于樣本太少,所以也無法分成區(qū)間計算。怎么辦?
這時,可以假設(shè)男性和女性的身高、體重、腳掌都是正態(tài)分布,通過樣本計算出均值和方差,也就是得到正態(tài)分布的密度函數(shù)。有了密度函數(shù),就可以把值代入,算出某一點的密度函數(shù)的值。比如,男性的身高是均值5.855、方差0.035的正態(tài)分布。所以,男性的身高為6英尺的概率的相對值等于1.5789(大于1并沒有關(guān)系,因為這里是密度函數(shù)的值,只用來反映各個值的相對可能性)。
有了這些數(shù)據(jù)以后,就可以計算性別的分類了。
P(身高=6|男) x P(體重=130|男) x P(腳掌=8|男) x P(男) = 6.1984 x e-9
P(身高=6|女) x P(體重=130|女) x P(腳掌=8|女) x P(女) = 5.3778 x e-4
可以看到,女性的概率比男性要高出將近10000倍,所以判斷該人為女性。