樸素貝葉斯分類——大道至簡

分類問題

已知m個樣本 (x^1,y^1), ...... (x^m,y^m)票编,x是特征變量褪储,y是對應(yīng)的類別。
要求一個模型函數(shù)h栏妖,對于新的樣本 x^t乱豆,能夠盡量準(zhǔn)確的預(yù)測出 y^t = h(x^t)

概率角度

很多機器學(xué)習(xí)算法從誤差角度來構(gòu)建模型函數(shù)h吊趾,也就是先假設(shè)一個h宛裕,然后定義一個h(x)與y的誤差,通過逐步減少h(x)與y的誤差來獲得一個擬合的模型h论泛。

現(xiàn)在我們從概率的角度來考慮一下揩尸。
假設(shè)y有m個類別,即 y_1,......y_n ∈ \{C_1,......C_m\}屁奏,
對于樣本 x^t岩榆,如果能計算出每個類別的條件概率 P(C_1|x^t),......P(C_m|x^t),那么可以認(rèn)為概率最大的那個類別就是 x^t 所屬的類別坟瓢。(關(guān)于條件概率和貝葉斯定理請參考 理解貝葉斯定理)勇边。即
h(x) = C_x = \operatorname{argmax} \limits_{k \in \{1,2,...K\}} \Big(P(C_k|x) \Big) \quad(1)

樸素貝葉斯分類器

已知m個樣本 (x^1,y^1),(x^2,y^2), ...... (x^m,y^m)
x是n維特征變量折联,即 x=(x_1,x_2,......x_n)粒褒,
y是對應(yīng)的類別,設(shè)有K個類別诚镰,即 y^1,y^2,......y^m ∈ \{C_1,C_2,......C_K\}奕坟,

對任一給定的x,我們需要分別計算出x屬于各分類的概率 P(C_1|x),P(C_2|x),......P(C_K|x)清笨,其中有最大值的P(C_k|x)月杉,x即屬于該分類C_k,即樣本x屬于分類
C_x = \operatorname{argmax} \limits_{k \in \{1,2,...K\}} \Big(P(C_k|x) \Big) \quad(2)

現(xiàn)在需要計算 P(C_k|x)抠艾,應(yīng)用貝葉斯定理:
P(C_k|x) = \frac{P(C_k)}{P(x)} P(x|C_k) \quad(3) \\ = \frac{P(C_k)}{P(x)} P(x_1,x_2,......x_n|C_k) \quad(4)

這里 P(x_1,x_2,......x_n|C_k) 是一個條件聯(lián)合概率苛萎,意思是在分類 C_k 中,特征 (x_1,x_2,......x_n) 取一組特定值(也就是需要預(yù)測的樣本x的各特征的值)的概率检号。這個概率不容易計算腌歉,為了方便,于是樸素貝葉斯(Naive Bayes) 隆重登場谨敛。在這里樸素的意思是究履,假定 x 的各特征 x_1,x_2,......x_n 是條件獨立的。(參考維基百科 - 條件獨立)脸狸。因此
P(x_1,x_2,......x_n|C_k) = P(x_1|C_k)P(x_2|C_k)......P(x_n|C_k) \quad(5)
這個轉(zhuǎn)換其實就是 獨立變量的聯(lián)合分布 = 各變量先驗分布的乘積(參考 維基百科 - 聯(lián)合分布)最仑,只不過這里是條件概率藐俺,但是因為變換前后都有同樣的條件 C_k,從樣本空間 C_k 的角度看泥彤,其實就是聯(lián)合分布轉(zhuǎn)換成先驗分布的乘積欲芹。(對樣本空間的理解請參考 理解貝葉斯定理)。

將(5)帶回(4)得
P(C_k|x) = \frac{P(C_k)}{P(x)} P(x_1|C_k)P(x_2|C_k)......P(x_n|C_k) \\ = \frac{P(C_k)}{P(x)} \prod_{j=1}^{n}P(x_j|C_k) \quad(6)

對任一給定的樣本x的值是確定的吟吝,且x不依賴于C菱父,所以P(x)可以看作常量。所以可以忽略 P(x)剑逃。
P(C_k|x) \propto P(C_k) \prod_{j=1}^{n}P(x_j|C_k) \\ C_x = \operatorname{argmax} \limits_{k \in \{1,2,...K\}} \Big(P(C_k) \prod_{j=1}^{n}P(x_j|C_k) \Big) \quad(7)
這就是樸素貝葉斯分類的模型函數(shù)浙宜。

參數(shù)估計

上述公式中主要有兩項,分別考察一下如何計算蛹磺。

參數(shù)1:P(C_k)

上式中 P(C_k) 比較容易計算粟瞬,用頻率來估算概率,統(tǒng)計m個樣本中屬于 C_k 的樣本的頻率即可萤捆。設(shè)m個樣本中有 m_k 個樣本的類別是 C_k裙品,則
P(C_k) = m_k / m \quad(8)

參數(shù)2:P(x_j|C_k)

P(x_j|C_k)的計算需要事先假設(shè)樣本特征x_j的數(shù)據(jù)分布情況。對特征分布的假設(shè)俗或,我們稱之為事件模型市怎,通常會采用以下三種假設(shè)。

  1. 多項式分布
    如果特征x_j是離散值辛慰,可以假設(shè)它符合 多項式分布区匠。可以統(tǒng)計x_j的某個特征在樣本中的頻率來估算其概率昆雀。
    假設(shè) 特征x_jS_j 個可能的取值(比如天氣有陰辱志、晴蝠筑、雨三種狀態(tài)狞膘,則 S_j=3),并且在n個樣本中什乙,類別為 C_k挽封、特征 x_j 取值為 s 的樣本有 m_{kjs} 個。則

P(x_{js}|C_k) = m_{kjs} / m_k \quad(9)
有時候樣本中某個特征的特定取值的樣本數(shù) m_{kjs} = 0臣镣,這將導(dǎo)致整個 P(C_k) \prod_{j=1}^{n}P(x_j|C_k) = 0辅愿,嚴(yán)重扭曲了該特征的概率值。因此忆某,通车愦可以采用拉普拉斯平滑來避免這種情況發(fā)生。即
P(x_{js}|C_k) = (m_{kjs} + \lambda) \big/ (m_k + S_j \lambda) \quad(10)
通常取 \lambda = 1
將(8)和(10)帶入貝葉斯分類器(7)弃舒,得到

C_x = \operatorname{argmax} \limits_{k \in \{1,2,...K\}} \Big(P(C_k) \prod_{j=1}^{n}P(x_j|C_k) \Big) \\ k = \operatorname{argmax} \limits_{k \in \{1,2,...K\}} \Big( \frac{m_k}{m} \prod_{j=1}^{n} \frac{m_{kjs} + \lambda}{m_k + S_j \lambda} \Big) \quad(11)

用一個粗略的示意圖來理解一下特征為離散值時癞埠,條件概率P(x_{js}|C_k)如何根據(jù)樣本集來進行估算:

特征為離散值

圖中表示整個樣本空間状原,有兩個類別
C_1, C_2
,每個樣本有兩個特征
x_1, x_2
苗踪,其中
x_1
有3個可取的離散值
S_{11}, S_{12}, S_{13}
颠区,
x_2
有4個可取的離散值
S_{21}, S_{22}, S_{23}, S_{24}
。圖中橙色部分就是
m_{111}
通铲,即 類別=
C_1
毕莱,特征=
x_1
,特征值=
S_{11}
時(k=1,j=1,s=1)的樣本數(shù)颅夺,藍色部分就是
m_{123}
朋截,即 類別=
C_1
,特征=
x_2
吧黄,特征值=
S_{23}
時(k=1,j=2,s=3)的樣本數(shù)质和。整個灰色部分是
m_1
,即類別為
C_1
的樣本數(shù)稚字。

舉例:根據(jù)天氣情況決定是否打網(wǎng)球
本案例來自 樸素貝葉斯分類器

打網(wǎng)球樣本

上面表格是某同學(xué)在不同天氣情況下的打網(wǎng)球決策數(shù)據(jù)饲宿。
假設(shè)今天天氣狀況是:Outlook=sunny, Temperature=cool,Humidity=high,Wind=strong,該同學(xué)是否會去打網(wǎng)球呢胆描?
這里的幾個特征瘫想,天氣、溫度昌讲、濕度国夜、風(fēng)速都是離散型變量,適合采用上面的多項式貝葉斯分類方法短绸。將上面的公式寫在這里便于查看车吹。
k = \operatorname{argmax} \limits_{k \in \{1,2,...K\}} \Big( \frac{m_k}{m} \prod_{j=1}^{n} \frac{m_{kjs} + \lambda}{m_k + S_j \lambda} \Big) \quad(11)

我們需要計算 k=\{yes, no\} 兩種情況下,x=(sunny,cool,high,strong) 的估算概率醋闭。
統(tǒng)計上表中各種情況下的樣本數(shù)量可知:
總樣本數(shù) m=14

打球(k=yes)的樣本數(shù) m_{yes} = 9
不打球(k=no)的樣本數(shù) m_{no} = 5

天氣的取值 S_{Outlook}=3(Sunny/Overcast/Rain)
晴天打球(k=yes,j=Outlook,s=sunny)的樣本數(shù) m_{kjs}=2
晴天不打球(k=no,j=Outlook,s=sunny)的樣本數(shù) m_{kjs}=3

溫度的取值 S_{Temperature}=3(Hot/Mild/Cool)
冷天打球(k=yes,j=Temperature,s=cool)的樣本數(shù) m_{kjs}=3
冷天不打球(k=no,j=Temperature,s=cool)的樣本數(shù) m_{kjs}=1

濕度的取值 S_{Humidity}=2(High/Normal)
潮濕天打球(k=yes,j=Humidity,s=high)的樣本數(shù) m_{kjs}=3
潮濕天不打球(k=no,j=Humidity,s=high)的樣本數(shù) m_{kjs}=4

風(fēng)力的取值 S_{Wind}=2(Strong/Weak)
大風(fēng)天打球(k=yes,j=Wind,s=strong)的樣本數(shù) m_{kjs}=3
大風(fēng)天不打球(k=no,j=Wind,s=strong)的樣本數(shù) m_{kjs}=3

將上述數(shù)據(jù)代入公式(11)窄驹,對于樣本 x=(sunny,cool,high,strong) ,打球(k=yes)的概率
k=yes \\ \frac{m_k}{m} \prod_{j=1}^{n} \frac{m_{kjs} + \lambda}{m_k + S_j \lambda} \\ = \frac{9}{14} \Big( \frac{2 + 1}{9 + 3} \Big) \Big( \frac{3 + 1}{9 + 3} \Big) \Big( \frac{3 + 1}{9 + 2} \Big) \Big( \frac{3 + 1}{9 + 2} \Big) \\ = 0.007084
不打球(k=nos)的概率
k=no \\ \frac{m_k}{m} \prod_{j=1}^{n} \frac{m_{kjs} + \lambda}{m_k + S_j \lambda} \\ = \frac{5}{14} \Big( \frac{3 + 1}{5 + 3} \Big) \Big( \frac{1 + 1}{5 + 3} \Big) \Big( \frac{4 + 1}{5 + 2} \Big) \Big( \frac{3 + 1}{5 + 2} \Big) \\ = 0.01822

這里 0.01822 > 0.007084证逻,所以該同學(xué)可能不會去打球乐埠。經(jīng)過歸一化,
不打球的概率 = 0.01822 / (0.01822 + 0.007084) = 72%
(注:這里計算結(jié)果與原案例中的數(shù)值不同囚企,因為這里有做拉普拉斯平滑丈咐,原案例中沒有。本案例中其實沒有出現(xiàn)特定特征的樣本數(shù)為0的情況龙宏,可以不用做拉普拉斯平滑棵逊,不過這里是按照公式寫下來的,就按公式計算了)

  1. 伯努利分布
    如果特征x_j是稀疏二項離散值银酗,可以假設(shè)它符合 伯努利分布辆影。上面打網(wǎng)球的案例中掩浙,濕度取值是 {high,normal},風(fēng)力取值是 {strong,weak}秸歧,這兩個特征都是二項離散值厨姚。
    伯努利分布只有兩種可能的取值,我們將其編碼為 {0,1}键菱,則
    P(x_{js}|C_k) = \begin{cases} P(x_{js}=1|C_k) \\ P(x_{js}=0|C_k) = 1 - P(x_{js}=1|C_k) \end{cases} \quad(12)

另外注意到伯努利分布其實是多項式分布的特例谬墙,所以我們可以用上面公式(12)計算,也可以用之前多項式分布公式(11)計算经备。

垃圾郵件分類等涉及文本的任務(wù)中可以采用伯努利分布拭抬,比如構(gòu)造一個5000個不同單詞的向量作為輸入特征x,對于一段文本侵蒙,其中有出現(xiàn)的單詞造虎,在x中對應(yīng)單詞的位置設(shè)為1,其它位置為0纷闺,這樣x中的每個特征(單詞)的取值為1或0算凿,符合伯努利分布。

  1. 高斯分布
    如果特征x_j是連續(xù)變量犁功,可以假設(shè)它符合 高斯分布(正態(tài)分布)氓轰。準(zhǔn)確點說,是假設(shè)每個類別 C_k 下的 x_{kj} 符合高斯分布浸卦。這樣署鸡,我們可以通過高斯分布的概率密度函數(shù)來計算樣本中 x_j 某個特定值的條件概率 P(x_{js}|C_k)。高斯分布的概率密度函數(shù)為:
    f(x;\mu,\sigma) = \frac{1}{\sigma \sqrt{2 \pi}} exp \Big( - \frac{(x-\mu)^2}{2 \sigma ^2} \Big)
    其中 \mu 是均值限嫌,\sigma^2是方差靴庆。
    假設(shè)在類別 C_k 中,特征 x_j 的均值為 \mu_{kj}怒医,方差為 \sigma_{kj}^2(這兩項可以通過樣本數(shù)據(jù)統(tǒng)計出來)炉抒。則
    P(x_{j}|C_k) = \frac{1}{\sigma_{kj} \sqrt{2 \pi}} exp \Big( - \frac{(x_j-\mu_{kj})^2}{2 \sigma_{kj} ^2} \Big)

案例請參考 維基百科 - 案例 - 性別分類

處理連續(xù)數(shù)值問題的另一種常用的技術(shù)是通過離散化連續(xù)數(shù)值的方法。通常裆熙,當(dāng)訓(xùn)練樣本數(shù)量較少或者是精確的分布已知時端礼,通過概率分布的方法是一種更好的選擇禽笑。
而在大量樣本的情形下離散化的方法表現(xiàn)更優(yōu)入录,因為大量的樣本可以學(xué)習(xí)到數(shù)據(jù)的實際分布,而不用“樸素”的假設(shè)其分布佳镜。典型情況下很多任務(wù)都會提供大量的樣本僚稿,所以這時選擇離散化方法會比概率分布估計的方法更好。

題外話

順便說一句蟀伸,每次看到樸素這個詞蚀同,我就仿佛看到貝葉斯穿著一身打滿補丁衣服的樣子缅刽。而naive意思是缺乏經(jīng)驗的;幼稚的蠢络;無知的衰猛;輕信的。從公式推導(dǎo)過程來看刹孔,樸素貝葉斯分類器采用了一些簡化條件的假設(shè)啡省,比如假設(shè) x 的各特征 x_1,x_2,......x_n 是條件獨立的,假設(shè)樣本特征數(shù)據(jù)符合多項式分布髓霞、伯努利分布卦睹、高斯分布等,這些假設(shè)都可能不完全符合實際情況方库,因為對險惡的現(xiàn)實世界的無知從而采用了一些天真的假設(shè)结序。
不過,樸素還有一層含義是專一纵潦、純粹徐鹤,在這個意義上,貝葉斯分類也算大道至簡邀层,大智若愚了凳干。

優(yōu)缺點

樸素貝葉斯的主要優(yōu)點有:

1)算法簡單,有穩(wěn)定的分類效率被济。
2)對小規(guī)模的數(shù)據(jù)表現(xiàn)很好救赐,能個處理多分類任務(wù),適合增量式訓(xùn)練只磷,尤其是數(shù)據(jù)量超出內(nèi)存時经磅,我們可以一批批的去增量訓(xùn)練。
3)對缺失數(shù)據(jù)不太敏感钮追。

樸素貝葉斯的主要缺點有:   
1)“樸素”的假設(shè)如果與實際情況不符预厌,會影響模型效果。
2)輸入特征數(shù)據(jù)的表現(xiàn)形式元媚,比如是連續(xù)特征轧叽,離散特征還是二元特征,會影響概率計算和模型的分類效果刊棕。

參考

樸素貝葉斯算法原理小結(jié)
樸素貝葉斯分類器
維基百科 - Naive Bayes classifier
理解貝葉斯定理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炭晒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子甥角,更是在濱河造成了極大的恐慌网严,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗤无,死亡現(xiàn)場離奇詭異震束,居然都是意外死亡怜庸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門垢村,熙熙樓的掌柜王于貴愁眉苦臉地迎上來割疾,“玉大人,你說我怎么就攤上這事嘉栓¤厩” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵胸懈,是天一觀的道長担扑。 經(jīng)常有香客問我,道長趣钱,這世上最難降的妖魔是什么涌献? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮首有,結(jié)果婚禮上燕垃,老公的妹妹穿的比我還像新娘。我一直安慰自己井联,他們只是感情好卜壕,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烙常,像睡著了一般轴捎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚕脏,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天侦副,我揣著相機與錄音,去河邊找鬼驼鞭。 笑死秦驯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挣棕。 我是一名探鬼主播译隘,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洛心!你這毒婦竟也來了固耘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤皂甘,失蹤者是張志新(化名)和其女友劉穎玻驻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體偿枕,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡璧瞬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渐夸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗤锉。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖墓塌,靈堂內(nèi)的尸體忽然破棺而出瘟忱,到底是詐尸還是另有隱情,我是刑警寧澤苫幢,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布访诱,位于F島的核電站,受9級特大地震影響韩肝,放射性物質(zhì)發(fā)生泄漏触菜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一哀峻、第九天 我趴在偏房一處隱蔽的房頂上張望涡相。 院中可真熱鬧,春花似錦剩蟀、人聲如沸催蝗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丙号。三九已至,卻和暖如春缰冤,著一層夾襖步出監(jiān)牢的瞬間槽袄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工锋谐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留遍尺,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓涮拗,卻偏偏與公主長得像乾戏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子三热,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 樸素貝葉斯很直觀鼓择,計算量也不大,在很多領(lǐng)域有廣泛的應(yīng)用就漾,這里我們就對樸素貝葉斯算法原理做一個小結(jié)呐能。 樸素貝葉斯相關(guān)...
    蛐蛐囍閱讀 891評論 0 2
  • 在所有的機器學(xué)習(xí)分類算法中,樸素貝葉斯和其他絕大多數(shù)的分類算法都不同。對于大多數(shù)的分類算法摆出,比如決策樹,KNN,邏...
    云時之間閱讀 1,894評論 6 24
  • 忘光了概率統(tǒng)計的知識還想學(xué)樸素貝葉斯算法朗徊?這一篇就是為你準(zhǔn)備的。雖然如此偎漫,作為初學(xué)者爷恳,別指望 5 分鐘就能完全理解...
    kamidox閱讀 2,687評論 4 7
  • 騰訊云IM的sdk中主要提供了 以下幾個消息類 TIMTextElem (文本消息) TIMImageElem (...
    進階的蚊子閱讀 6,526評論 2 0
  • 正確本身,其實很可能并沒有什么價值象踊。 大多數(shù)人習(xí)慣性地“一根筋”温亲,只會單維度思考,從來不去想事物的另外一個維度杯矩。 ...
    青茶_2619閱讀 209評論 0 0