貝葉斯學習舉例--學習分類文本

jopen 8年前發布 | 21K 次閱讀 機器學習

“我感興趣的電子新聞稿”或“討論機器學習的萬維網頁”。在這兩種情況下,如果計算機可以精確地學習到目標概念,就可從大量在線文本文檔中自動過濾出最相關的文檔顯示給讀者。

這里描述了一個基于樸素貝葉斯分類器的文本分類的通用算法。

將要展示的樸素貝葉斯算法遵循以下的問題背景:

1、考慮實例空間X包含了所有的文本文檔(即任意長度的所有可能的單詞和標點符號串)。

2、給定某未知目標函數f(x) 的一組訓練樣例,f(x)的取值來自于某有限集合V。此任務是從訓練樣例中學習,以預測后續文本文檔的目標值。

作為示例,這里考慮的目標函數是:將文檔分類為對某人是否感興趣,使用目標值likedislike代表這兩類。

在應用樸素貝葉斯分類器時包含的兩個主要設計問題是:

1、首先要決定怎樣將任意文檔表示為屬性值的形式,

2、第二要決定如何估計樸素貝葉斯分類器所需的概率。


給定一文本文檔,(這里先考慮英文文檔),可對每個單詞的位置定義一個屬性,該屬性的值為在此位置上找到的英文單詞。該文本文檔如下例所示:

This is an example document for the naiveBayes classifier. This document contains only one paragraph, or two sentences.

這樣,上例中的文本被表示為19個屬性,對應19個單詞位置。第一個屬性的值為“This”,第二個為“is”,依次類推。注意較長的文檔也需要較多的屬性數目。


為了明確起見,假定我們有700個訓練文檔,并且已由人工將其分類為dislike,而另外300個文檔被分類為like

現在有了一個新文檔要分類。仍為明確起見,該文檔就是上面的兩句英文例子。在此情況下,可應用式樸素貝葉斯分類器如下



概括地講,樸素貝葉斯分類vNB是使該文檔中的單詞在此處被觀察到的概率最大的一個分類,它遵循通常的樸素貝葉斯獨立性假定。

獨立性假定


說明在此設定下在一個位置上出現某單詞的概率獨立于另外一個位置的單詞。

說明:這一假定在有些時候并不反映真實情況。例如,在某處觀察到單詞learning 的概率會因為它前一位置單詞是machine而增大。雖然此獨立性假定很不精確,但這里別無選擇,必須作此假定——沒有這個假定,要計算的概率項將極為龐大。幸運的是,在實踐中樸素貝葉斯學習器在許多文本分類問題中性能非常好,即使此獨立性假定不正確。

為使用上式計算vNB,需要估計概率項P(vi)和P(ai=wk|vi)。這里引入wk代表英文詞典中的第k個單詞。

1、前一項P(vi)可基于每一類在訓練數據中的比例很容易地得到(此例中P(like)=0.3且P(dislike)=0.7)。

2、如以往那樣,估計類別的條件概率(如P(a1)=“This”| P(dislike))要困難的多,因為必須對每個文本位置、英文單詞和目標值的組合計算此概率項。非常不幸,在英文詞匯中包含約5萬個不同單詞,然后本例中有2個可能的目標值和19個文本位置,所以必須從訓練數據中估計2×19×50000≈200萬個這樣的概率項。

       幸運的是,可以再引入一合理的假定以減少需要估計的概率數量。確切地講,可假定遇到一特定單詞wk的概率獨立于單詞所在位置。形式化的表述是,在給定目標分類的情況下,假定各屬性是獨立同分布的,即對所有的i,j, k, mP(ai=wk|vj)=P(am=wk|vj)。因此,為估計整個概率集合P(a1=wk|vj),P(a2=wk|vj),可通過一個位置無關的概率P(wk|vj),而不考慮單詞的位置。其效果是,現在只需要2×50000個不同的概率項P(wk|vj)。雖然這仍然是一個較大的數值,但卻是可管理的。注意到如果訓練數據有限,作此假定的一個主要優點在于,它使可用于估計每個所需概率的樣例數增加了,因此增加了估計的可靠程度。

為完成學習算法的設計,需要選擇一個方法估計概率項(估計概率的貝葉斯方法,也就是m-估計)。因此,對P(wk|vj)的估計為:


其中n為所有目標值為vj的訓練樣例中單詞位置的總數,nk是在n個單詞位置中找到wk的次數,而|Vocabulary|為訓練數據中的不同單詞(以及其他記號)的總數。

概括地說,最終的算法使用的樸素貝葉斯分類器假定單詞出現的概率與它在文本中的位置無關。

最終的算法顯示在下表中:

Learn_naive_Bayes_text(Examples, V)

Examples為一組文本文檔以及它們的目標值。V為所有可能目標值的集合。此函數作用是學習概率項P(wk|vj),它描述了從類別vj中的一個文檔中隨機抽取的一個單詞為英文單詞wk的概率。該函數也學習類別的先驗概率P(vj)。

1.收集Examples中所有的單詞、標點符號以及其他記號

     Vocabulary←在Examples中任意文本文檔中出現的所有單詞及記號的集合

2.計算所需要的概率項P(vj)和 P(wk|vj)

     對V中每個目標值vj

     docsjExamples中目標值為vj的文檔子集

     P(vj) ←

     Textj←將docsj中所有成員連接起來建立的單個文檔

     n←在Textj中不同單詞位置的總數

     對Vocabulary中每個單詞wk

     nk←單詞wk出現在Textj中的次數

     P(wk|vj) ←

 Classify_naive_Bayes_text(Doc)

對文檔Doc返回其估計的目標值。ai代表在Doc中的第i個位置上出現的單詞。

     positions←在Doc中包含的能在Vocabulary中找到的記號的所有單詞位置

    返回


在學習過程中,過程Learn-naive-Bayes-text分析所有訓練文檔,從中抽取出所有出現的單詞的記號;然后在不同目標類中計算其頻率以獲得必要的概率估計。以后,若給定一個待分類新實例,過程 Classify-naive-Bayes-text 使用此概率估計來按照公式計算VNB。注意在新文檔中出現但不在訓練集的文檔中的任何單詞將被簡單地忽略。


來自: http://blog.csdn.net//u011067360/article/details/22892607

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!