導航:首頁 > 源碼編譯 > 機器學習生動理解樸素貝葉斯演算法

機器學習生動理解樸素貝葉斯演算法

發布時間:2023-05-27 12:01:36

⑴ 分類演算法 - 樸素貝葉斯演算法

相信很多同學在高中或者大學的時候都學過貝葉斯原理,即條件原理。

現分別有 A、B 兩個容器,在容器 A 里分別有 7 個紅球和 3 個白球,在容器 B 里有 1 個紅球和 9 個白球,現已知從這兩個容器里任意抽出了一個紅球,問這個球來自容器 A 的概率是多少?

假設已經抽出紅球為事件 B,選中容器 A 為事件 A,則有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10,按照公式,則有:P(A|B) = (7/10)*(1/2) / (8/20) = 0.875

之所以稱為樸素貝葉斯, 是因為它假設每個輸入變數是獨立的。 現實生活中這種情況基本不滿足,但是這項技術對於絕大部分的復雜問題仍然非常有效。

樸素貝葉斯模型由兩種類型的概率組成:
1、每個類別的概率P(Cj);
2、每個屬性的條件概率P(Ai|Cj)。

為了訓練樸素貝葉斯模型,我們需要先給出訓練數據,以及這些數據對應的分類。那麼上面這兩個概率,也就是類別概率和條件概率。他們都可以從給出的訓練數據中計算出來。一旦計算出來,概率模型就可以使用貝葉斯原理對新數據進行預測。

貝葉斯原理、貝葉斯分類和樸素貝葉斯這三者之間是有區別的
貝葉斯原理是最大的概念,它解決了概率論中「逆向概率」的問題,在這個理論基礎上,人們設計出了貝葉斯分類器,樸素貝葉斯分類是貝葉斯分類器中的一種,也是最簡單,最常用的分類器。樸素貝葉斯之所以樸素是因為它假設屬性是相互獨立的,因此對實際情況有所約束, 如果屬性之間存在關聯,分類准確率會降低。

(1) 演算法邏輯簡單,易於實現
(2)分類過程中時空開銷小(假設特徵相互獨立,只會涉及到二維存儲)

(1)理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為樸素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。
(2)在屬性相關性較小時,樸素貝葉斯性能最為良好。對於這一點,有半樸素貝葉斯之類的演算法通過考慮部分關聯性適度改進。

庫有3種演算法:GaussianNB、MultinomialNB和BernoulliNB。
這三個類適用的分類場景各不相同,主要根據數據類型來進行模型的選擇。一般來說,如果樣本特徵的分布大部分是連續值,使用GaussianNB會比較好。如果如果樣本特徵的分大部分是多元離散值,使用MultinomialNB比較合適。而如果樣本特徵是二元離散值或者很稀疏的多元離散值,應該使用BernoulliNB。

⑵ 機器學習中常見演算法優缺點之樸素貝葉斯演算法

在機器學習中有很多演算法,而有一種演算法有著堅實的數學背景,並且被廣泛使用,這種演算法就是樸素貝葉斯演算法。當然,樸素貝葉斯演算法的優點有很多,但這種演算法的缺點也是我們不能忽視的,那麼大家知道不知道樸素貝葉斯演算法的優點和缺點是什麼呢?下面我們就給大家介紹一下這個問題。
那麼什麼是樸素貝葉斯演算法呢?其實樸素貝葉斯屬於生成式模型,也就是關於生成模型和判別式模型,主要還是在於是否需要求聯合分布,這種演算法是一種比較簡單的演算法,你只需做一堆計數即可。如果注有條件獨立性假設,樸素貝葉斯分類器的收斂速度將快於判別模型,比如邏輯回歸,所以你只需要較少的訓練數據即可。即使NB條件獨立假設不成立,NB分類器在實踐中仍然表現的很出色。它的主要缺點是它不能學習特徵間的相互作用,用mRMR中R來講,就是特徵冗餘。
那麼樸素貝葉斯演算法的優點是什麼呢?這種演算法的優點有五個,第一就是樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。第二就是對大數量訓練和查詢時具有較高的速度。即使使用超大規模的訓練集,針對每個項目通常也只會有相對較少的特徵數,並且對項目的訓練和分類也僅僅是特徵概率的數學運算而已。第三就是對小規模的數據表現很好,能個處理多分類任務,適合增量式訓練(即可以實時的對新增的樣本進行訓練)。第四就是對缺失數據不太敏感,演算法也比較簡單,常用於文本分類。第五就是樸素貝葉斯對結果解釋容易理解。
當然,樸素貝葉斯演算法的缺點也是很明顯的,樸素貝葉斯演算法的缺點有四點,第一就是需要計算先驗概率。第二就是分類決策存在錯誤率。第三就是對輸入數據的表達形式很敏感。第四就是對由於使用了樣本屬性獨立性的假設,所以如果樣本屬性有關聯時其效果不好。
那麼樸素貝葉斯應用領域是什麼呢?其實樸素貝葉斯演算法在欺詐檢測中使用較多。當然,我們還可以用樸素貝葉斯演算法來決定一封電子郵件是否是垃圾郵件。還可以用樸素貝葉斯演算法判斷一篇文章應該的類別,同時也能夠使用貝葉斯演算法去判斷一段文字表達的是積極的情緒還是消極的情緒。從中我們可以看出樸素貝葉斯演算法是一個十分實用的演算法。
在這篇文章中我們給大家介紹了關於樸素貝葉斯演算法優缺點的相關知識,通過對這些知識的講解相信大家已經對樸素貝葉斯演算法有了一定的了解,希望這篇文章能夠幫助大家。

⑶ 第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的。這樣貝葉斯公式又進一步化簡成為:

也就是說我們

⑷ 樸素貝葉斯

        在所有的機器學習分類演算法中,樸素貝葉斯和其他絕大多數的分類演算法都不同。對於大多數的分類演算法,比如決策樹,KNN,邏輯回歸,支持向量機等,他們都是判別方法,但是樸素貝葉斯卻是生成方法。

如何理解這句話,看例題:

        根據上述數據集,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥,性格不好,身高矮,不上進,請你判斷一下女生是嫁還是不嫁?

這里我們聯繫到樸素貝葉斯公式:

p(不帥、性格不好、身高矮、不上進|嫁) = p(不帥|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上進|嫁)---------->要使這個公式成立,需要各個特徵之間相互獨立。

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

1、假如沒有這個假設,那麼我們對右邊這些概率的估計其實是不可做的,這么說,我們這個例子有4個特徵,其中帥包括{帥,不帥},性格包括{不好,好,爆好},身高包括{高,矮,中},上進包括{不上進,上進},那麼四個特徵的聯合概率分布總共是4維空間,總個數為2*3*3*2=36個。36個,計算機掃描統計還可以,但是現實生活中,往往有非常多的特徵,每一個特徵的取值也是非常之多,那麼通過統計來估計後面概率的值,變得幾乎不可做,這也是為什麼需要假設特徵之間獨立的原因。

2、假如我們沒有假設特徵之間相互獨立,那麼我們統計的時候,就需要在整個特徵空間中去找,比如統計p(不帥、性格不好、身高矮、不上進|嫁)。我們就需要在嫁的條件下,去找四種特徵全滿足分別是不帥,性格不好,身高矮,不上進的人的個數,這樣的話,由於數據的稀疏性,很容易統計到0的情況。 這樣是不合適的。

        根據上面倆個原因,樸素貝葉斯法對條件概率分布做了條件獨立性的假設,由於這是一個較強的假設,樸素貝葉斯也由此得名!這一假設使得樸素貝葉斯法變得簡單,但有時會犧牲一定的分類准確率。

所以公式整理以後變為:

整理訓練數據中,嫁的樣本數如下:

分別計算各個概率:

p(嫁) = 6/12(總樣本數) = 1/2

p(不帥|嫁) = 3/6 = 1/2

p(性格不好|嫁)= 1/6

p(矮|嫁) = 1/6

p(不上進|嫁) = 1/6

總樣本為:

p(不帥) = 4/12 = 1/3

p(性格不好) = 4/12 = 1/3

p(身高矮) = 7/12

p(不上進) = 4/12 = 1/3

將以上概率帶入公式,就能得出嫁的概率。

總結:理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為樸素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。

而在屬性相關性較小時,樸素貝葉斯性能最 為良好。

⑸ 樸素貝葉斯演算法是什麼

樸素貝葉斯方法是在貝葉斯演算法的基礎上進行了相應的簡化,即假定給定目標值時屬性之間相互條件獨立。

也就是說沒有哪個屬性變數對於決策結果來說佔有著較大的比重,也沒有哪個屬性變數對於決策結果佔有著較小的比重。雖然這個簡化方式在一定程度上降低了貝葉斯分類演算法的分類效果,但是在實際的應用場景中,極大地簡化了貝葉斯方法的復雜性。

樸素貝葉斯分類(NBC)是以貝葉斯定理為基礎並且假設特徵條件之間相互獨立的方法,先通過已給定的訓練集,以特徵詞之間獨立作為前提假設,學習從輸入到輸出的聯合概率分布,再基於學習到的模型,輸入X求出使得後驗概率最大的輸出Y。

個人貢獻:

貝葉斯在數學方面主要研究概率論。他首先將歸納推理法用於概率論基礎理論,並創立了貝葉斯統計理論,對於統計決策函數、統計推斷、統計的估算等做出了貢獻。1763年發表了這方面的論著,對於現代概率論和數理統計都有很重要的作用。貝葉斯的另一著作《機會的學說概論》發表於1758年.貝葉斯所採用的許多術語被沿用至今。

他對統計推理的主要貢獻是使用了"逆概率"這個概念,並把它作為一種普遍的推理方法提出來。貝葉斯定理原本是概率論中的一個定理,這一定理可用一個數學公式來表達,這個公式就是著名的貝葉斯公式。

⑹ 樸素貝葉斯演算法

貝葉斯演算法是由英國數學家托馬斯·貝葉斯提出的,這個演算法的提出是為了解決「逆向概率」的問題。首先我們先來解釋下正向概率與逆向概率的含義:

正向概率 :假設一個箱子里有5個黃色球和5個白色球,隨機從箱子里拿出一個球,請問取出的是黃球的概率是多少?很容易計算P(黃球)= N(黃球)/N(黃球)+ N(白球) = 5/5+5 = 1/2。
逆向概率 :起初我們並不知道箱子里有多少個球,我們依次從箱子里取出10個球,發現這個10個球中有7個白球,3個黃球,那麼我們會根據我們觀察到的結果去推測箱子里白球與黃球的分布比例大概是7:3,但是我們無法推測出箱子里的球的個數。

貝葉斯演算法是一種基於概率統計的機器學習演算法,它會計算出每種情況發生的概率,然後對其進行分類,貝葉斯演算法經常用於文本分類問題和垃圾郵件過濾問題。假設有一篇新聞報道news report,我們使用貝葉斯演算法來判斷它們的類別,結果如下:
p(politics|news) = 0.2
p(entertainment|news) = 0.4
p(sports|news) = 0.7
因為p(sports|news)的概率最大,所以我們判斷這篇新聞報道為體育類報道。「|」左邊為要判斷的類別,右邊是我們給定的文章。

貝葉斯公式推導
接下來,我們將通過一個例子來推導貝葉斯公式。在一所學校里,男生和女生的比例分別是60%和40%,男生全部穿長褲,女生一半穿長褲,一半穿裙子。現迎面走來一個同學,你只能看清他(她)穿的是長褲,而無法分辨出他(她)的性別,請問他(她)是女生的概率?

下面我們逐步計算這個問題:
假設學校里的學生總數為N。
男生人數:N * P(boys),女生人數:N * P(girls)。
穿長褲的男生人數:N * P(boys) * P(pants|boys),其中P(pants|boys)是條件概率的表達形式,意思是男生中穿長褲的概率。因為男生都穿長褲,所以N * P(boys) * P(pants|boys) = 60% * N。
穿長褲的女生的人數:N * P(girs) * P(pants|girls) = 0.2 * N。
穿長褲的總人數:N * P(boys) * P(pants|boys) + N * P(girs) * P(pants|girls)
穿長褲的同學是女生的概率:P(girl|pants) = N * P(girs) * P(pants|girls) / N * P(boys) * P(pants|boys) + N * P(girs) * P(pants|girls) = P(girs)*P(pants|girls) / P(pants),分母用P(pants)表示穿長褲的概率。
最終結果:P(girl | pants) = P(pants | girl) * P(girl) / P(pants)
其中:P(girl)我們稱為先驗概率,是已知值,在這個例子中P(girl) = 40%。先驗概率:根據以往的經驗和分析得到的結果,先驗概率和其他條件的影響不受樣本影響。
P(girl | pants)我們稱為後驗概率,根據觀察到的結果,去反推是女生的概率。
貝葉斯數學表達式

貝葉斯演算法在垃圾郵件過濾中的應用
給定一封郵件,判定它是否屬於垃圾郵件?用D 來表示這封郵件,注意D 由N 個單片語成。我們用h+ 來表示垃圾郵件,h-表示正常郵件。
有貝葉斯公式可得:
P(h+ | D) = P(D | h+) * P(h+) / P(D)
P(h- | D) = P(D | h-) * P(h-) / P(D)
其中P(h+),P(h-)為先驗概率,假如我們有1000封郵件,其中有50封是垃圾郵件,其他都是正常郵件,那麼P(h+),P(h-)的概率就是已知的。兩個式子的分母都是P(D),所以P(D)對於最終結果的比較是沒有影響的。接下來就是要求P(D | h+),P(D | h-)垃圾郵件中或正常郵件中是郵件D的概率。
我們都知道一封郵件是由許多詞構成的,所以我們將P(D | h+)的表達式轉化為P(d1,d2,d3......dn | h+),就是看垃圾郵件中出現d1,d2...dn這些詞的概率是多少。
P(d1,d2,d3......dn | h+) = P(d1 | h+) * P(d2 |d1,h+) * P(d3 |d1,d2,h+) ...
這個式子計算起來非常困難,所以在這里我們做一個假設,假設每個詞都是獨立的並且互不影響,那麼這個式子就可以表示為:
P(d1,d2,d3......dn | h+) = P(d1 | h+) * P(d2 | h+) * P(d3 | h+) ...P(dn | h+)
P(h+ | D) = {P(d1 | h+) * P(d2 | h+) * P(d3 | h+) ...P(dn | h+)}* P(h+) / P(D)
上述這個式子我們就稱為樸素貝葉斯公式,樸素貝葉斯公式是對貝葉斯公式的簡化,它建立在每個條子互相獨立的基礎上。
在現實生活中,我們寫的每一句話中詞與詞之間肯定是有相互聯系,如果沒有聯系,那麼這句話是讀不通的。那麼為什麼樸素貝葉斯能夠在計算中使用,首先是計算簡單,其次對最終結果的影響非常小。
參考資料
1.唐宇迪,《機器學習與數據分析實戰》課程。
2.Peter,《機器學習實戰》。

⑺ 數據挖掘十大經典演算法(1)——樸素貝葉斯(Naive Bayes)

在此推出一個演算法系列的科普文章。我們大家在平時埋頭工程類工作之餘,也可以抽身對一些常見演算法進行了解,這不僅可以幫助我們拓寬思路,從另一個維度加深對計算機技術領域的理解,做到觸類旁通,同時也可以讓我們搞清楚一些既熟悉又陌生的領域——比如數據挖掘、大數據、機器學習——的基本原理,揭開它們的神秘面紗,了解到其實很多看似高深的領域,其實背後依據的基礎和原理也並不復雜。而且,掌握各類演算法的特點、優劣和適用場景,是真正從事數據挖掘工作的重中之重。只有熟悉演算法,才可能對紛繁復雜的現實問題合理建模,達到最佳預期效果。

本系列文章的目的是力求用最干練而生動的講述方式,為大家講解由國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 於2006年12月評選出的數據挖掘領域的十大經典演算法。它們包括:

本文作為本系列的第一篇,在介紹具體演算法之前,先簡單為大家鋪墊幾個數據挖掘領域的常見概念:

在數據挖掘領域,按照演算法本身的行為模式和使用目的,主要可以分為分類(classification),聚類(clustering)和回歸(regression)幾種,其中:

打幾個不恰當的比方

另外,還有一個經常有人問起的問題,就是 數據挖掘 機器學習 這兩個概念的區別,這里一句話闡明我自己的認識:機器學習是基礎,數據挖掘是應用。機器學習研製出各種各樣的演算法,數據挖掘根據應用場景把這些演算法合理運用起來,目的是達到最好的挖掘效果。

當然,以上的簡單總結一定不夠准確和嚴謹,更多的是為了方便大家理解打的比方。如果大家有更精當的理解,歡迎補充和交流。

好了,鋪墊了這么多,現在終於進入正題!
作為本系列入門的第一篇,先為大家介紹一個容易理解又很有趣的演算法—— 樸素貝葉斯

先站好隊,樸素貝葉斯是一個典型的 有監督的分類演算法

光從名字也可以想到,要想了解樸素貝葉斯,先要從 貝葉斯定理 說起。
貝葉斯定理是我們高中時代學過的一條概率學基礎定理,它描述了條件概率的計算方式。不要怕已經把這些知識還給了體育老師,相信你一看公式就能想起來。

P(A|B)表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式為:

其中,P(AB)表示A和B同時發生的概率,P(B)標識B事件本身的概率。

貝葉斯定理之所以有用,是因為我們在生活中經常遇到這種情況:我們可以很容易直接得出P(A|B),P(B|A)則很難直接得出,但我們更關心P(B|A)。

而貝葉斯定理就為我們打通從P(A|B)獲得P(B|A)的道路。
下面不加證明地直接給出貝葉斯定理:

有了貝葉斯定理這個基礎,下面來看看樸素貝葉斯演算法的基本思路。

你看,其思想就是這么的樸素。那麼,屬於每個分類的概率該怎麼計算呢?下面我們先祭出形式化語言!

那麼現在的關鍵就是如何計算第3步中的各個條件概率。我們可以這么做:

因為分母對於所有類別為常數,因為我們只要將分子最大化皆可。又因為各特徵屬性是條件獨立的,所以有:

如果你也跟我一樣,對形式化語言有嚴重生理反應,不要怕,直接跳過前面這一坨,我們通過一個鮮活的例子,用人類的語言再解釋一遍這個過程。

某個醫院早上收了六個門診病人,如下表。

現在又來了第七個病人,是一個打噴嚏的建築工人。請問他最有可能患有何種疾病?

本質上,這就是一個典型的分類問題, 症狀 職業 是特徵屬性, 疾病種類 是目標類別

根據 貝葉斯定理

可得

假定"打噴嚏"和"建築工人"這兩個特徵是獨立的,因此,上面的等式就變成了

這是可以計算的。

因此,這個打噴嚏的建築工人,有66%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震盪的概率。比較這幾個概率,就可以知道他最可能得什麼病。

接下來,我們再舉一個樸素貝葉斯演算法在實際中經常被使用的場景的例子—— 文本分類器 ,通常會用來識別垃圾郵件。
首先,我們可以把一封郵件的內容抽象為由若干關鍵片語成的集合,這樣是否包含每種關鍵詞就成了一封郵件的特徵值,而目標類別就是 屬於垃圾郵件 不屬於垃圾郵件

假設每個關鍵詞在一封郵件里出現與否的概率相互之間是獨立的,那麼只要我們有若干已經標記為垃圾郵件和非垃圾郵件的樣本作為訓練集,那麼就可以得出,在全部垃圾郵件(記為Trash)出現某個關鍵詞Wi的概率,即 P(Wi|Trash)

而我們最重要回答的問題是,給定一封郵件內容M,它屬於垃圾郵件的概率是多大,即 P(Trash|M)

根據貝葉斯定理,有

我們先來看分子:
P(M|Trash) 可以理解為在垃圾郵件這個范疇中遇見郵件M的概率,而一封郵件M是由若干單詞Wi獨立匯聚組成的,只要我們所掌握的單詞樣本足夠多,因此就可以得到

這些值我們之前已經可以得到了。

再來看分子里的另一部分 P(Trash) ,這個值也就是垃圾郵件的總體概率,這個值顯然很容易得到,用訓練集中垃圾郵件數除以總數即可。

而對於分母來說,我們雖然也可以去計算它,但實際上已經沒有必要了,因為我們要比較的 P(Trash|M) 和 P(non-Trash|M) 的分母都是一樣的,因此只需要比較分子大小即可。

這樣一來,我們就可以通過簡單的計算,比較郵件M屬於垃圾還是非垃圾二者誰的概率更大了。

樸素貝葉斯的英文叫做 Naive Bayes ,直譯過來其實是 天真的貝葉斯 ,那麼他到底天真在哪了呢?

這主要是因為樸素貝葉斯的基本假設是所有特徵值之間都是相互獨立的,這才使得概率直接相乘這種簡單計算方式得以實現。然而在現實生活中,各個特徵值之間往往存在一些關聯,比如上面的例子,一篇文章中不同單詞之間一定是有關聯的,比如有些詞總是容易同時出現。

因此,在經典樸素貝葉斯的基礎上,還有更為靈活的建模方式—— 貝葉斯網路(Bayesian Belief Networks, BBN) ,可以單獨指定特徵值之間的是否獨立。這里就不展開了,有興趣的同學們可以做進一步了解。

最後我們來對這個經典演算法做個點評:

優點:

缺點:

好了,對於 樸素貝葉斯 的介紹就到這里,不知道各位看完之後是否會對數據挖掘這個領域產生了一點興趣了呢?

閱讀全文

與機器學習生動理解樸素貝葉斯演算法相關的資料

熱點內容
linux命令cpu使用率 瀏覽:65
linux實用命令 瀏覽:236
傳奇引擎修改在線時間命令 瀏覽:107
php取域名中間 瀏覽:896
cad命令欄太小 瀏覽:830
php開發環境搭建eclipse 瀏覽:480
qt文件夾名稱大全 瀏覽:212
金山雲伺服器架構 瀏覽:230
安卓系統筆記本怎麼切換系統 瀏覽:618
u盤加密快2個小時還沒有搞完 瀏覽:93
小米有品商家版app叫什麼 瀏覽:94
行命令調用 瀏覽:436
菜鳥裹裹員用什麼app 瀏覽:273
窮查理寶典pdf下載 瀏覽:514
csgo您已被禁用此伺服器怎麼辦 瀏覽:398
打開加密軟體的方法 瀏覽:156
雲存儲伺服器可靠嗎 瀏覽:967
2核1g的雲伺服器能帶動游戲嘛 瀏覽:898
逆命20解壓碼 瀏覽:146
徐州辦犬證需要下載什麼app 瀏覽:1002