分類(lèi)算法之樸素貝葉斯(NaiveBayes)

我個(gè)人認(rèn)為,在數(shù)據(jù)挖掘領(lǐng)域,分類(lèi)算法是最為重要。它根據(jù)以往的數(shù)據(jù)來(lái)對(duì)新的數(shù)據(jù)做預(yù)測(cè)。垃圾郵件判斷,潛在用戶(hù)挖掘等都會(huì)用到分類(lèi)算法。今天把總結(jié)樸素貝葉斯算法的學(xué)習(xí)心得。

naive

#Bayes是誰(shuí)#
Thomas Bayes,英國(guó)數(shù)學(xué)家。約1701年出生于倫敦,做過(guò)神甫。1742年成為英國(guó)皇家學(xué)會(huì)會(huì)員。1761年4月7日逝世。貝葉斯在數(shù)學(xué)方面主要研究概率論。他首先將歸納推理法用于概率論基礎(chǔ)理論,并創(chuàng)立了貝葉斯統(tǒng)計(jì)理論,對(duì)于統(tǒng)計(jì)決策函數(shù)、統(tǒng)計(jì)推斷、統(tǒng)計(jì)的估算等做出了貢獻(xiàn)。

#Bayes定理#
通俗來(lái)說(shuō)就是:****
已知事件B的發(fā)生概率P(B)
已知在事件B已經(jīng)發(fā)生的情況下,事件A發(fā)生的概率P(A|B)
則可根據(jù)Bayes定理,計(jì)算事件A發(fā)生的條件下,事件B發(fā)生的概率P(B|A)。
計(jì)算方法為:
P(B|A)=P(A|B)× P(B)/ P(A)

#NaiveBayes分類(lèi)算法實(shí)例#
門(mén)診部一共就診了6位患者,情況如下:

case

這時(shí),來(lái)了第七位患者,一位“打噴嚏的工人”,請(qǐng)推斷他得了啥病。

這就是一個(gè)分類(lèi)問(wèn)題。現(xiàn)狀把所有患者分成了三類(lèi)“感冒”“過(guò)敏”“腦震蕩”,我們的目的是把“打噴嚏的工人”分到這三類(lèi)中的一類(lèi)中。具體做法為:根據(jù)Bayes定理,計(jì)算這個(gè)“打噴嚏的工人”患三種疾病的概率。

P(感冒|打噴嚏&工人)
= P(打噴嚏&工人|感冒)×P(感冒) / P(打噴嚏&工人)
= P(打噴嚏|感冒)× P(工人|感冒)× P(感冒) / P(打噴嚏)× P(工人)
= (2/3 × 1/3 × 1/2)/ (1/2 × 1/3)
= 66.7%

解釋:

  • '&'項(xiàng)可以分成兩個(gè),是因?yàn)椤鞍Y狀”變量和“職業(yè)”變量是相互獨(dú)立的,沒(méi)什么聯(lián)系
  • 感冒的有3個(gè),其中打噴嚏的2個(gè),所以P(打噴嚏|感冒)=2/3
  • 感冒的有3個(gè),其中工人1個(gè),所以P(工人|感冒)=1/3
  • 一共六個(gè)人,感冒3個(gè),所以P(感冒)=1/2
  • 一共六個(gè)人,打噴嚏的3個(gè),所以P(打噴嚏)=1/2
  • 一共六個(gè)人,其中工人2個(gè),所以P(工人)=1/3

按照這個(gè)方法,計(jì)算“打噴嚏的工人”另外兩種疾病的概率;

P(過(guò)敏|打噴嚏&工人)
= P(打噴嚏&工人|過(guò)敏)×P(過(guò)敏) / P(打噴嚏&工人)
= P(打噴嚏|過(guò)敏)× P(工人|過(guò)敏)× P(過(guò)敏) / P(打噴嚏)× P(工人)
= (1 × 0 × 1/6)/ (1/2 × 1/3)
= 0%
P(腦震蕩|打噴嚏&工人)
= P(打噴嚏&工人|腦震蕩)×P(腦震蕩) / P(打噴嚏&工人)
= P(打噴嚏|腦震蕩)× P(工人|腦震蕩)× P(腦震蕩) / P(打噴嚏)× P(工人)
= (0 × 1/2 × 1/3)/ (1/2 × 1/3)
= 0%

可見(jiàn),“打噴嚏的工人”患感冒概率66.7%,初步判斷應(yīng)該是感冒。但是一般的分類(lèi)器都要根據(jù)具體業(yè)務(wù)設(shè)置閾值,對(duì)于人命關(guān)天的事,最好嚴(yán)格一些,比如95%以上才做出判斷,那么這里最好的答案應(yīng)該是“機(jī)器無(wú)法判斷,建議去讓醫(yī)生看看”。

#補(bǔ)充說(shuō)明#

  • 算法叫做樸素貝葉斯(NaiveBayes),是因?yàn)樗惴ㄊ窃谔?jiǎn)單了
  • ‘&’能分開(kāi)兩個(gè)概率相乘是因?yàn)樽兞康莫?dú)立性,如果不獨(dú)立的話(huà),這樣計(jì)算會(huì)有誤差
  • 分母項(xiàng) P(打噴嚏)× P(工人)在每次計(jì)算中都一樣,可以只互相比較分子計(jì)算的結(jié)果作出判斷
  • 例子中最初的6個(gè)病人的數(shù)據(jù)叫做訓(xùn)練集

#訓(xùn)練集樣本較小情況下的概率調(diào)整#
P(打噴嚏|過(guò)敏)和P(工人|過(guò)敏)分別為1,0,實(shí)際中不可能是這樣的,因?yàn)闆](méi)有什么是一定不發(fā)生,也沒(méi)有什么100%發(fā)生。出現(xiàn)這種情況是因?yàn)槲覀兊臉颖咎伲绻麡颖咀銐蚨?,概率?huì)相對(duì)靠譜。
在起步階段,樣本就是很少,為了避免0,1這種極端概率,需要人為做一些數(shù)學(xué)變換。
比如,對(duì)過(guò)敏來(lái)說(shuō),每個(gè)癥狀的初始概率都為50%,當(dāng)來(lái)了一個(gè)過(guò)敏病人,如果出現(xiàn)打噴嚏,那么P(打噴嚏|過(guò)敏)的概率就提升一點(diǎn)點(diǎn),反之如果不打噴嚏,則P(打噴嚏|過(guò)敏)的概率就下降一點(diǎn)點(diǎn)。
這樣使得每一個(gè)概率都變得在(0,1)之間平滑變化,對(duì)其他的變量也這樣處理。
在《Programming Collective Intelligence》這本書(shū)中給出了這個(gè)變換的公式,我套用到過(guò)敏來(lái)說(shuō)就是:

P(打噴嚏|過(guò)敏)調(diào)整 =(1×0.5 + 打噴嚏數(shù) × P(打噴嚏|過(guò)敏)) / (1+打噴嚏數(shù))
所以調(diào)整后的概率為:
P(打噴嚏|過(guò)敏)調(diào)整 = (0.5 + 3 ×1 )/(1+3 )=87.5%
P(工人|過(guò)敏)調(diào)整 = (0.5 + 2 ×0)/ (1+2)=16.7%

所以,在上例中計(jì)算第二種疾病的時(shí)候,如果用調(diào)整后的概率結(jié)果如下:

P(過(guò)敏|打噴嚏&工人)
= P(打噴嚏&工人|過(guò)敏)×P(過(guò)敏) / P(打噴嚏&工人)
= P(打噴嚏|過(guò)敏)× P(工人|過(guò)敏)× P(過(guò)敏) / P(打噴嚏)× P(工人)
= (87.5% × 16.7% × 1/6)/ (1/2 × 1/3)

= 14.6%

****#連續(xù)變量處理#****
對(duì)于上例來(lái)說(shuō),不論是職業(yè)還是癥狀,都是離散變量,也就是取值數(shù)有限,這樣都可以通過(guò)數(shù)個(gè)數(shù)的方式來(lái)計(jì)算概率(古典概率模型),但是如果出現(xiàn)連續(xù)型變量就不能靠數(shù)個(gè)數(shù)了,比如身高,可以有175cm 176cm 176.1cm 176.11cm,無(wú)窮盡……

  1. 處理方式一:離散化
    身高來(lái)說(shuō),可以就精確到cm,那么基于現(xiàn)實(shí)世界從40cm(嬰兒)到230cm(姚明)基本就夠用了,可以數(shù)個(gè)數(shù)。要么就分段【小于100cm】【100-150cm】【150-180cm】……這樣也可以。
  2. 處理方式二:利用變量的分布來(lái)計(jì)算概率
    一般來(lái)說(shuō)自然界中的大部分變量都是符合正態(tài)分布的,正態(tài)分布是一個(gè)鐘型曲線(xiàn),概率意義是,一次實(shí)驗(yàn)取到均值附近概率最大,去到遠(yuǎn)離均值的值的概率越來(lái)越小。那么可以計(jì)算樣本的均值和標(biāo)準(zhǔn)差,利用Z值【(實(shí)際值-均值)/標(biāo)準(zhǔn)差】,查標(biāo)準(zhǔn)正態(tài)分布表,查出取到每個(gè)樣本值的概率。
    當(dāng)然,如果明確知道變量屬于某個(gè)其他分布,如泊松分布,那么就直接用分布函數(shù)求概率即可。

#數(shù)學(xué)表達(dá)以備裝B之需#

NativeBayes
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容