[机器学习]一个例子完美解释朴素贝叶斯分类器
何為“樸素”:屬性條件獨立性假設
如果已知條件不止一個屬性,二是多個呢,這個時候貝葉斯公式可以寫作
上述公式假設特征屬性 a1,a2??相互獨立,這也是“樸素”一詞的由來。另外,可以看到對于不同的分類,分母都是恒定的,而我們只想找到概率最大的類別,因此可以把分母省略,求條件概率的相對值,
????? 最簡單的解決方案通常是最強大的解決方案,而樸素貝葉斯就是一個很好的證明。盡管機器學習在過去幾年取得了巨大的進步,但樸素貝葉斯已被證明不僅簡單,而且快速、準確、可靠。它已經成功地用于許多項目中,而且它對自然語言處理(NLP)的問題的解決提供了很大的幫助。
???? 樸素貝葉斯是利用概率論和貝葉斯定理預測樣本類別(如新聞或客戶評論)的概率算法。它們是概率性的,這意味著它們計算給定樣本的每個類別的概率,然后輸出概率最高的樣本類別。他們獲得這些概率的方式是使用貝葉斯定理,它基于可能與該特征相關的條件的先前數據來描述特征的概率。
????? 我們將使用一種稱為多項式樸素貝葉斯的算法。我們將以一個例子的方式介紹應用于NLP的算法,所以最終不僅你會知道這個方法是如何工作的,而且還會知道為什么它可以工作。我們將使用一些先進的技術,使樸素貝葉斯與更復雜的機器學習算法(如SVM和神經網絡)可以相提并論。
一個簡單的例子
讓我們看一下這個例子在實踐中如何運作。假設我們正在建立一個分類器,說明文本是否涉及體育運動。我們的訓練集有5句話:
Text | Category |
A great game(一個偉大的比賽) | Sports(體育運動) |
The election was over(選舉結束) | Not sports(不是體育運動) |
Very clean match(沒內幕的比賽) | Sports(體育運動) |
A clean but forgettable game (一場難以忘記的比賽) | Sports(體育運動) |
It was a close election (這是一場勢均力敵的選舉) | Not sports(不是體育運動) |
由于樸素貝葉斯是一個概率分類器,我們想要計算句子“A very close game”?是體育運動的概率以及它不是體育運動的概率。
在數學上,我們想要的是P(Sports | a very close game)這個句子的類別是體育運動的概率。
但是我們如何計算這些概率呢?
特征工程
創建機器學習模型時,我們需要做的第一件事就是決定使用什么作為特征。例如,如果我們對健康進行分類,特征可能就是是一個人的身高,體重,性別等等。我們會排除對模型無用的東西,如人的名字或喜愛的顏色。
在這種情況下,我們甚至沒有數字特征。我們只有文字。我們需要以某種方式將此文本轉換成可以進行計算的數字。
那么我們該怎么辦?一般都是使用字頻。也就是說,我們忽略了詞序和句子的構造,把每一個文件作為單詞庫來處理。我們的特征將是這些詞的計數。盡管它似乎過于簡單化,但它的效果令人驚訝。
貝葉斯定理
貝葉斯定理在使用條件概率(如我們在這里做)時很有用,因為它為我們提供了一種方法來扭轉它們:P(A|B)=P(B|A)×P(A)/P(B)。在我們這種情況下,我們有P(sports | a very close game),所以使用這個定理我們可以逆轉條件概率:
因為對于我們的分類器,我們只是試圖找出哪個類別有更大的概率,我們可以舍棄除數,只是比較
這樣就更好理解了,因為我們可以實際計算這些概率!只要計算句子??“A very close game”?多少次出現在“?Sports”的訓練集中,將其除以總數,就可以獲得P(a very close game | Sports)。
有一個問題,但是我們的訓練集中并沒有出現“A very close game”,所以這個概率是零。除非我們要分類的每個句子都出現在我們的訓練集中,否則模型不會很有用。
Being Naive
我們假設一個句子中的每個單詞都與其他單詞無關。這意味著我們不再看整個句子,而是單個單詞。我們把P(A very close game)寫成:P(a very close game)=P(a)×P(very)×P(close)×P(game)?這個假設非常強大,但是非常有用。這使得整個模型能夠很好地處理可能被錯誤標簽的少量數據或數據。下一步將它應用到我們以前所說的:
P(a very close game|Sports)=P(a|Sports)×P(very|Sports)×P(close|Sports)×P(game|Sports)
現在,我們所有的這些單詞在我們的訓練集中實際出現了好幾次,我們可以計算出來!
計算概率
計算概率的過程其實只是在我們的訓練集中計數的過程。
首先,我們計算每個類別的先驗概率:對于訓練集中的給定句子,?P(體育運動)的概率為?。然后,P(非體育運動)是?。然后,在計算P(game | Sports)就是“game”有多少次出現在sports的樣品,然后除以sports的總數(11)。因此,P(game|Sports)=2/11。
但是,我們遇到了一個問題:“close”不會出現在任何sports樣本中!那就是說P(close | Sports)= 0。這是相當不方便的,因為我們將把它與其他概率相乘,所以我們最終會得到P(a|Sports)×P(very|Sports)×0×P(game|Sports)等于0。這樣做的事情根本不會給我們任何信息,所以我們必須找到一個辦法。
我們該怎么做呢?通過使用一種被稱為拉普拉斯平滑的方法:我們為每個計數添加1,所以它不會為零。為了平衡這一點,我們將可能的詞數加到除數,因此這部分將永遠不會大于1。在我們的案例中,可能的話是?[?“a”?,“great”?,“very”?,“over”?,'it'?,'but'?,'game'?,'election'?,'close'?,'clean'?,'the'?,'was'?,'forgettable'?,'match'?]?。
由于可能的單詞數是14,應用拉普拉斯平滑我們得到了。全部結果如下:
現在我們只是將所有的概率加倍,看看誰更大:
完美!我們的分類器給出了“A very close game”?是Sport類。
先進的技術
改進這個基本模型可以做很多事情。以下這些技術可以使樸素貝葉斯與更先進的方法效果相當。
- Removing stopwords(刪除停用詞)。這些常用的詞,不會真正地添加任何分類,例如,一個,有能力,還有其他,永遠等等。所以為了我們的目的,選舉結束將是選舉,一個非常接近的比賽將是非常接近的比賽。
- Lemmatizing words(單詞變體還原)。這是將不同的詞匯組合在一起的。所以選舉,大選,被選舉等將被分組在一起,算作同一個詞的更多出現。
- Using n-grams?(使用實例)。我們可以計算一些常用的實例,如“沒有內幕的比賽”和“勢均力敵的選舉”。而不只是一個字,一個字的進行計算。
- 使用TF-IDF。而不是只是計數頻率,我們可以做更高級的事情
本文由北郵@愛可可-愛生活推薦,阿里云云棲社區翻譯。
文章原標題《A practical explanation of a Naive Bayes classifier》
作者:Bruno Stecanella,機器學習愛好者,譯者:袁虎,審閱:
文章為簡譯,更為詳細的內容,請查看原文
總結
以上是生活随笔為你收集整理的[机器学习]一个例子完美解释朴素贝叶斯分类器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [深度学习]理解RNN, GRU, LS
- 下一篇: kakaotalk账号注册教程(disc