1.1.00_貝葉斯分類器 Bayesian Classifier

貝葉斯分類器是在第6章介紹的瞳秽。在那一章中胯杭,我們已經(jīng)學(xué)會(huì)了如何建立一個(gè)文檔分類系統(tǒng)船响,將其用于垃圾郵件過濾哈肖,或是根據(jù)關(guān)鍵字的模糊搜索來對(duì)一組文檔進(jìn)行劃分吻育。

盡管所有的例子都是關(guān)于文檔處理的,但是第6章的貝葉斯分類器實(shí)際上也可以適用于任何其他形式的數(shù)據(jù)集淤井,只要我們能將其轉(zhuǎn)換成一組特征列表布疼。

所謂特征摊趾,就是指一個(gè)給定項(xiàng)中存在或缺少的某種東西

在文檔的例子中游两,特征就是文檔中的單詞严就,但它們也可以是某個(gè)不明對(duì)象的特有屬性、一種疾病的癥狀器罐,或是其他任何形式的東西梢为,只要我們能夠稱其是"存在的"或"缺少的"即可。

訓(xùn)練 Training

所有監(jiān)督算法一樣轰坊,貝葉斯分類器是利用樣本進(jìn)行訓(xùn)練的铸董。

每個(gè)樣本包含了一個(gè)特征列表和對(duì)應(yīng)的分類

假定我們要對(duì)一個(gè)分類器進(jìn)行訓(xùn)練肴沫,使其能夠正確判斷出:一篇包含單詞"python"的文檔究竟是關(guān)于編程語言的粟害,還是關(guān)于蛇的。表12-1給出了一個(gè)樣本訓(xùn)練集颤芬。
表12-1:針對(duì)一組文檔的特征和分類

特征 | 分類
-- |
Python是以鳥和哺乳動(dòng)物為食的大蟒 | 蛇
Python最初是作為一門腳本語言被開發(fā)出來的 | 語言
在印度尼西亞發(fā)現(xiàn)了一條14.935米(49英尺)長的Python | 蛇
Python具有動(dòng)態(tài)類型系統(tǒng) | 語言
擁有鮮艷表皮的Python | 蛇
開源項(xiàng)目 | 語言

分類器記錄了它迄今為止見過的所有特征悲幅,以及這些特征與某個(gè)特定分類相關(guān)聯(lián)的數(shù)字概率。

分類器逐一接受樣本的訓(xùn)練站蝠。當(dāng)經(jīng)過某個(gè)樣本的訓(xùn)練之后汰具,分類器會(huì)更新該樣本中特征與分類的概率,同時(shí)還會(huì)產(chǎn)生一個(gè)新的概率菱魔,即:在一篇屬于某個(gè)分類的文檔中留荔,含有指定單詞的概率。

例如澜倦,經(jīng)過如表12-1所示的一組文檔的訓(xùn)練之后聚蝶,也許我們最終會(huì)得到如表12-2所示的一組概率。
表12-2:單詞屬于某個(gè)給定分類的概率

特征 | 語言 | 蛇
-- |
dynamic | 0.6 | 0.1
constrictor | 0.0 | 0.6
long | 0.1 | 0.2
source | 0.3 | 0.1
and | 0.95 | 0.95

從上表中我們可以看到藻治,經(jīng)過訓(xùn)練之后碘勉,特征與各種分類的關(guān)聯(lián)性更加明確了。

單詞"constrictor"屬于蛇的分類概率更大桩卵,而單詞"dynamic"屬于編程語言的分類概率更大验靡。

另一方面,有些特征的所屬分類則并沒有那么明確吸占,比如:單詞"and"出現(xiàn)在兩個(gè)分類中的概率是差不多的(單詞"and"幾乎會(huì)出現(xiàn)在每一篇文檔中晴叨,不管它屬于哪一個(gè)分類)。

分類器在經(jīng)過訓(xùn)練之后矾屯,只會(huì)保留一個(gè)附有相應(yīng)概率的特征列表兼蕊,與某些其他的分類方法不同,此處的原始數(shù)據(jù)在訓(xùn)練結(jié)束之后件蚕,就沒有必要再加以保存了孙技。

分類 Classifying

當(dāng)一個(gè)貝葉斯分類器經(jīng)過訓(xùn)練之后产禾,我們就可以利用它來對(duì)新的項(xiàng)目進(jìn)行自動(dòng)分類了。

假定我們有一篇新的文檔牵啦,包含了特征"long"亚情、"dynamic"和"source"。表12-2列出了每個(gè)特征的概率哈雏,但這些概率只是針對(duì)于各個(gè)單詞而言的楞件。如果所有單詞同屬于一個(gè)分類的概率值更大,那么答案顯然是很清楚的裳瘪。

然而在本例中土浸,"dynamic"屬于語言分類的概率更大,而"long"屬于蛇分類的概率更大彭羹。因此黄伊,為了真正對(duì)一篇文檔進(jìn)行有效地分類,我們需要一種方法能將所有特征的概率組合到一起派殷,形成一個(gè)整體上的概率还最。

解決這一問題的一種方法是利用我們?cè)诘?章中介紹過的樸素貝葉斯分類器。它是通過下面的公式將概率組合起來的:

Pr(Category | Document) = Pr(Document | Category) * Pr(Category) / Pr(Document)

此處:

Pr (Document | Category) = Pr(Word1 | Category) * Pr(Word2 | Category) *…
  • Pr(Word | Category)的取值來自于上表毡惜,比如:Pr (dynamic | Language) = 0.6拓轻。
  • Pr(Category)的取值則等于某個(gè)分類出現(xiàn)的總體幾率。因?yàn)?language"有一半的機(jī)會(huì)都會(huì)出現(xiàn)虱黄,所以Pr(Language)的值為0.5悦即。

無論是哪個(gè)分類,只要其Pr(Category | Document)的值相對(duì)較高橱乱,它就是我們預(yù)期的分類。

代碼使用說明 Using Your Code

為了利用第6章中構(gòu)造的貝葉斯分類器對(duì)數(shù)據(jù)集進(jìn)行分類粱甫,我們所要做的唯一一件事情就是定義一個(gè)特征提取函數(shù)泳叠,該函數(shù)的作用是將我們用以訓(xùn)練或分類的數(shù)據(jù)轉(zhuǎn)化成一個(gè)特征列表

在第6章中我們處理的是文檔茶宵,所以該函數(shù)將字符串拆分成了一個(gè)個(gè)單詞危纫,但是也可以采用任何其他形式的函數(shù),只要它接受的是一個(gè)對(duì)象乌庶,并且返回一個(gè)列表:

>>> docclass.getwords('python is a dynamic language')
{'python': 1, 'dynamic': 1, 'language': 1}

上述函數(shù)可用于創(chuàng)建一個(gè)新的分類器种蝶,針對(duì)字符串進(jìn)行訓(xùn)練:

>>> cl=docclass.naivebayes(docclass.getwords)
>>> cl.setdb('test.db')
>>> cl.train('pythons are constrictors','snake')
>>> cl.train('python has dynamic types','language')
>>> cl.train('python was developed as a scripting language','language')

然后進(jìn)行分類:

>>> cl.classify('dynamic programming')
u'language'
>>> cl.classify('boa constrictors')
u'snake'

對(duì)于允許使用的分類數(shù)量,此處并沒有任何的限制瞒大,但是為了使分類器有一個(gè)良好的表現(xiàn)螃征,我們須要為每個(gè)分類提供大量的樣本。

優(yōu)點(diǎn)和缺點(diǎn) Strengths and Weaknesses

  • 樸素貝葉斯分類器與其他方法相比最大的優(yōu)勢或許就在于透敌,它在接受大數(shù)據(jù)量訓(xùn)練和查詢時(shí)所具備的高速度盯滚。即使選用超大規(guī)模的訓(xùn)練集踢械,針對(duì)每個(gè)項(xiàng)目通常也只會(huì)有相對(duì)較少的特征數(shù),并且對(duì)項(xiàng)目的訓(xùn)練和分類也僅僅是針對(duì)特征概率的數(shù)學(xué)運(yùn)算而已魄藕。

    尤其當(dāng)訓(xùn)練量逐漸遞增時(shí)則更是如此--在不借助任何舊有訓(xùn)練數(shù)據(jù)的前提下内列,每一組新的訓(xùn)練數(shù)據(jù)都有可能會(huì)引起概率值的變化

    (你會(huì)注意到背率,貝葉斯分類器的算法實(shí)現(xiàn)代碼允許我們每次只使用一個(gè)訓(xùn)練項(xiàng)话瞧,而其他方法,比如決策樹和支持向量機(jī)寝姿,則須要我們一次性將整個(gè)數(shù)據(jù)集都傳給它們交排。)對(duì)于一個(gè)如垃圾郵件過濾這樣的應(yīng)用程序而言,支持增量式訓(xùn)練的能力是非常重要的会油,因?yàn)檫^濾程序時(shí)常要對(duì)新到的郵件進(jìn)行訓(xùn)練个粱,然后必須即刻進(jìn)行相應(yīng)的調(diào)整;更何況翻翩,過濾程序也未必有權(quán)訪問已經(jīng)收到的所有郵件信息都许。

  • 樸素貝葉斯分類器的另一大優(yōu)勢是,對(duì)分類器實(shí)際學(xué)習(xí)狀況的解釋還是相對(duì)簡單的嫂冻。由于每個(gè)特征的概率值都被保存了起來胶征,因此我們可以在任何時(shí)候查看數(shù)據(jù)庫,找到最適合的特征來區(qū)分垃圾郵件與非垃圾郵件桨仿,或是編程語言與蛇睛低。保存在數(shù)據(jù)庫中的這些信息都很有價(jià)值,它們有可能會(huì)被用于其他的應(yīng)用程序服傍,或者作為構(gòu)筑這些應(yīng)用程序的一個(gè)良好基礎(chǔ)钱雷。

  • 樸素貝葉斯分類器的最大缺陷就是,它無法處理基于特征組合所產(chǎn)生的變化結(jié)果吹零。假設(shè)有如下這樣一個(gè)場景罩抗,我們正在嘗試從非垃圾郵件中鑒別出垃圾郵件來:假如我們構(gòu)建的是一個(gè)Web應(yīng)用程序,因而單詞"online"時(shí)常會(huì)出現(xiàn)在你的工作郵件中灿椅。而你的好友則在一家藥店工作套蒂,并且喜歡給你發(fā)一些他碰巧在工作中遇到的奇聞趣事。同時(shí)茫蛹,和大多數(shù)不善于嚴(yán)密保護(hù)自己郵件地址的人一樣操刀,偶爾你也會(huì)收到一封包含單詞"online pharmacy"的垃圾郵件。

    也許你已經(jīng)看出了此處的難點(diǎn)--我們往往會(huì)告訴分類器"online"和"pharmacy"是出現(xiàn)在非垃圾郵件中的婴洼,因此這些單詞相對(duì)于非垃圾郵件的概率會(huì)更高一些骨坑。當(dāng)我們告訴分類器有一封包含單詞"online pharmacy"的郵件屬于垃圾郵件時(shí),則這些單詞的概率又會(huì)進(jìn)行相應(yīng)的調(diào)整窃蹋,這就導(dǎo)致了一個(gè)經(jīng)常性的矛盾卡啰。由于特征的概率都是單獨(dú)給出的静稻,因此分類器對(duì)于各種組合的情況一無所知。在文檔分類中匈辱,這通常不是什么大問題振湾,因?yàn)橐环獍瑔卧~"online pharmacy"的郵件中可能還會(huì)有其他特征可以說明它是垃圾郵件,但是在面對(duì)其他問題時(shí)亡脸,理解特征的組合可能是至關(guān)重要的押搪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市浅碾,隨后出現(xiàn)的幾起案子大州,更是在濱河造成了極大的恐慌,老刑警劉巖垂谢,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦画,死亡現(xiàn)場離奇詭異,居然都是意外死亡滥朱,警方通過查閱死者的電腦和手機(jī)根暑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徙邻,“玉大人排嫌,你說我怎么就攤上這事$掷纾” “怎么了淳地?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帅容。 經(jīng)常有香客問我颇象,道長,這世上最難降的妖魔是什么并徘? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任夯到,我火速辦了婚禮,結(jié)果婚禮上饮亏,老公的妹妹穿的比我還像新娘。我一直安慰自己阅爽,他們只是感情好路幸,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著付翁,像睡著了一般简肴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上百侧,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天砰识,我揣著相機(jī)與錄音能扒,去河邊找鬼。 笑死辫狼,一個(gè)胖子當(dāng)著我的面吹牛初斑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膨处,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼见秤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了真椿?” 一聲冷哼從身側(cè)響起鹃答,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎突硝,沒想到半個(gè)月后测摔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡解恰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年锋八,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片修噪。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡查库,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黄琼,到底是詐尸還是另有隱情樊销,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布脏款,位于F島的核電站围苫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏撤师。R本人自食惡果不足惜剂府,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剃盾。 院中可真熱鬧腺占,春花似錦、人聲如沸痒谴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽积蔚。三九已至意鲸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怎顾。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工读慎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人槐雾。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓夭委,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚜退。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闰靴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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