應(yīng)用貝葉斯網(wǎng)絡(luò)分類(lèi)器進(jìn)行分類(lèi)主要分成兩階段。第一階段是貝葉斯網(wǎng)絡(luò)分類(lèi)器的學(xué)習(xí),即從樣本數(shù)據(jù)中構(gòu)造分類(lèi)器,包括結(jié)構(gòu)學(xué)習(xí)和CPT 學(xué)習(xí);第二階段是貝葉斯網(wǎng)絡(luò)分類(lèi)器的推理,即計(jì)算類(lèi)結(jié)點(diǎn)的條件概率,對(duì)分類(lèi)數(shù)據(jù)進(jìn)行分類(lèi)。這兩個(gè)階段的時(shí)間復(fù)雜性均取決于特征值間的依賴(lài)程度,甚至可以是NP 完全問(wèn)題,因而在實(shí)際應(yīng)用中,往往需要對(duì)貝葉斯網(wǎng)絡(luò)分類(lèi)器進(jìn)行簡(jiǎn)化。根據(jù)對(duì)特征值間不同關(guān)聯(lián)程度的假設(shè),可以得出各種貝葉斯分類(lèi)器,Naive Bayes、TAN、BAN、GBN 就是其中較典型、研究較深入的貝葉斯分類(lèi)器。
貝葉斯分類(lèi)器的分類(lèi)原理是通過(guò)某對(duì)象的先驗(yàn)概率,利用貝葉斯公式計(jì)算出其后驗(yàn)概率,即該對(duì)象屬于某一類(lèi)的概率,選擇具有最大后驗(yàn)概率的類(lèi)作為該對(duì)象所屬的類(lèi)。也就是說(shuō),貝葉斯分類(lèi)器是最小錯(cuò)誤率意義上的優(yōu)化。目前研究較多的貝葉斯分類(lèi)器主要有四種,分別是:Naive Bayes、TAN、BAN和GBN。
貝葉斯分類(lèi)器
貝葉斯分類(lèi)器的分類(lèi)原理是通過(guò)某對(duì)象的先驗(yàn)概率,利用貝葉斯公式計(jì)算出其后驗(yàn)概率,即該對(duì)象屬于某一類(lèi)的概率,選擇具有最大后驗(yàn)概率的類(lèi)作為該對(duì)象所屬的類(lèi)。也就是說(shuō),貝葉斯分類(lèi)器是最小錯(cuò)誤率意義上的優(yōu)化。目前研究較多的貝葉斯分類(lèi)器主要有四種,分別是:Naive Bayes、TAN、BAN和GBN。
訓(xùn)練
和所有監(jiān)督算法一樣,貝葉斯分類(lèi)器是利用樣本進(jìn)行訓(xùn)練的,每個(gè)樣本包含了一個(gè)特征列表和對(duì)應(yīng)的分類(lèi)。假定我們要對(duì)一個(gè)分類(lèi)器進(jìn)行訓(xùn)練,使其能夠正確的判斷出:一個(gè)包含“python”的文檔究竟是編程語(yǔ)言的,還是關(guān)于蛇的。
分類(lèi)器記錄了它迄今為止見(jiàn)過(guò)的所有特征,以及這些特征與某個(gè)特定分類(lèi)相關(guān)的數(shù)字概率。分類(lèi)器逐一接受樣本的訓(xùn)練。 當(dāng)經(jīng)過(guò)某個(gè)樣本的訓(xùn)練之后,分類(lèi)器會(huì)更新該樣本中特征與分類(lèi)的概率,同時(shí)還會(huì)生成一個(gè)新的概率,即:在一篇屬于某個(gè)分類(lèi)的文檔中,含有指定單詞的概率。例如
從上表中我們可以看到,經(jīng)過(guò)訓(xùn)練之后,特征與各種分類(lèi)的關(guān)聯(lián)性更加明確了。單詞“constrictor”屬于蛇的分類(lèi)概率更大,而單詞“dynamic”屬于編程語(yǔ)言的概率更大。
另一方便,有些特征的所屬分類(lèi)則沒(méi)有那么明確。比如:?jiǎn)卧~“and”出現(xiàn)在兩個(gè)分類(lèi)中的概率是差不多的(單詞and幾乎會(huì)出現(xiàn)在每一篇文檔中,不管它屬于哪一個(gè)分類(lèi)。)分類(lèi)器在經(jīng)過(guò)訓(xùn)練之后。只會(huì)保留一個(gè)附有相應(yīng)概率的特征列表,與某些其他的分類(lèi)方法不同,此處的原始數(shù)據(jù)在訓(xùn)練之后,就沒(méi)有必要再加以保存了。
分類(lèi)
當(dāng)一個(gè)貝葉斯分類(lèi)器經(jīng)過(guò)訓(xùn)練之后,我們就可以利用它來(lái)對(duì)新的項(xiàng)目進(jìn)行自動(dòng)分類(lèi)了。假定我們有一篇新的文檔,包含了“l(fā)ong” “dynamic” 和 “source”。
樸素貝葉斯分類(lèi)器是通過(guò)下面的公式將概率組合起來(lái)的: P( Category | Document) = P ( Document | Category ) * P( Category) / P(Document)
此處:
P( Document | Category) = P (Word1 | Category ) * P( Word2) / P(Category )
p( Document | Category) 的取值來(lái)自于上表,比如 P( dynamic | language) = 0.6
p(Category) 的取值則等于某個(gè)分類(lèi)出現(xiàn)的總體概率,因?yàn)椤?language ” 有一般的機(jī)會(huì)都會(huì)出現(xiàn),所以 P(language ) 的值為0.5 。無(wú)論是哪個(gè)分類(lèi),只要其P( Category | Document) 的值相對(duì)較高,它就是我們預(yù)期的分類(lèi)。
我們需要一個(gè)定義一個(gè)特征提取函數(shù),該函數(shù)的作用是將我們用以訓(xùn)練或分類(lèi)的數(shù)據(jù)轉(zhuǎn)化成一個(gè)特征列表。
docclass.getwords(‘python is a dynamic language’) {‘python’:1,‘dymaic’:1,‘language’:1}
上述函數(shù)可用于創(chuàng)建一個(gè)新的分類(lèi)器,針對(duì)字符串進(jìn)行訓(xùn)練: cl = docclass.nativebayes(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)行分類(lèi) cl.classify(‘dynamic programming’) u‘language’ cl.classify(‘boa constrictors’) u‘snake’
對(duì)于允許使用的分類(lèi)數(shù)量,此處并沒(méi)有任何的限制,但是為了使分類(lèi)器有一個(gè)良好的表現(xiàn),我們需要為每個(gè)分類(lèi)提供大量的樣本。
貝葉斯分類(lèi)器優(yōu)點(diǎn)和缺點(diǎn)
樸素貝葉斯分類(lèi)器與其他方法相比最大的優(yōu)勢(shì)或許就在于,它在接受大數(shù)據(jù)量訓(xùn)練和查詢(xún)時(shí)所具備的的高速度。即使選用超大規(guī)模的訓(xùn)練集,針對(duì)每個(gè)項(xiàng)目通常也只會(huì)有相對(duì)較少的特征數(shù),并且對(duì)項(xiàng)目的訓(xùn)練和分類(lèi)頁(yè)僅僅是針對(duì)特征概率的數(shù)學(xué)運(yùn)算而已。
尤其當(dāng)訓(xùn)練量逐漸遞增時(shí)則更加如此--在不借助任何舊有訓(xùn)練數(shù)據(jù)的前提下,每一組新的訓(xùn)練數(shù)據(jù)都有可能會(huì)引起概率值變化。對(duì)于一個(gè)如垃圾郵件過(guò)濾這樣的應(yīng)用程序而言,支持增量式訓(xùn)練的能力是非常重要的,因?yàn)檫^(guò)濾程序時(shí)常要對(duì)新到的郵件進(jìn)行訓(xùn)練,然后必須即可進(jìn)行相應(yīng)的調(diào)整;更何況,過(guò)濾程序也未必有權(quán)限訪問(wèn)已經(jīng)收到的所有郵件信息。
樸素貝葉斯分類(lèi)器的另一大優(yōu)勢(shì)是,對(duì)分類(lèi)器實(shí)際學(xué)習(xí)狀況的解釋還是相對(duì)簡(jiǎn)單的。由于每個(gè)特征的概率值都被保存了起來(lái),因此我們可以在任何時(shí)候查看數(shù)據(jù)庫(kù),找到最合適的特征來(lái)區(qū)分垃圾郵件和非垃圾郵件,或是編程語(yǔ)言和蛇。保存在數(shù)據(jù)庫(kù)中的這些信息都很有價(jià)值,它們有可能被用于其他的應(yīng)用程序,或者作為構(gòu)筑這些應(yīng)用程序的一個(gè)良好基礎(chǔ)。
樸素貝葉斯分類(lèi)器的最大缺陷就是,它無(wú)法處理基于特征組合所產(chǎn)生的變化結(jié)果。假設(shè)有如下這樣一個(gè)場(chǎng)景,我們正在嘗試從非垃圾郵件中鑒別出垃圾郵件來(lái):假設(shè)我們構(gòu)建的是一個(gè)Web應(yīng)用程序,因?yàn)閱卧~“online”市場(chǎng)會(huì)出現(xiàn)在你的工作郵件中。而你的好友則在一家藥店工作,并且喜歡給你發(fā)一些他碰巧在工作中遇到的奇聞趣事。同時(shí),和大多數(shù)不善于嚴(yán)密保護(hù)自己郵件地址的人一樣,偶爾你也會(huì)收到一封包含單詞”online pharmacy“的垃圾郵件。
也許你已經(jīng)看出此處的難點(diǎn)--我們往往會(huì)告訴分類(lèi)器”onlie“和”pharmacy“是出現(xiàn)在非垃圾郵件中的,因此這些單詞相對(duì)于非垃圾郵件的概率會(huì)高一些。當(dāng)我們告訴分類(lèi)器有一封包含單詞”onlie pharmacy“ 的郵件屬于垃圾郵件時(shí),則這些單詞的概率又會(huì)進(jìn)行相應(yīng)的調(diào)整,這就導(dǎo)致了一個(gè)經(jīng)常性的矛盾。由于特征的概率是單獨(dú)給出的,因此分類(lèi)器對(duì)于各種組合的情況一無(wú)所知。在文檔分類(lèi)中,這通常不是什么大問(wèn)題,因?yàn)橐环獍瑔卧~”online pharmacy“的郵件中可能還會(huì)有其他的特征可以說(shuō)明它是垃圾郵件,但是在面對(duì)其他問(wèn)題時(shí),理解特征的組合可能是至關(guān)重要的。
評(píng)論