樸素貝葉斯和文本分類I(引言和理論)
Naive Bayes and Text Classification I
https://arxiv.org/pdf/1410.5329
![]()
1 引言
始于半個多世紀前,科學家們開始嚴肅探討這樣一個問題:“我們能否構建一種模型,使其能從現有數據中學習,并自動做出正確的決策與預測?” 回顧過往,這一問題如今看來近乎修辭性質——答案已體現在模式分類、機器學習與人工智能等領域層出不窮的實際應用之中。
各類傳感設備采集的數據,結合強大的學習算法與領域知識,催生了諸多如今我們習以為常的偉大發明:例如通過谷歌等搜索引擎進行網絡查詢、郵局中的文字識別、超市中的條形碼掃描儀、疾病診斷、以及手機上 Siri 或 Google Now 的語音識別等。
預測建模的一個子領域是有監督模式分類(supervised pattern classification),其任務是基于帶標簽的訓練數據訓練模型,繼而用于為新樣本分配預定義的類別標簽。本文將貫穿探討的一個例子是:利用樸素貝葉斯分類器進行垃圾郵件過濾,以預測一條新文本消息是否屬于垃圾郵件(spam)或非垃圾郵件(not-spam)。樸素貝葉斯分類器是一類基于著名的貝葉斯概率定理的分類器,以其模型簡潔且性能良好而著稱,尤其在文檔分類與疾病預測等領域表現突出。
![]()
2 樸素貝葉斯分類
2.1 概述
樸素貝葉斯分類器是一類線性分類器,以其簡潔而高效著稱。其概率模型基于貝葉斯定理,“樸素”(naive)一詞源于其假設:數據集中的各特征彼此相互獨立。實踐中,這一獨立性假設通常并不成立,但即便在此不切實際的假設下,樸素貝葉斯分類器往往仍能取得良好性能[1]。尤其在小樣本情況下,其表現甚至可優于更復雜的強大模型[2]。
由于相對穩健、易于實現、速度快且準確率高,樸素貝葉斯分類器被廣泛應用于諸多領域,例如:疾病診斷與治療方案決策[3]、分類學研究中的RNA序列分類[4],以及電子郵件客戶端中的垃圾郵件過濾[5]。然而,若獨立性假設被嚴重違背,或面對非線性分類問題時,樸素貝葉斯分類器的性能可能顯著下降。我們必須牢記:數據類型與待解問題的性質共同決定了應選用何種分類模型。實踐中,強烈建議在特定數據集上對比多種分類模型,綜合考量其預測性能與計算效率。
在后續章節中,我們將深入探討樸素貝葉斯分類器的概率模型,并將其應用于一個簡單的示例問題;隨后,將利用一個公開的短信(SMS)數據集,在Python中訓練一個樸素貝葉斯分類器,以實現對未見消息的“垃圾短信(spam)”或“正常短信(ham)”分類。
2.2 后驗概率
為理解樸素貝葉斯分類器的工作原理,我們需簡要回顧貝葉斯法則(Bayes’ rule)的概念。由托馬斯·貝葉斯(Thomas Bayes, 1701–1761)提出的這一概率模型雖簡潔卻極為強大,其核心思想可用通俗語言表述如下:
![]()
貝葉斯定理構成了樸素貝葉斯分類整個概念的核心。在分類問題中,后驗概率可被解釋為:“在已觀測到某對象特征值的前提下,該對象屬于第 i i 類的概率是多少?”一個更具體的例子是:“在已知某人餐前與餐后血糖測量值的情況下,此人患有糖尿病的概率是多少?”
![]()
![]()
延續上述示例,我們可依據后驗概率將決策規則表述如下:
![]()
2.3 類條件概率
貝葉斯分類器的一個假設是:樣本服從獨立同分布(i.i.d.)。其中,i.i.d. 是 “independent and identically distributed”(獨立同分布)的縮寫,用于描述彼此相互獨立、且來自同一概率分布的隨機變量。所謂獨立性,指某一觀測值的出現概率不影響另一觀測值的概率(例如,時間序列與網絡圖數據并不滿足獨立性)。經典的獨立同分布變量例子是拋硬幣:第一次拋擲結果不影響第二次結果,依此類推;對于一枚公平硬幣而言,無論拋擲多少次,其正面向上的概率始終為 0.5。
樸素貝葉斯分類器的另一關鍵假設是特征的條件獨立性。在此“樸素”假設下,樣本的類條件概率(即似然)可直接從訓練數據中估計,而無需遍歷所有可能的特征向量 x x 組合。因此,對于一個 d d 維特征向量 x x,其類條件概率可按如下方式計算:
![]()
![]()
![]()
為通過實例說明這一概念,假設我們擁有一個包含 500 份文檔的集合,其中 100 份為垃圾郵件。現在,我們希望計算一條新消息 “Hello World” 在其為垃圾郵件條件下的類條件概率。此處,該模式由兩個特征組成:“hello” 和 “world”,而類條件概率即為以下兩項的乘積:“在消息為垃圾郵件的條件下出現 ‘hello’ 的概率” 與 “在消息為垃圾郵件的條件下出現 ‘world’ 的概率”。
![]()
然而,就條件獨立性的樸素假設而言,我們在此注意到了一個問題:該樸素假設認為,某個特定詞語的出現不會影響同一文檔中其他詞語出現的概率。例如,對于文本中同時出現的兩個詞 “peanut”(花生)和 “butter”(黃油),直覺告訴我們這一假設顯然不成立:若某文檔包含 “peanut”,則其同時包含 “butter”(或 “allergy”(過敏))的可能性將顯著提高。實踐中,條件獨立性假設的確經常被違背;但眾所周知,即便如此,樸素貝葉斯分類器仍往往表現良好[6]。
2.4 先驗概率
與頻率學派方法不同,此處引入了一個額外的先驗概率(prior probability,或簡稱 prior),可被解釋為先驗信念或先驗知識。
![]()
若先驗服從均勻分布,則后驗概率將完全由類條件概率與證據項(evidence term)決定;而由于證據項為常數,決策規則將完全取決于類條件概率(這與頻率學派方法及最大似然估計類似)。
最終,先驗知識可通過咨詢領域專家獲取,或通過對訓練數據進行估計獲得(前提是訓練數據是獨立同分布的,且為總體的代表性樣本)。最大似然估計方法可表述如下:
![]()
圖3展示了先驗概率對決策規則的影響。給定一個一維模式 (連續屬性,以“x”符號表示),其服從正態分布,并屬于兩個類別之一(藍色和綠色)。第一類(? = 藍色)的樣本來自均值為 = 4、標準差為 = 1 的正態分布;第二類(? = 綠色)的概率分布則以 = 10 為中心,具有相同的標準差 = 1。鐘形曲線表示從這兩個不同正態分布中抽取的樣本的概率密度。僅考慮類條件概率時,本例中的最大似然估計將是:
![]()
![]()
![]()
2.5 證據項
在定義了類條件概率與先驗概率之后,為計算后驗概率,僅剩一個項尚未明確,即證據項(evidence)。
證據項 P ( x )
可理解為:不考慮類別標簽,觀察到特定模式 x 的概率。結合后驗概率更形式化的定義:
![]()
2.6 多項式樸素貝葉斯——一個玩具示例
在介紹完樸素貝葉斯分類器的基本概念、后驗概率與決策規則后,讓我們通過一個基于圖4所示訓練集的簡單玩具示例進行演示。
![]()
![]()
2.6.1 最大似然估計
決策規則可定義為:
![]()
在樣本獨立同分布(i.i.d.)的假設下,先驗概率可通過最大似然估計獲得(即各類別標簽在訓練數據集中出現的頻率):
![]()
在“顏色”(color)與“形狀”(shape)兩個特征相互獨立的樸素假設下,類條件概率可簡化為各單個條件概率的乘積。
通過最大似然估計,例如 P ( blue ∣ ? ) 即為:在訓練數據集中所有屬于類別 “?” 的樣本中,觀察到“藍色”樣本的頻率。
![]()
現在,后驗概率可直接由類條件概率與先驗概率的乘積計算得出:
![]()
2.6.2 分類
綜上所述,只需將計算所得的后驗概率代入決策規則,即可對新樣本進行分類:
![]()
由于 0.18 > 0.15,該樣本可被分類為 “+”。進一步審視后驗概率的計算過程可見,這一簡單示例揭示了先驗概率對決策規則的影響:若兩類的先驗概率相等,則該新樣本將被分類為 “?” 而非 “+”。這一觀察也凸顯了代表性訓練數據集的重要性;實踐中,通常建議進一步咨詢領域專家,以合理設定先驗概率。
2.6.3 加法平滑(Additive Smoothing)
對于圖5所示樣本,分類過程是直接明了的;但若遇到一個“新”樣本,其顏色屬性取值(如“yellow”(黃色))在訓練數據集中未曾出現(見圖5),則情況將更為棘手。
![]()
若“黃色”未出現在訓練數據集中,則其類條件概率將為 0,進而導致后驗概率也為 0——因為后驗概率是先驗概率與類條件概率的乘積。
![]()
為避免零概率問題,可在多項式貝葉斯模型中加入一個額外的平滑項。加法平滑最常見的兩種形式是: Lidstone 平滑 (α < 1)與 拉普拉斯平滑 (α = 1)。
![]()
3 樸素貝葉斯與文本分類
本節將介紹將樸素貝葉斯模型應用于文本分類任務所需的一些核心概念和流程。盡管示例主要圍繞二分類問題——如將文本消息分類為“垃圾郵件(spam)”或“正常郵件(ham)”——但相同的方法同樣適用于多分類問題,例如將文檔劃分為不同主題領域(如“計算機科學”、“生物學”、“統計學”、“經濟學”、“政治學”等)。
3.1 詞袋模型(Bag of Words Model)
在模式分類中,最重要的子任務之一是特征提取與選擇;良好特征的三個主要標準如下:
- 顯著性(Salient)
:特征對于問題域而言應具有重要性和意義。
- 不變性(Invariant)
:該術語常用于圖像分類語境中,指特征對形變、縮放、旋轉等干擾因素不敏感。C. Yao 等人在《自然圖像中多方向文本檢測的旋轉不變特征》[7]中提供了一個很好的例子。
- 判別性(Discriminatory)
:所選特征在訓練分類器時,應包含足夠信息以有效區分不同模式。
在擬合模型并使用機器學習算法進行訓練之前,我們需要思考如何最佳地將文本文檔表示為特征向量。自然語言處理中常用的一種模型是所謂的詞袋模型(bag of words model)。該模型背后的思想正如其名般簡單:首先構建詞匯表——即訓練集中所有不同單詞的集合,每個單詞關聯一個出現頻次計數。該詞匯表可被理解為一組無冗余項的集合,其中單詞順序無關緊要。設為訓練數據集中的兩篇文檔:
![]()
基于這兩篇文檔,詞匯表可寫為:
![]()
隨后,可利用該詞匯表為各文檔構造 d d 維特征向量,其維度等于詞匯表中不同單詞的數量(即 d = ∣ V ∣
)。此過程稱為 向量化 (vectorization)。
![]()
鑒于表1中的示例,一個問題是:特征向量中的1和0表示的是二值計數(若單詞在特定文檔中出現則為1,否則為0),還是絕對計數(單詞在每篇文檔中出現的次數)?答案取決于所采用的樸素貝葉斯分類器的概率模型:是多項式模型(Multinomial)還是伯努利模型(Bernoulli)——關于這兩種概率模型的詳細內容見第3.3節與第3.4節。
3.1.1 分詞(Tokenization)
分詞是指將文本語料庫分解為若干獨立單元(即“詞元”,tokens)的一般性過程,這些單元可作為各類自然語言處理算法的輸入。通常,分詞還會伴隨其他可選的預處理步驟,例如:停用詞與標點符號的移除、詞干提取(stemming)或詞形還原(lemmatizing),以及n-gram的構建。以下是一個簡單而典型的分詞示例:將句子切分為單詞、去除標點、并將所有字母轉換為小寫。
![]()
3.1.2 停用詞
停用詞是文本語料庫中極為常見、因此被認為信息量較低的詞語(例如:so, and, or, the 等)。一種去除停用詞的方法是依據特定語言的停用詞詞典進行匹配過濾;另一種方法則是通過統計整個語料庫中所有詞的出現頻率,并依頻次排序來構建停用詞列表——將該列表轉化為無重復詞的集合后,即可用其從輸入文檔中移除排名前 n n 位的高頻詞。
![]()
3.1.3 詞干提取與詞形還原
詞干提取(Stemming)指將詞語還原為其詞根形式的過程。最早的詞干提取算法由 Martin F. Porter 于 1979 年提出,因此被稱為 Porter 詞干提取器(Porter stemmer)[8]。
![]()
詞干提取可能生成非真實存在的詞,例如上例中的 “thu”。與之不同,詞形還原(lemmatization)旨在獲取詞語的標準(語法正確)形式,即所謂的詞元(lemmas)。相較于詞干提取,詞形還原計算上更為復雜且開銷更大;實踐中,兩者對文本分類性能的影響均較為有限[9]。
![]()
上述詞干提取與詞形還原本例均借助 Python 的 NLTK 庫(http://www.nltk.org )實現。
3.1.4 N-grams
在 n-gram 模型中,一個詞元(token)可定義為長度為 n n 的連續單元序列。最簡單的情形是一元語法(unigram,即 1-gram),其中每個詞元恰好由一個單詞、字母或符號構成——此前所有示例均為一元語法。最優的 n n 值選擇取決于具體語言及應用場景。例如,Andelka Zecevic 在其研究中發現,對于判定塞爾維亞語文本的作者歸屬問題, 3 ≤ n ≤ 7
的 n-gram 效果最佳[10];而在另一項研究中,判定英文書籍作者時, 4 ≤ n ≤ 8
的 n-gram 準確率最高[11];Kanaris 等人則報告稱,在電子郵件反垃圾過濾任務中,3-gram 與 4-gram 表現良好[12]。
![]()
3.2 垃圾郵件分類的決策規則
在垃圾郵件分類背景下,基于后驗概率的樸素貝葉斯分類器決策規則可表示為:
![]()
如第 2.2 節所述,后驗概率是類條件概率與先驗概率的乘積;分母中的證據項(evidence term)可被省略,因其對兩類而言均為常數。
![]()
先驗概率可通過最大似然估計獲得,即基于訓練數據集中垃圾郵件(spam)與正常郵件(ham)的出現頻率:
![]()
假設每篇文檔中的詞語彼此條件獨立(依據樸素假設),則可采用兩種不同模型計算類條件概率:多元伯努利模型(Multi-variate Bernoulli model,見第 3.3 節)與多項式模型(Multinomial model,見第 3.4 節)。
3.3 多元伯努利樸素貝葉斯
多元伯努利模型基于二值數據:文檔特征向量中的每個詞元(token)取值為 1 或 0。特征向量維度為 m ,其中 m 為整個詞匯表中的單詞總數(見第 3.1 節);取值 1 表示該詞在當前文檔中出現,0 表示未出現。伯努利試驗可表示為:
![]()
3.4 多項式樸素貝葉斯
3.4.1 詞頻(Term Frequency)
除使用二值表示外,描述文本文檔的另一種常用方法是詞頻(term frequency, tf(t, d))。詞頻通常定義為:特定詞項 t t(即單詞或詞元)在文檔 d d 中出現的次數(該方法有時也稱為原始頻次(raw frequency))。實踐中,常將原始詞頻除以文檔長度進行歸一化處理。
![]()
3.4.2 詞頻–逆文檔頻率(Tf-idf)
詞頻–逆文檔頻率(Tf-idf)是描述文本文檔的另一種方法。它可被理解為一種加權的詞頻,尤其適用于文本語料庫中尚未移除停用詞的情形。Tf-idf 方法的基本假設是:一個詞的重要性與其在全部文檔中出現的頻率成反比。盡管 Tf-idf 最常用于文本挖掘任務中(如搜索引擎的網頁排序)對文檔按相關性進行排序,它亦可應用于樸素貝葉斯文本分類。
![]()
3.4.3 多元伯努利模型與多項式模型的性能比較
實證對比表明:當詞匯表規模相對較大時,多項式模型往往優于多元伯努利模型[13]。然而,機器學習算法的性能高度依賴于特征選擇的恰當性;就樸素貝葉斯分類器與文本分類而言,性能上的顯著差異往往源于停用詞移除、詞干提取及詞元長度等處理步驟的選擇[14]。實踐中,建議在比較研究中——涵蓋不同特征提取與選擇步驟的組合——先行評估多元伯努利模型與多項式模型的適用性,再據此作出選擇。
4 樸素貝葉斯模型的變體
迄今為止,我們已介紹了兩種適用于類別型數據的模型:多元伯努利模型(第 3.3 節)與多項式模型(第 3.4 節),以及兩種不同的類條件概率估計方法。在第 4.1 節中,我們將簡要介紹第三種模型:高斯樸素貝葉斯(Gaussian Naive Bayes)。
4.1 連續變量
文本分類是類別型數據的典型應用;但樸素貝葉斯亦可用于連續型數據。鳶尾花(Iris)數據集便是一個具有連續特征的有監督分類任務的簡單示例:該數據集包含以厘米為單位測量的花瓣與萼片的長度和寬度。針對連續數據應用樸素貝葉斯分類的一種策略是:對特征進行離散化處理,劃分為若干互斥類別;或采用高斯核來計算類條件概率。假設各特征的概率分布服從正態(高斯)分布,則高斯樸素貝葉斯模型可表述如下:
![]()
其中, μ μ(樣本均值)與 σ σ(標準差)為需從訓練數據中估計的參數。在樸素貝葉斯的條件獨立性假設下,類條件概率即可表示為各特征對應概率的乘積:
![]()
4.2 急切學習與惰性學習算法
作為急切學習器(eager learner),樸素貝葉斯分類器在對新樣本進行分類時通常速度較快。急切學習器指一類學習算法:一旦訓練數據可用,即刻從中學習一個模型;模型學習完成后,無需再次遍歷訓練數據即可進行新樣本預測。對急切學習器而言,計算開銷最大的階段是模型構建階段,而新樣本的分類則相對高效。
相比之下,惰性學習器(lazy learner)則會將訓練數據記憶下來,并在預測新樣本類別標簽時重新評估整個訓練集。惰性學習的優勢在于模型構建(訓練)階段相對快速;但其實際預測過程通常較慢,原因在于每次預測都需重新計算與訓練數據的關系。此外,惰性學習還需完整保存訓練數據,可能帶來較高的存儲開銷。k近鄰算法(k-nearest neighbor algorithm)是惰性學習的典型代表:每當遇到新樣本時,算法需重新查找其 k 個最近鄰樣本,并據此決定其類別標簽——例如采用多數投票規則(即賦予新樣本在 k 近鄰中最頻繁出現的類別標簽)。
原文鏈接:https://arxiv.org/pdf/1410.5329
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.