文字分類演算法之 貝葉斯文字分類演算法

2021-07-10 04:52:12 字數 3521 閱讀 6077

文字分類過程

例如文件:

good good study day day up

可以用乙個文字特徵向量來表示,

x=(good, good, study, day, day , up)

。在文字分類中,假設我們有乙個文件d∈

x,類別

c又稱為標籤。我們把一堆打了標籤的文件集合

作為訓練樣本,

∈x×c

。例如:

=對於這個只有一句話的文件,我們把它歸類到

china

,即打上

china

標籤。

樸素貝葉斯分類器是一種有監督學習,常見有兩種模型,多項式模型

(multinomial model)

即為詞頻型和伯努利模型

(bernoulli model)

即文件型。二者的計算粒度不一樣,多項式模型以單詞為粒度,伯努利模型以檔案為粒度,因此二者的先驗概率和類條件概率的計算方法都不同。計算後驗概率時,對於乙個文件

d,多項式模型中,只有在

d中出現過的單詞,才會參與後驗概率計算,伯努利模型中,沒有在

d中出現,但是在全域性單詞表中出現的單詞,也會參與計算,不過是作為「反方

」參與的。這裡暫不考慮特徵抽取、為避免消除測試文件時類條件概率中有為

0現象而做的取對數等問題。

2.1

多項式模型

1)基本原理

在多項式模型中,

設某文件

d=(t1,t2,…,tk),tk

是該文件中出現過的單詞,允許重複,則

先驗概率

p(c)= 類c

下單詞總數

/整個訓練樣本的單詞總數

類條件概率

p(tk|c)=(類c

下單詞tk

在各個文件中出現過的次數之和

+1)/(類c

下單詞總數

+|v|) v

是訓練樣本的單詞表(即抽取單詞,單詞出現多次,只算乙個),

|v|則表示訓練樣本包含多少種單詞。

p(tk|c)

可以看作是單詞

tk在證明

d屬於類

c上提供了多大的證據,而

p(c)

則可以認為是類別

c在整體上佔多大比例

(有多大可能性)。

2)舉例

給定一組分好類的文字訓練資料,如下:

docid

doc 類別

in c=china? 1

chinese beijing chinese

yes 2

chinese chinese shanghai

yes 3

chinese macao

yes 4

tokyo japan chinese no

給定乙個新樣本

chinese chinese chinese tokyo japan

,對其進行分類。該文字用屬性向量表示為

d=(chinese, chinese, chinese, tokyo, japan)

,類別集合為y=。

類yes下總共有

8個單詞,類

no下總共有

3個單詞,訓練樣本單詞總數為

11,因此

p(yes)=8/11, p(no)=3/11

。類條件概率計算如下:

p(chinese | yes)=(5+1)/(8+6)=6/14=3/7

p(japan | yes)=p(tokyo | yes)= (0+1)/(8+6)=1/14

p(chinese|no)=(1+1)/(3+6)=2/9

p(japan|no)=p(tokyo| no) =(1+1)/(3+6)=2/9

分母中的

8,是指

yes類別下

textc

的長度,也即訓練樣本的單詞總數,

6是指訓練樣本有

chinese,beijing,shanghai, macao, tokyo, japan 共6

個單詞,3是指

no類下共有

3個單詞。

有了以上類條件概率,開始計算後驗概率:

p(yes | d)=(3/7)3×1/14×1/14×8/11=108/184877≈0.00058417

p(no | d)= (2/9)3×2/9×2/9×3/11=32/216513≈0.00014780

比較大小,即可知道這個文件屬於類別

china。

2.2

伯努利模型

1)基本原理

p(c)= 類c

下檔案總數

/整個訓練樣本的檔案總數

p(tk|c)=(類c

下包含單詞

tk的檔案數

+1)/(類c

下樣本總數

+2)

2)舉例

使用前面例子中的資料,模型換成伯努利模型。 類

yes下總共有

3個檔案,類

no下有

1個檔案,訓練樣本檔案總數為

11,因此

p(yes)=3/4, p(chinese | yes)=(3+1)/(3+2)=4/5

,條件概率如下:

p(japan | yes)=p(tokyo | yes)=(0+1)/(3+2)=1/5

p(beijing | yes)= p(macao|yes)= p(shanghai |yes)=(1+1)/(3+2)=2/5

p(chinese|no)=(1+1)/(1+2)=2/3

p(japan|no)=p(tokyo| no) =(1+1)/(1+2)=2/3

p(beijing| no)= p(macao| no)= p(shanghai | no)=(0+1)/(1+2)=1/3

有了以上類條件概率,開始計算後驗概率,

p(yes|d)=p(yes)×p(chinese|yes)×p(japan|yes)×p(tokyo|yes)×(1-p(beijing|yes))×(1-p(shanghai|yes))×(1-p(macao|yes))=3/4×4/5×1/5×1/5×(1-2/5) ×(1-2/5)×(1-2/5)=81/15625≈0.005

p(no|d)= 1/4×2/3×2/3×2/3×(1-1/3)×(1-1/3)×(1-1/3)=16/729≈0.022

因此,這個文件不屬於類別

china。

後記:文字分類是作為離散型資料的,以前糊塗是把連續型與離散型弄混一塊了,樸素貝葉斯用於很多方面,資料就會有連續和離散的,連續型時可用正態分佈,還可用區間,將資料的各屬性分成幾個區間段進行概率計算,測試時看其屬性的值在哪個區間就用哪個條件概率。再有tf、tdidf,這些只是描述事物屬性時的不同計算方法,例如文字分類時,可以用單詞在本文件中出現的次數描述乙個文件,可以用出現還是沒出現即0和1來描述,還可以用單詞在本類文件中出現的次數與這個單詞在剩餘類出現的次數(降低此屬性對某類的重要性)相結合來表述。

貝葉斯文字分類原理

1 貝葉斯定理 貝葉斯條件概率公式的核心思想是利用容易知道的條件概率來推導出感興趣的條件概率,公式如下 p b a p a b p b p a 想要知道a發生後發生b的概率,可以用b發生後發生a的概率乘以b發生的概率再除a發生的概率。2 貝葉斯定理在文字分類中的具體使用原理 我們知道文字都是由乙個個...

sklearn 樸素貝葉斯文字分類5

在這次的貝葉斯試驗中,用到了交叉驗證,就是假如把資料集分成10份,每次取其中的乙份作為test資料,會得到10個測試的準確率,我們可以求10份的平均值,作為這一次的準確率。當我們求出測試集的矩陣大小為 18846,173452 我們可以看出17萬個詞,其實在選擇特徵時用不了這麼多,接下來我們看一下選...

TextBlob實戰之樸素貝葉斯文字分類

1.準備資料集 訓練集和測試集 train i love this sandwich.pos this is an amazing place pos i feel very good about these beers.pos this is my best work.pos what an aw...