
數(shù)據(jù)挖掘系列樸素貝葉斯分類算法原理與實踐
隔了很久沒有寫數(shù)據(jù)挖掘系列的文章了,今天介紹一下樸素貝葉斯分類算法,講一下基本原理,再以文本分類實踐。
一個簡單的例子
樸素貝葉斯算法是一個典型的統(tǒng)計學習方法,主要理論基礎(chǔ)就是一個貝葉斯公式,貝葉斯公式的基本定義如下:
這個公式雖然看上去簡單,但它卻能總結(jié)歷史,預知未來。公式的右邊是總結(jié)歷史,公式的左邊是預知未來,如果把Y看出類別,X看出特征,P(Yk|X)就是在已知特征X的情況下求Yk類別的概率,而對P(Yk|X)的計算又全部轉(zhuǎn)化到類別Yk的特征分布上來。
舉個例子,大學的時候,某男生經(jīng)常去圖書室晚自習,發(fā)現(xiàn)他喜歡的那個女生也常去那個自習室,心中竊喜,于是每天買點好吃點在那個自習室蹲點等她來,可是人家女生不一定每天都來,眼看天氣漸漸炎熱,圖書館又不開空調(diào),如果那個女生沒有去自修室,該男生也就不去,每次男生鼓足勇氣說:“嘿,你明天還來不?”,“啊,不知道,看情況”。然后該男生每天就把她去自習室與否以及一些其他情況做一下記錄,用Y表示該女生是否去自習室,即Y={去,不去},X是跟去自修室有關(guān)聯(lián)的一系列條件,比如當天上了哪門主課,蹲點統(tǒng)計了一段時間后,該男生打算今天不再蹲點,而是先預測一下她會不會去,現(xiàn)在已經(jīng)知道了今天上了常微分方法這么主課,于是計算P(Y=去|常微分方程)與P(Y=不去|常微分方程),看哪個概率大,如果P(Y=去|常微分方程) >P(Y=不去|常微分方程),那這個男生不管多熱都屁顛屁顛去自習室了,否則不就去自習室受罪了。P(Y=去|常微分方程)的計算可以轉(zhuǎn)為計算以前她去的情況下,那天主課是常微分的概率P(常微分方程|Y=去),注意公式右邊的分母對每個類別(去/不去)都是一樣的,所以計算的時候忽略掉分母,這樣雖然得到的概率值已經(jīng)不再是0~1之間,但是其大小還是能選擇類別。
后來他發(fā)現(xiàn)還有一些其他條件可以挖,比如當天星期幾、當天的天氣,以及上一次與她在自修室的氣氛,統(tǒng)計了一段時間后,該男子一計算,發(fā)現(xiàn)不好算了,因為總結(jié)歷史的公式:
這里n=3,x(1)表示主課,x(2)表示天氣,x(3)表示星期幾,x(4)表示氣氛,Y仍然是{去,不去},現(xiàn)在主課有8門,天氣有晴、雨、陰三種、氣氛有A+,A,B+,B,C五種,那么總共需要估計的參數(shù)有8*3*7*5*2=1680個,每天只能收集到一條數(shù)據(jù),那么等湊齊1680條數(shù)據(jù)大學都畢業(yè)了,男生打呼不妙,于是做了一個獨立性假設(shè),假設(shè)這些影響她去自習室的原因是獨立互不相關(guān)的,于是
有了這個獨立假設(shè)后,需要估計的參數(shù)就變?yōu)椋?8+3+7+5)*2 = 46個了,而且每天收集的一條數(shù)據(jù),可以提供4個參數(shù),這樣該男生就預測越來越準了。
樸素貝葉斯分類器
講了上面的小故事,我們來樸素貝葉斯分類器的表示形式:
當特征為為x時,計算所有類別的條件概率,選取條件概率最大的類別作為待分類的類別。由于上公式的分母對每個類別都是一樣的,因此計算時可以不考慮分母,即
樸素貝葉斯的樸素體現(xiàn)在其對各個條件的獨立性假設(shè)上,加上獨立假設(shè)后,大大減少了參數(shù)假設(shè)空間?! ?/span>
在文本分類上的應用
文本分類的應用很多,比如垃圾郵件和垃圾短信的過濾就是一個2分類問題,新聞分類、文本情感分析等都可以看成是文本分類問題,分類問題由兩步組成:訓練和預測,要建立一個分類模型,至少需要有一個訓練數(shù)據(jù)集。貝葉斯模型可以很自然地應用到文本分類上:現(xiàn)在有一篇文檔d(Document),判斷它屬于哪個類別ck,只需要計算文檔d屬于哪一個類別的概率最大:
在分類問題中,我們并不是把所有的特征都用上,對一篇文檔d,我們只用其中的部分特征詞項<t1,t2,...,tnd>(nd表示d中的總詞條數(shù)目),因為很多詞項對分類是沒有價值的,比如一些停用詞“的,是,在”在每個類別中都會出現(xiàn),這個詞項還會模糊分類的決策面,關(guān)于特征詞的選取,我的這篇文章有介紹。用特征詞項表示文檔后,計算文檔d的類別轉(zhuǎn)化為:
注意P(Ck|d)只是正比于后面那部分公式,完整的計算還有一個分母,但我們前面討論了,對每個類別而已分母都是一樣的,于是在我們只需要計算分子就能夠進行分類了。實際的計算過程中,多個概率值P(tj|ck)的連乘很容易下溢出為0,因此轉(zhuǎn)化為對數(shù)計算,連乘就變成了累加:
我們只需要從訓練數(shù)據(jù)集中,計算每一個類別的出現(xiàn)概率P(ck)和每一個類別中各個特征詞項的概率P(tj|ck),而這些概率值的計算都采用最大似然估計,說到底就是統(tǒng)計每個詞在各個類別中出現(xiàn)的次數(shù)和各個類別的文檔的數(shù)目:
其中,Nck表示訓練集中ck類文檔的數(shù)目,N訓練集中文檔總數(shù);Tjk表示詞項tj在類別ck中出現(xiàn)的次數(shù),V是所有類別的詞項集合。這里對詞的位置作了獨立性假設(shè),即兩個詞只要它們出現(xiàn)的次數(shù)一樣,那不管它們在文檔的出現(xiàn)位置,它們大概率值P(tj|ck)都是一樣,這個位置獨立性假設(shè)與現(xiàn)實很不相符,比如“放馬屁”跟“馬放屁”表述的是不同的內(nèi)容,但實踐發(fā)現(xiàn),位置獨立性假設(shè)得到的模型準確率并不低,因為大多數(shù)文本分類都是靠詞的差異來區(qū)分,而不是詞的位置,如果考慮詞的位置,那么問題將表達相當復雜,以至于我們無從下手。
然后需要注意的一個問題是ti可能沒有出現(xiàn)在ck類別的訓練集,卻出現(xiàn)在ck類別的測試集合中,這樣因為Tik為0,導致連乘概率值都為0,其他特征詞出現(xiàn)得再多,該文檔也不會被分到ck類別,而且在對數(shù)累加的情況下,0值導致計算錯誤,處理這種問題的方法是采樣加1平滑,即認為每個詞在各個類別中都至少出現(xiàn)過一次,即
下面這個例子來自于參考文獻1,假設(shè)有如下的訓練集合測試集:
現(xiàn)在要計算docID為5的測試文檔是否屬于China類別,首先計算個各類的概率,P(c=China)=3/4,P(c!=China)=1/4,然后計算各個類中詞項的概率:
注意分母(8+6)中8表示China類的詞項出現(xiàn)的總次數(shù)是8,+6表示平滑,6是總詞項的個數(shù),然后計算測試文檔屬于各個類別的概率:
可以看出該測試文檔應該屬于CHina類別。
文本分類實踐
我找了搜狗的搜狐新聞數(shù)據(jù)的歷史簡潔版,總共包括汽車、財經(jīng)、it、健康等9類新聞,一共16289條新聞,搜狗給的數(shù)據(jù)是每一篇新聞用一個txt文件保存,我預處理了一下,把所有的新聞文檔保存在一個文本文件中,每一行是一篇新聞,同時保留新聞的id,id的首字母表示類標,預處理并分詞后的示例如下:
我用6289條新聞作為訓練集,剩余1萬條用于測試,采用互信息進行文本特征的提取,總共提取的特征詞是700個左右。
分類的結(jié)果如下:
總共10000條新聞,分類正確的8343條,正確率0.8343,這里主要是演示貝葉斯的分類過程,只考慮了正確率也沒有考慮其他評價指標,也沒有進行優(yōu)化。貝葉斯分類的效率高,訓練時,只需要掃描一遍訓練集,記錄每個詞出現(xiàn)的次數(shù),以及各類文檔出現(xiàn)的次數(shù),測試時也只需要掃描一次測試集,從運行效率這個角度而言,樸素貝葉斯的效率是最高的,而準確率也能達到一個理想的效果。
我的實現(xiàn)代碼如下:
代碼里面,計算特征詞與訓練模型、測試是分開的,需要修改main方法,比如計算特征詞:
訓練模型:
預測模型:
總結(jié)
本文介紹了樸素貝葉斯分類方法,還以文本分類為例,給出了一個具體應用的例子,樸素貝葉斯的樸素體現(xiàn)在條件變量之間的獨立性假設(shè),應用到文本分類上,作了兩個假設(shè),一是各個特征詞對分類的影響是獨立的,另一個是詞項在文檔中的順序是無關(guān)緊要的。樸素貝葉斯的獨立性假設(shè)在實際中并不成立,但在分類效上依然不錯,加上獨立性假設(shè)后,對與屬于類ck的謀篇文檔d,其p(ck|d)往往會估計過高,即本來預期p(ck|d)=0.55,而樸素貝葉斯卻計算得到p(ck|d)=0.99,但這并不影響分類結(jié)果,這是樸素貝葉斯分類器在文本分類上效果優(yōu)于預期的原因。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03