導航:首頁 > 源碼編譯 > 貝葉斯bayes分類演算法

貝葉斯bayes分類演算法

發布時間:2024-07-02 01:11:31

1. 貝葉斯演算法

貝葉斯演算法是統計學的一種分類方法,它是一類利用概率統計知識進行分類的演算法。

在許多場合,樸素貝葉斯分類演算法可以與決策樹和神經網路分類演算法相媲美,該演算法能運用到大型資料庫中,而且方法簡單、分類准確率高、速度快。

通常,用虛線代表NB所需的邊,用實線代表新增的邊。屬性Ai與Aj之間的邊意味著屬性Ai對類別變數C的影響還取決於屬性Aj的取值。這些增加的邊需滿足下列條件:類別變數沒有雙親結點,每個屬性有一個類別變數雙親結點和最多另外一個屬性作為其雙親結點。

由於在TAN演算法中考慮了n個屬性中(n-1)個兩兩屬性之間的關聯性,該演算法對屬性之間獨立性的假設有了一定程度的降低,但是屬性之間可能存在更多其它的關聯性仍沒有考慮,因此其適用范圍仍然受到限制。

2. 第10天:NLP補充——樸素貝葉斯(Naive-Bayes)

1、引言
  貝葉斯方法是一個歷史悠久,樸素貝葉斯中的樸素一詞的來源就是假設各特徵之間相互獨立。這一假設使得樸素貝葉斯演算法變得簡單,但有時會犧牲一定的分類准確率。當然有著堅實的理論基礎的方法,同時處理很多問題時直接而又高效,很多高級自然語言處理模型也可以從它演化而來。因此,學習貝葉斯方法,是研究自然語言處理問題的一個非常好的切入口。
2、貝葉斯公式
貝葉斯公式其實很簡單,但是很常用,就一行:

  而我們二分類問題的最終目的就是要判斷 P(「屬於某類」|「具有某特徵」) 是否大於1/2就夠了。貝葉斯方法把計算「具有某特徵的條件下屬於某類」的概率轉換成需要計算「屬於某類的條件下具有某特徵」的概率,而後者獲取方法就簡單多了,我們只需要找到一些包含已知特徵標簽的樣本,即可進行訓練。而樣本的類別標簽都是明確的,所以貝葉斯方法在機器學習里屬於有監督學習方法。
  這里再補充一下,一般『先驗概率』、『後驗概率』是相對出現的,比如 P(Y)與 P(Y|X) 是關於 Y的先驗概率與後驗概率, P(X)與 P(X|Y)是關於 X的先驗概率與後驗概率。
4、垃圾郵件識別
  我們可以通過一個例子來對郵件進行分類,識別垃圾郵件和普通郵件,如果我們選擇使用樸素貝葉斯分類器,那目標就是判斷 P(「垃圾郵件」|「具有某特徵」) 是否大於1/2。現在假設我們有垃圾郵件和正常郵件各1萬封作為訓練集。需要判斷以下這個郵件是否屬於垃圾郵件:

也就是判斷概率 P(「垃圾郵件」|「我司可辦理正規發票(保真)17%增值稅發票點數優惠!」)是否大於1/2。我們不難發現:通過上述的理解,也就是將其轉換成的這個概率,計算的方法:就是寫個計數器,然後+1 +1 +1統計出所有垃圾郵件和正常郵件中出現這句話的次數啊。也就是:

  於是當我們接觸到了中文NLP中,其中最為重要的技術之一:分詞!!!也就是把一整句話拆分成更細粒度的詞語來進行表示。另外,分詞之後去除標點符號、數字甚至無關成分(停用詞)是特徵預處理中的一項技術。我們觀察(「我」,「司」,「可」,「辦理」,「正規發票」,「保真」,「增值稅」,「發票」,「點數」,「優惠」),這可以理解成一個向量:向量的每一維度都表示著該特徵詞在文本中的特定位置存在。這種將特徵拆分成更小的單元,依據這些更靈活、更細粒度的特徵進行判斷的思維方式,在自然語言處理與機器學習中都是非常常見又有效的。因此貝葉斯公式就變成了:

1、樸素貝葉斯(Naive Bayes),「Naive」在何處?
  加上條件獨立假設的貝葉斯方法就是樸素貝葉斯方法(Naive Bayes)。將句子(「我」,「司」,「可」,「辦理」,「正規發票」) 中的 (「我」,「司」)與(「正規發票」)調換一下順序,就變成了一個新的句子(「正規發票」,「可」,「辦理」, 「我」, 「司」)。新句子與舊句子的意思完全不同。但由於乘法交換律,樸素貝葉斯方法中算出來二者的條件概率完全一樣!計算過程如下:

其中「發票」重復了三次。
3、處理重復詞語的三種方式
(1)、多項式模型:
  如果我們考慮重復詞語的情況,也就是說,重復的詞語我們視為其出現多次,直接按條件獨立假設的方式推導,則有:

統計計算 P(「詞語」|S)時也是如此。

我們掃描一下訓練集,發現「正規發票」這個詞從出現過!!! ,於是 P(「正規發票」|S)=0 …問題嚴重了,整個概率都變成0了!!!樸素貝葉斯方法面對一堆0,很凄慘地失效了…更殘酷的是這種情況其實很常見,因為哪怕訓練集再大,也可能有覆蓋不到的詞語。本質上還是樣本數量太少,不滿足大數定律,計算出來的概率失真 *。為了解決這樣的問題,一種分析思路就是直接不考慮這樣的詞語,但這種方法就相當於默認給P(「正規發票」|S)賦值為1。其實效果不太好,大量的統計信息給浪費掉了。我們進一步分析,既然可以默認賦值為1,為什麼不能默認賦值為一個很小的數?這就是平滑技術的基本思路,依舊保持著一貫的作風,朴實/土但是直接而有效。對於伯努利模型,P(「正規發票」|S)的一種平滑演算法是:

接下來的核心問題就是訓練出一個靠譜的分類器。首先需要有打好標簽的文本。這個好找,豆瓣影評上就有大量網友對之前電影的評價,並且對電影進行1星到5星的評價。我們可以認為3星以上的評論都是好評,3星以下的評論都是差評。這樣就分別得到了好評差評兩類的語料樣本。剩下就可以用樸素貝葉斯方法進行訓練了。基本思路如下:

但是由於自然語言的特點,在提取特徵的過程當中,有一些tricks需要注意:

當然經過以上的處理,情感分析還是會有一部分誤判。這里涉及到許多問題,都是情感分析的難點:

(2)、拼寫糾錯
  拼寫糾錯本質上也是一個分類問題。但按照錯誤類型不同,又分為兩種情況:

真詞錯誤復雜一些,我們將在接下來的文章中進行探討。而對於非詞錯誤,就可以直接採用貝葉斯方法,其基本思路如下:

訓練樣本1:該場景下的正常用詞語料庫,用於計算 P(候選詞i)。

訓練樣本2:該場景下錯誤詞與正確詞對應關系的語料庫,用於計算 P(錯誤詞|候選詞i)

當然,樸素貝葉斯也是有缺陷的。比如我們知道樸素貝葉斯的局限性來源於其條件獨立假設,它將文本看成是詞袋子模型,不考慮詞語之間的順序信息,例如:樸素貝葉斯會把「武松打死了老虎」與「老虎打死了武松」認作是一個意思。那麼有沒有一種方法提高其對詞語順序的識別能力呢?當然有,就是這里要提到的N-gram語言模型。接下來詳細給大家介紹N-gram語言模型。

1、從假設性獨立到聯合概率鏈規則
 與我們之前我們垃圾郵件識別中的條件獨立假設是一樣的:

4、N-gram實際應用舉例
(1)、詞性標注
  詞性標注是一個典型的多分類問題。常見的詞性包括名詞、動詞、形容詞、副詞等。而一個詞可能屬於多種詞性。如「愛」,可能是動詞,可能是形容詞,也可能是名詞。但是一般來說,「愛」作為動詞還是比較常見的。所以統一給「愛」分配為動詞准確率也還足夠高。這種最簡單粗暴的思想非常好實現,如果准確率要求不高則也比較常用。它只需要基於詞性標注語料庫做一個統計就夠了,連貝葉斯方法、最大似然法都不要用。詞性標注語料庫一般是由專業人員搜集好了的,長下面這個樣子。其中斜線後面的字母表示一種詞性,詞性越多說明語料庫分得越細;需要比較以下各概率的大小,選擇概率最大的詞性即可:

將公式進行以下改造,比較各概率的大小,選擇概率最大的詞性:

N-gram分類器是結合貝葉斯方法和語言模型的分類器。這里用 Y1,Y2分別表示這垃圾郵件和正常郵件,用 X表示被判斷的郵件的句子。根據貝葉斯公式有:

比較這些概率的大小,找出使得 P(Yi|X)最大的 Yi即可得到 X 所屬的分類(分詞方案)了。Yi作為分詞方案,其實就是個詞串,比如(「我司」,「可」,「辦理」,「正規發票」)(「我」,「司可辦」,「理正規」,「發票」),也就是一個向量了。而上面貝葉斯公式中 P(X|Yi)項的意思就是在分類方案 Yi的前提下,其對應句子為 X的概率。而無論分詞方案是(「我司」,「可」,「辦理」,「正規發票」)還是(「我」,「司可辦」,「理正規」,「發票」),或者其他什麼方案,其對應的句子都是「我司可辦理正規發票」。也就是說任意假想的一種分詞方式之下生成的句子總是唯一的(只需把分詞之間的分界符號扔掉剩下的內容都一樣)。於是可以將 P(X|Yi)看作是恆等於1的。這樣貝葉斯公式又進一步化簡成為:

也就是說我們

3. 樸素貝葉斯(Naive Bayes)演算法

樸素貝葉斯演算法屬於分類演算法。發源於古典數學理論,對缺失數據不太敏感,有穩定的分類效率,模型所需估計的參數很少,演算法比較簡單。

樸素貝葉斯演算法 貝葉斯 是說明這個演算法和貝葉斯定理有聯系,而 樸素 是因為處理實際的需要,做了一個簡化—— 假設每個特徵之間是獨立的 (如果研究的對象互相之間的影響很強,計算概率時考慮的問題非常復雜,做了獨立假設,就可以分解後進行研究),這是這個演算法模型與貝葉斯定理的區別。

將 x 作為特徵,y 作為類別,那公式左邊的 P(yi|x)就是說在知道特徵 x 的情況下,計算這個特徵屬於 yi 類的可能性大小。通過比較找出這個可能性的值最大的屬於哪一類,就將特徵 x 歸為這一類。

第3步的計算就是整個關鍵所在,計算依據是上面的貝葉斯公式。

對於每一個類的概率計算,公式右邊的分母的 P(x)都是相同的,所以可以不計算(我們只是對最終結果進行比較,不影響)。

P(yi)也稱為先驗概率,是 x 屬於 yi 類的一個概率,這個是通過歷史信息得到的(在程序實現的時候,歷史信息或者說先驗信息就是我們的訓練數據集),我們通過對訓練樣本數據進行統計,分別算出 x 屬於 y1,y2,...,yn 類的概率是多少,這個是比較容易得到的。

所以,主要是求 P(x|yi)= P(a1,a2,...,am|yi)

這個時候對於貝葉斯模型的 樸素 的獨立性假設就發揮作用了(綜合的計算變成了獨立計算後的綜合,簡化模型,極大地減少了計算的復雜程度):

P(a1,a2,...,am|yi) = P(a1|yi)P(a2|yi)...P(am|yi)

所以計算想要得到的東西如下:

一個程序簡例

4. 貝葉斯規則

全概率公式 :設試驗E的樣本空間為S,A為E的事件,B1,B2,...,Bn為S的一個劃分,並且P(Bi)>0(i=1,2,..,n) 那麼:
P(A)=P(A|B1)P(B1)+P(A|B2)PB2)+...+P(A|Bn)P(Bn)

全概率公式證明依據:P(A)=P(AS)=P(AB1)+P(AB2)...+P(ABn)=P(A|B1)P(B1)+P(A|B2)P(B2)+....P(A|Bn)P(Bn)
S是樣本空間,B1,B2,...,Bn是S的劃分

貝葉斯公式 :設試驗E的樣本空間為S,A為E的事件,B1,B2,..,Bn為S的一個劃分,且P(A)>0,P(Bi)>0(i=1,2,3,...,n)那麼:

貝葉斯公式分子證明依據(條件概率公式):P(Bi|A)=P(BiA)/P(A) P(BiA)=P(A|Bi)P(Bi)
貝葉斯公式分母證明依據(全概率公式)

貝葉斯規則以Thomas Bayes主教命名。
用來估計統計量的某種性質。
貝葉斯是用概率反映知識狀態的確定性程度,數據集可以直接觀測到,所以他不是隨機的。

貝葉斯推斷與其他統計學推斷方法截然不同。它建立在主觀判斷的基礎上,也就是說,你可以不需要客觀證據,先估計一個值,然後根據實際結果不斷修正。貝葉斯推斷需要大量逗虧的計算。

http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html

他是一種條件概率條件概率。 比如:在B發生時,A發生的可能性。
公式為:

公式中,事件Bi的概率為P(Bi),事件Bi已發生條件下事件A的概率為P(A│Bi),事件A發生條件下事件Bi的概率為P(Bi│A)。
用來計算簡單條件下發生的復雜事件。

正如以上所說:在B發生時,A發生的可能性。 P(A|B)
通過韋恩圖可以看到:

B發生時,A發生的概率:P(A|B)=P(A∩B)/P(B)
可以得到條件概率的推導過程如下:

等式合並:

最終得到:

P(類山察神別|特徵) = P(特徵|類別)P(類別)/P(特徵)

根據以往經驗和分析得到的概率。 往往作為 由因求果 問題中的 因 出現的概率。 又稱: 古典概率

(在觀測數據之前,我們將已知的知識表示成 先驗概率分布 但是一般而言我們會選擇一個相當寬泛的先驗(高熵),反映在觀測到的任何數據前,參數的高度不確定性)
(通常,先驗概率開始是相對均勻的分布或高熵的高斯分布,觀測數據通常會使後驗的熵下降)

在上述貝葉斯公式中,我們把P(A)稱為 先驗概率 。沒祥 (B事件發生之前,對A事件概率的一個判斷)
把P(A|B)稱為 後驗概率 。(事件B發生之後,對事件A概率的重新評估)
P(B|A)/P(B)稱為:可能性函數。 這是一個調整因子,使得預估概率更接近真實概率。

在一個通信系統中,在收到某個消息之後,接收端所了解到的該消息發送的概率稱為後驗概率。
他是在給出相關證據或者數據後得到的條件概率。
他指的是在得到結果的信息重新修正的概率。計算後驗概率必須以先驗概率為基礎。

後驗概率 = 先驗概率 * 調整因子

上述調整因子又叫 似然函數
他是關於統計模型參數的函數。
假定一個關於參數y,具有離散型概率分布P的隨機變數X,則在給定X的輸出x時,關於參數y的似然函數是:L(y|x)等於給定參數y後變數X的概率:
L(y|x) = P(X=x|y) = Py(x)

概率:用於已知一些參數的情況下,預測接下來的觀測所得到的結果。
似然:用於在已知某些觀測所得到的結果時,對有關食物的性質的參數進行估計。
似然函數可以理解為條件概率的逆反。

材料:
1:先驗概率:利用現有材料計算的。
2:後驗概率:利用先驗概率+補充材料計算的。
計算:
1:先驗概率:古典概率。
2:後驗概率:使用貝葉斯公式,使用樣本資料計算邏輯概率,還要使用概率分布,數理統計。

將復雜事件概率求解 轉化為: 不同情況下發生的簡單事件概率的和。
用來計算復雜事件的概率。

定義:假設{Bn:n=1,2,3,...}是一個概率空間的有限或者無限的分割(既Bn為一完備事件組),且每個集合Bn是一個可測集合,則對任意時間A有全概率公式:

通過條件概率的推導可以看到:P(A∩B) = P(A|B)P(B) = P(B|A)P(A)
帶入上述公式。

全概率公式,將對一復雜事件A的概率求解問題轉換為在不同情況下或者不同原因Bn下發生的簡單概率的求和問題。

現在我們有樣本空間S,事件A,A『和B。
韋恩圖:

從上圖給出:
P(B) = P(B∩A) + P(B∩A')
將條件概率推導中的公式有:
P(B∩A) = P(B|A)P(A)
將上述公式合並:
P(B) = P(B|A)P(A) + P(B|A')P(A')

解釋:如果A和A'構成樣本空間,那麼事件B的概率就是A和A』的概率分別乘以B對這兩個事件的條件概率之和。
公式另一寫法:

樸素貝葉斯演算法是假設各個特徵之間相互獨立。

假設一種特定的癌症,發病率為人口的1%。
如果得了這種癌症,檢查結果90%可能是呈陽性。
但是你並沒有患癌症,檢查結果還是呈陽性。所以,假設 如果你沒有患上這種特定癌症,有90%可能性是呈陰性的。 這通常叫做 特異性

問題:沒有任何症狀的情況下,你進行了檢查,檢查結果呈陽性, 那麼你認為患上這種特定癌症的可能性是多少?
之前的癌症概率是 1%,敏感型和特殊性是 90%,癌症測試結果呈陽性的人患病的概率有多大?
是: 百分之八又1/3

假定A事件表示得病,P(A)=0.001,這是 先驗概率 。(沒有做實驗之前,我們預計的發病率)
假定B事件表示陽性,那麼計算P=(A|B),這是 後驗概率 。(做了試驗後,對發病率的估計)
P(A|B)=P(A)P(B|A)/P(B)
用全概率公式,改寫分母:
P(A|B)=P(A)P(B|A)/(P(B|A)P(A)+P(B|A反)P(A反))

假設:現在我們有兩個人A和B,兩人寫郵件都會用到love,deal,life這三個單詞。
A使用三個單詞的頻率為:love=0.1,deal=0.8,life=0.1。
B使用三個單詞的頻率為:love=0.5,deal=0.2,life=0.3。
現在我們有很多封email,假設這封email作者是A或者B是等概率的,
現在有一封email,只包括life和deal兩個詞,那麼這封郵件的作者是A或者B的概率。

計算先驗概率
P(emailA) = P(lifeA)P(dealA)P(A) = 0.1* 0.8 * 0.5 = 0.04
P(emailB) = P(lifeB)P(dealB)P(B) = 0.3 * 0.2 * 0.5 = 0.03

當觀察到life和deal兩個詞的條件下,作者是A或者B的概率
計算後驗概率
P(emailA|"life,deal") = P(emailA) * f(x)(似然函數) = 0.04 * (1/(0.04+ 0.03)) = 0.57
P(emailB|"life,deal") = P(emialB) * f(x) = 0.03 * (1/(0.04+ 0.03)) = 0.43

全概率:
P(emailA|"life,deal") + P(emailB|"life,deal") = 1

閱讀全文

與貝葉斯bayes分類演算法相關的資料

熱點內容
伺服器如何組隊 瀏覽:194
壓縮機里加什麼油 瀏覽:757
解壓專用試題 瀏覽:566
做演算法一定要進大廠么 瀏覽:417
私有雲伺服器規劃 瀏覽:783
在桌面文件夾的文件怎麼找 瀏覽:930
圓形箍筋演算法 瀏覽:957
阿里雲伺服器c盤擴大會快嗎 瀏覽:256
新浪爬蟲java 瀏覽:483
c延遲命令 瀏覽:89
雲伺服器報警時間 瀏覽:642
洗車辦卡app從哪裡辦 瀏覽:629
php面向對象視頻 瀏覽:265
活塞式壓縮機維修 瀏覽:171
冰箱壓縮機電阻是多少 瀏覽:806
數據統計如何降低伺服器壓力 瀏覽:892
商家為什麼要伺服器序列號 瀏覽:584
linuxtcp多線程 瀏覽:424
如何將id加密 瀏覽:478
ab壓測命令 瀏覽:484