
分類算法之樸素貝葉斯分類(Naive Bayesian classification)
0、寫在前面的話
我個人一直很喜歡算法一類的東西,在我看來算法是人類智慧的精華,其中蘊含著無與倫比的美感。而每次將學過的算法應用到實際中,并解決了實際問題后,那種快感更是我在其它地方體會不到的。
一直想寫關于算法的博文,也曾寫過零散的兩篇,但也許是相比于工程性文章來說太小眾,并沒有引起大家的興趣。最近面臨畢業(yè)找工作,為了能給自己增加籌碼,決定再次復習算法方面的知識,我決定趁這個機會,寫一系列關于算法的文章。這樣做,主要是為了加強自己復習的效果,我想,如果能將復習的東西用自己的理解寫成文章,勢必比單純的讀書做題掌握的更牢固,也更能觸發(fā)自己的思考。如果能有感興趣的朋友從中有所收獲,那自然更好。
這個系列我將其命名為“算法雜貨鋪”,其原因就是這些文章一大特征就是“雜”,我不會專門討論堆棧、鏈表、二叉樹、查找、排序等任何一本數(shù)據(jù)結構教科書都會講的基礎內容,我會從一個“專題”出發(fā),如概率算法、分類算法、NP問題、遺傳算法等,然后做一個引申,可能會涉及到算法與數(shù)據(jù)結構、離散數(shù)學、概率論、統(tǒng)計學、運籌學、數(shù)據(jù)挖掘、形式語言與自動機等諸多方面,因此其內容結構就像一個雜貨鋪。當然,我會竭盡所能,盡量使內容“雜而不亂”。
1.1、摘要
貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統(tǒng)稱為貝葉斯分類。本文作為分類算法的第一篇,將首先介紹分類問題,對分類問題進行一個正式的定義。然后,介紹貝葉斯分類算法的基礎——貝葉斯定理。最后,通過實例討論貝葉斯分類中最簡單的一種:樸素貝葉斯分類。
1.2、分類問題綜述
對于分類問題,其實誰都不會陌生,說我們每個人每天都在執(zhí)行分類操作一點都不夸張,只是我們沒有意識到罷了。例如,當你看到一個陌生人,你的腦子下意識判斷TA是男是女;你可能經(jīng)常會走在路上對身旁的朋友說“這個人一看就很有錢、那邊有個非主流”之類的話,其實這就是一種分類操作。
從數(shù)學角度來說,分類問題可做如下定義:
已知集合:和
,確定映射規(guī)則
,使得任意
有且僅有一個
使得
成立。(不考慮模糊數(shù)學里的模糊集情況)
其中C叫做類別集合,其中每一個元素是一個類別,而I叫做項集合,其中每一個元素是一個待分類項,f叫做分類器。分類算法的任務就是構造分類器f。
這里要著重強調,分類問題往往采用經(jīng)驗性方法構造映射規(guī)則,即一般情況下的分類問題缺少足夠的信息來構造100%正確的映射規(guī)則,而是通過對經(jīng)驗數(shù)據(jù)的學習從而實現(xiàn)一定概率意義上正確的分類,因此所訓練出的分類器并不是一定能將每個待分類項準確映射到其分類,分類器的質量與分類器構造方法、待分類數(shù)據(jù)的特性以及訓練樣本數(shù)量等諸多因素有關。
例如,醫(yī)生對病人進行診斷就是一個典型的分類過程,任何一個醫(yī)生都無法直接看到病人的病情,只能觀察病人表現(xiàn)出的癥狀和各種化驗檢測數(shù)據(jù)來推斷病情,這時醫(yī)生就好比一個分類器,而這個醫(yī)生診斷的準確率,與他當初受到的教育方式(構造方法)、病人的癥狀是否突出(待分類數(shù)據(jù)的特性)以及醫(yī)生的經(jīng)驗多少(訓練樣本數(shù)量)都有密切關系。
1.3、貝葉斯分類的基礎——貝葉斯定理
每次提到貝葉斯定理,我心中的崇敬之情都油然而生,倒不是因為這個定理多高深,而是因為它特別有用。這個定理解決了現(xiàn)實生活里經(jīng)常遇到的問題:已知某條件概率,如何得到兩個事件交換后的概率,也就是在已知P(A|B)的情況下如何求得P(B|A)。這里先解釋什么是條件概率:
表示事件B已經(jīng)發(fā)生的前提下,事件A發(fā)生的概率,叫做事件B發(fā)生下事件A的條件概率。其基本求解公式為:
。
貝葉斯定理之所以有用,是因為我們在生活中經(jīng)常遇到這種情況:我們可以很容易直接得出P(A|B),P(B|A)則很難直接得出,但我們更關心P(B|A),貝葉斯定理就為我們打通從P(A|B)獲得P(B|A)的道路。
下面不加證明地直接給出貝葉斯定理:
1.4、樸素貝葉斯分類
1.4.1、樸素貝葉斯分類的原理與流程
樸素貝葉斯分類是一種十分簡單的分類算法,叫它樸素貝葉斯分類是因為這種方法的思想真的很樸素,樸素貝葉斯的思想基礎是這樣的:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認為此待分類項屬于哪個類別。通俗來說,就好比這么個道理,你在街上看到一個黑人,我問你你猜這哥們哪里來的,你十有八九猜非洲。為什么呢?因為黑人中非洲人的比率最高,當然人家也可能是美洲人或亞洲人,但在沒有其它可用信息下,我們會選擇條件概率最大的類別,這就是樸素貝葉斯的思想基礎。
樸素貝葉斯分類的正式定義如下:
1、設為一個待分類項,而每個a為x的一個特征屬性。
2、有類別集合。
3、計算。
4、如果,則
。
那么現(xiàn)在的關鍵就是如何計算第3步中的各個條件概率。我們可以這么做:
1、找到一個已知分類的待分類項集合,這個集合叫做訓練樣本集。
2、統(tǒng)計得到在各類別下各個特征屬性的條件概率估計。即。
3、如果各個特征屬性是條件獨立的,則根據(jù)貝葉斯定理有如下推導:
因為分母對于所有類別為常數(shù),因為我們只要將分子最大化皆可。又因為各特征屬性是條件獨立的,所以有:
根據(jù)上述分析,樸素貝葉斯分類的流程可以由下圖表示(暫時不考慮驗證):
可以看到,整個樸素貝葉斯分類分為三個階段:
第一階段——準備工作階段,這個階段的任務是為樸素貝葉斯分類做必要的準備,主要工作是根據(jù)具體情況確定特征屬性,并對每個特征屬性進行適當劃分,然后由人工對一部分待分類項進行分類,形成訓練樣本集合。這一階段的輸入是所有待分類數(shù)據(jù),輸出是特征屬性和訓練樣本。這一階段是整個樸素貝葉斯分類中唯一需要人工完成的階段,其質量對整個過程將有重要影響,分類器的質量很大程度上由特征屬性、特征屬性劃分及訓練樣本質量決定。
第二階段——分類器訓練階段,這個階段的任務就是生成分類器,主要工作是計算每個類別在訓練樣本中的出現(xiàn)頻率及每個特征屬性劃分對每個類別的條件概率估計,并將結果記錄。其輸入是特征屬性和訓練樣本,輸出是分類器。這一階段是機械性階段,根據(jù)前面討論的公式可以由程序自動計算完成。
第三階段——應用階段。這個階段的任務是使用分類器對待分類項進行分類,其輸入是分類器和待分類項,輸出是待分類項與類別的映射關系。這一階段也是機械性階段,由程序完成。
1.4.2、估計類別下特征屬性劃分的條件概率及Laplace校準
這一節(jié)討論P(a|y)的估計。
由上文看出,計算各個劃分的條件概率P(a|y)是樸素貝葉斯分類的關鍵性步驟,當特征屬性為離散值時,只要很方便的統(tǒng)計訓練樣本中各個劃分在每個類別中出現(xiàn)的頻率即可用來估計P(a|y),下面重點討論特征屬性是連續(xù)值的情況。
當特征屬性為連續(xù)值時,通常假定其值服從高斯分布(也稱正態(tài)分布)。即:
而
因此只要計算出訓練樣本中各個類別中此特征項劃分的各均值和標準差,代入上述公式即可得到需要的估計值。均值與標準差的計算在此不再贅述。
另一個需要討論的問題就是當P(a|y)=0怎么辦,當某個類別下某個特征項劃分沒有出現(xiàn)時,就是產(chǎn)生這種現(xiàn)象,這會令分類器質量大大降低。為了解決這個問題,我們引入Laplace校準,它的思想非常簡單,就是對沒類別下所有劃分的計數(shù)加1,這樣如果訓練樣本集數(shù)量充分大時,并不會對結果產(chǎn)生影響,并且解決了上述頻率為0的尷尬局面。
1.4.3、樸素貝葉斯分類實例:檢測SNS社區(qū)中不真實賬號
下面討論一個使用樸素貝葉斯分類解決實際問題的例子,為了簡單起見,對例子中的數(shù)據(jù)做了適當?shù)暮喕?
這個問題是這樣的,對于SNS社區(qū)來說,不真實賬號(使用虛假身份或用戶的小號)是一個普遍存在的問題,作為SNS社區(qū)的運營商,希望可以檢測出這些不真實賬號,從而在一些運營分析報告中避免這些賬號的干擾,亦可以加強對SNS社區(qū)的了解與監(jiān)管。
如果通過純人工檢測,需要耗費大量的人力,效率也十分低下,如能引入自動檢測機制,必將大大提升工作效率。這個問題說白了,就是要將社區(qū)中所有賬號在真實賬號和不真實賬號兩個類別上進行分類,下面我們一步一步實現(xiàn)這個過程。
首先設C=0表示真實賬號,C=1表示不真實賬號。
1、確定特征屬性及劃分
這一步要找出可以幫助我們區(qū)分真實賬號與不真實賬號的特征屬性,在實際應用中,特征屬性的數(shù)量是很多的,劃分也會比較細致,但這里為了簡單起見,我們用少量的特征屬性以及較粗的劃分,并對數(shù)據(jù)做了修改。
我們選擇三個特征屬性:a1:日志數(shù)量/注冊天數(shù),a2:好友數(shù)量/注冊天數(shù),a3:是否使用真實頭像。在SNS社區(qū)中這三項都是可以直接從數(shù)據(jù)庫里得到或計算出來的。
下面給出劃分:a1:{a<=0.05, 0.05=0.2},a1:{a<=0.1, 0.1=0.8},a3:{a=0(不是),a=1(是)}。
2、獲取訓練樣本
這里使用運維人員曾經(jīng)人工檢測過的1萬個賬號作為訓練樣本。
3、計算訓練樣本中每個類別的頻率
用訓練樣本中真實賬號和不真實賬號數(shù)量分別除以一萬,得到:
4、計算每個類別條件下各個特征屬性劃分的頻率
5、使用分類器進行鑒別
下面我們使用上面訓練得到的分類器鑒別一個賬號,這個賬號使用非真實頭像,日志數(shù)量與注冊天數(shù)的比率為0.1,好友數(shù)與注冊天數(shù)的比率為0.2。
可以看到,雖然這個用戶沒有使用真實頭像,但是通過分類器的鑒別,更傾向于將此賬號歸入真實賬號類別。這個例子也展示了當特征屬性充分多時,樸素貝葉斯分類對個別屬性的抗干擾性。
1.5、分類器的評價
雖然后續(xù)還會提到其它分類算法,不過這里我想先提一下如何評價分類器的質量。
首先要定義,分類器的正確率指分類器正確分類的項目占所有被分類項目的比率。
通常使用回歸測試來評估分類器的準確率,最簡單的方法是用構造完成的分類器對訓練數(shù)據(jù)進行分類,然后根據(jù)結果給出正確率評估。但這不是一個好方法,因為使用訓練數(shù)據(jù)作為檢測數(shù)據(jù)有可能因為過分擬合而導致結果過于樂觀,所以一種更好的方法是在構造初期將訓練數(shù)據(jù)一分為二,用一部分構造分類器,然后用另一部分檢測分類器的準確率。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅動決策的時代浪潮下,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è)務的價值轉化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結束)并非工作的終點,而是將數(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ù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調研數(shù)據(jù)中的深度應用? 市場調研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅動力,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