Naive Bayes Classifier
常常我們會使用複雜的神經網路
來訓練模型進行像分類的動作,不過使用監督式(supervised)學習
的方法,我們必須有標註過後的資料才能訓練,這篇文章我們介紹,如何在不使用標註資料,而是像網路隨處可搜集到的語料,像是PTT
來完成主題分類
、關鍵字預測
、發現新詞
等功能
介紹
首先讓我們回顧一下Bayes Theorem
一篇文章該屬於哪一類,我們可以寫成
\[P(C \mid w_{1}, w_{2}, ..., w_{n}) = \frac{P(C) P(w_{1}, w_{2}, ..., w_{n} \mid C)}{P(w_{1}, w_{2}, ..., w_{3})}\]而Naive Bayes Classifier(樸素貝葉斯分類器)
之所以稱為Naive
,是因為假設各個屬性間是獨立的,在文章中則是指每個字跟別的字互相獨立
假設我們有多個類的主題,而要判斷文章是屬於哪一類的主題
\[P(C \mid w_{1}, w_{2}, ..., w_{n}) = \frac{P(C) P(w_{1}, w_{2}, ..., w_{n} | C)}{P(w_{1}, w_{2}, ..., w_{n})}\]因為是同一篇文章,所以分母是一樣的,於是我們得出
根據Naive
假設各字之間獨立,可得出
這麼一來,我們可以得出,最基本的以Unigram
為基礎的貝葉斯分類器公式,我們只要得出各個主題下的機率,比較誰的機率最大,即可求出最有可能的分類
關於 $P(w_{n} \mid C_{i})$ 如何求得,我們使用Unigram
來做估計,寫成以下式子
所以我們對每一類,都會去計算每個字$w_{i}$的對應機率$P(w_{i})$,然後可以計算出對應的似然值(Likelihood)
因此,其實貝葉斯分類器在進行的就是一種最大似然估計(MLE)
,而通常我們會轉成對數計算
語言模型
不過,通常我們不會使用Unigram
,而是使用Bigram
, Trigram
,差別就是每個字會依賴於前k
個字
此外,我們這是從前看到後
,我們也可以定義從後看到前
的k-gram
語言模型
實驗範例
我們對一個輸入句子 電腦每種顯卡的驅動程式都不同嗎
,進行貝葉斯分類,並用熱點圖(heatmap)
來顯示不同主題下每個 $P(C_{j} \mid w_{i})$ 的對數機率
可以看出,在電腦類(computer)的地方,對於像驅動
、程式
、電腦
這類的關鍵字,會賦予極高的機率,相比於其他分類而言,因此我們可以得知這句話,是該分於電腦類
利用這個道理,我們也可以抓出關鍵字,像這個例子,在哪些字可以明顯看出有些關鍵字在不同類別的機率落差較大,像是驅動
、程式
、電腦
這些地方,這些可以視為屬於該類別的關鍵字