分類算法之貝葉斯(Bayes)分類器

摘要:旁聽了清華大學王建勇老師的 數據挖掘:理論與算法 的課,講的仍是挺細的,好記性不如爛筆頭,在此記錄本身的學習內容,方便之後複習。html

 

一:貝葉斯分類器簡介

1)貝葉斯分類器是一種基於統計的分類器,它根據給定樣本屬於某一個具體類的機率來對其進行分類。算法

2)貝葉斯分類器的理論基礎是貝葉斯理論網絡

3)貝葉斯分類器的一種簡單形式是樸素貝葉斯分類器,跟隨機森林、神經網絡等分類器都有可比的性能。性能

4)貝葉斯分類器是一種增量型的分類器。學習

 

二:貝葉斯理論

第一次接觸貝葉斯仍是本科學機率論的時候,那時候也就只知道作題目,沒想到如今還可以在工做和學習中用到它,先複習下相關的基礎機率公式吧:htm

1) 乘法定理:設P(B)>0,則有P(AB) = P(A|B)P(B).blog

2) 全機率公式:設試驗E的樣本空間爲S,A爲E的事件,若事件組B1,B2,…,Bn爲S的一個劃分,且P(Bi)> 0(i=1,2,…,n),則有事件

P(A) = P(A|B1)P(B1) + P(A|B2)P(B2) + …+ P(A|Bn)P(Bn).ci

    :在不少事件問題中P(A)不容易算出來,可是能夠很容易的找到S的一個劃分:B1,B2,…,Bn,而且P(Bi)和P(A|Bi)爲已知或者容易算出,那麼就能夠根據上式求出P(A).get

3)貝葉斯公式:設試驗E的樣本空間爲S,A爲E的事件,B1,B2…,Bn爲S的一個劃分,且P(A)>0,P(Bi)>0(i=1,2,…,n),則有

P(Bi|A) = P(ABi)/P(A) = P(A|Bi)P(Bi)/∑P(A|Bi)P(Bi),i=1,2,…n.

舉例

X是一個待分類的數據元組,由n個屬性描述;H是一個假設,例如X屬於類C。對於分類問題,咱們想計算出機率P(H|X):即已知元組X的每一個元素對應的屬性值,求出X屬於C類的機率。

例如:X的屬性值爲:age=25,income=$5000,H對應的假設是:X會買電腦。

P(H|X):意思是在已知某客戶信息age=25,income=$5000的條件下,該客戶會買電腦的機率。

P(H):意思是對於任何給定的客戶信息,該客戶會購買電腦的機率。

P(X|H):意思是已知客戶會買電腦,那麼該客戶的age=25,income=$5000的機率。

P(X):意思是在咱們全部的客戶信息集合中,客戶的age=25,income=$5000的機率。

因此:P(H|X) = P(X|H)P(H)/P(X)

三:樸素貝葉斯分類器

樸素貝葉斯分類器的工做流程以下:

1:設D爲樣本訓練集;每個樣本X是由n個屬性值組成的,X=(x1,x2,…xn);對應的屬性集爲A1,A2,A3…An;

2: 假設有m個類標籤:C1,C2,…Cm.對於某待分類元X,樸素分類器會把P(Ci|X)(i=1,2,…m)值最大的那個類標籤Ci認爲是X的類別,即樸素貝葉斯分類器預測出X屬於類Ci,當且僅當P(Ci|X)>P(Cj|X) (1≤j≤m,j≠i).所以咱們的目標就是找出P(Ci|X)中的最大值。

P(Ci|X) = P(X|Ci)P(Ci)/P(X)

對於給定的樣本集,P(X)是常數,跟某個具體的類標籤沒有關聯,因此要想找出P(Ci|X)的最大值也就是找出P(X|Ci)P(Ci)的最大值:

若是咱們不知道P(Ci)的值,咱們能夠假設P(C1)=P(C2)=…=P(Cm),固然P(Ci)能夠經過估計值來代替,P(Ci)=|Ci, D| /|D|

其中|D|爲樣本總數,|Ci,D|爲D中屬於類Ci的樣本數。

3:若是n的值特別大,也就是說樣本元有不少屬性,那麼對於P(X|Ci)的計算會至關複雜。因此在樸素貝葉斯中進行了一個假設:即對於樣本元中的每一個屬性,它們都互相條件獨立

因此有: b1

對於P(xi|Ci)咱們能夠從訓練集中算出來,其中xi表明在某個具體樣本中對應屬性Ai的值。

P(xi|Ci)的計算分爲兩種狀況:

1):若是屬性Ai的值是分類變量(離散變量),那麼P(xi|Ci)等於訓練樣本空間|D|中,屬於類Ci而且對應屬性Ai的值等於xi的數目除以樣本空間中屬於類Ci的樣本數目。

2):若是Ai的值是連續型的變量,則P(xi|Ci)的計算會根據高斯分佈來計算,設其中均值爲μ,標準方差爲σ:

2

3

4:爲了預測X所屬的類標籤,咱們根據前面的步驟能夠算出每個類標籤Ci對應的P(X|Ci)P(Ci)值,當某一個類標籤Ci有:

P(X|Ci)P(Ci)>P(X|Cj)P(Cj) 對於任意j:   1≤j≤m,j≠i

則咱們認爲X屬於類標籤Ci.

 

四:具體例子分析

這裏咱們仍是用 分類算法之決策樹 中的樣本數據來進行舉例:

樣本空間D以下表所示:其中 |D|=14.

5

屬性集合爲A{age,come,student,credit_rating} 對應的屬性個數n=4.

分類屬性爲:buys_computer,值爲{yes,no}  即C1:buys_computer = yes;C2: buys_computer = no; 分類標籤個數 m = 2;

有一待分類的數據元X={age<=30,income=medium,student=yes,credit_rating=fail}.

則根據樸素貝葉斯分類器的工做流程咱們能夠計算出:

P(Ci):

P(buys_computer = 「yes」) = 9/14 = 0.643

P(buys_computer = 「no」) = 5/14= 0.357

P(xi|Ci):

P(age = 「<=30」 | buys_computer = 「yes」) = 2/9 = 0.222

P(age = 「<= 30」 | buys_computer = 「no」) = 3/5 = 0.6

P(income = 「medium」 | buys_computer = 「yes」) = 4/9 = 0.444

P(income = 「medium」 | buys_computer = 「no」) = 2/5 = 0.4

P(student = 「yes」 | buys_computer = 「yes) = 6/9 = 0.667

P(student = 「yes」 | buys_computer = 「no」) = 1/5 = 0.2

P(credit_rating = 「fair」 | buys_computer = 「yes」) = 6/9 = 0.667

P(credit_rating = 「fair」 | buys_computer = 「no」) = 2/5 = 0.4

P(X|Ci):

P(X|buys_computer = 「yes」) = 0.222 x 0.444 x 0.667 x 0.667 = 0.044

P(X|buys_computer = 「no」) = 0.6 x 0.4 x 0.2 x 0.4 = 0.019

P(X|Ci)*P(Ci) :

P(X|buys_computer = 「yes」) * P(buys_computer = 「yes」) = 0.028

P(X|buys_computer = 「no」) * P(buys_computer = 「no」) = 0.007

由於0.28>0.007因此X屬於類:buys_computer = 「yes」.

五:樸素貝葉斯存在的問題

1:零機率問題

在上述的例子中假設在樣本數據集中income = medium的樣本數爲0,那麼P(income = 「medium」 | buys_computer = 「yes」) 和

P(income = 「medium」 | buys_computer = 「no」) 都將爲0,那麼在計算P(X|Ci)*P(Ci)時結果也爲0,這樣就很差決定X是屬於哪個類。

對於這樣的問題的一個解決方案叫作:Laplacian correction或者Laplacian estimator,是以一位法國數學家Pierre Laplace名字命名的。

它的具體作法就是給相應的屬性的不一樣值數目都加1:

假設:有1000個訓練樣本,其中income=low的數目爲10,income=medium的數目爲0,income=high的數目爲990,則爲了不零機率問題,咱們給每一種income的數目加1,及最後結果爲 income =medium的數目爲1,low的數目爲11,high的數目爲991.這樣也就避免了零機率問題。

2:準確度問題

樸素貝葉斯分類器是基於樣本屬性條件獨立的假設的前提下的,可是實際狀況可能並不成立,這樣也就缺失準確性了.

解決樸素貝葉斯準確性問題提出的一種方法叫作:貝葉斯網絡(Bayesian Belief Networks ).這個方法留着下次學習。

相關文章
相關標籤/搜索