數據挖掘算法之聚類分析(三)朴素貝葉斯算法


貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類

對於分類問題,其實誰都不會陌生,每個人生活中無時不刻的在進行着分類。例如,走在大馬路上看到女孩子,你會下意識的將她分為漂亮和不漂亮(漂亮當然就多看幾眼啦)。在比如,在路上遇到一只狗,你會根據這只狗的毛發臟不臟,然后想到這是一只流浪狗還是家養的寵物狗。這些其實都是生活中的分類操作。

而貝葉斯分類是在生活中分類的基礎上加以概率數學來規定定義的一種分類方式

其基本概率公式為:


怎么理解這個公式呢,這里假設你沒有概率數學的基礎,或者說學過概率只是很久沒用已經忘得差不多了(比如我。。。重新拿起大二的概率統計課本翻了一遍)

首先解釋什么是條件概率:

      表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。

求解這個概率的基本求解公式為:

假設AB兩個事件是相互獨立的(就是說AB兩個事件誰發生都不影響誰,比如,同學A在北京感冒了,我在福建感冒了,兩個事件是互不影響的)

事件B發生的前提下 A發生的概率=事件AB同時發生的概率/事件B發生的概率

一般在生活中,P(A|B)發生的概率我們很容易的就可以求得,但是要返回來求P(B|A)怎么辦?

這就要用到貝葉斯公式了


根據這個公式我們可以再P(A|B)的基礎上對P(B|A)進行計算,貝葉斯公式提供了人們一種可以根據結果來計算某個條件的前提下某個事件發生的概率

以上基礎知識交代完畢,下面進入正題

 朴素貝葉斯分類是貝葉斯分類中的一種十分簡單的分類算法,看到朴素兩個字就知道這種貝葉斯分類肯定很鄉村~,用通俗的話來講就是:你在國外旅游,遇見一個說中文的黃種人,那么你肯定會想,老鄉啊!中國人!為啥?因為在國外遇到講中文的大概都是中國人吧,只有一部分人是華僑或者其他國籍的華人,因為是中國人的概率最高,所以我們會認為他就是中國人,這就是朴素貝葉斯的思想。

朴素貝葉斯的思想嚴格的定義是這樣的:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別。其中在求解某個待分類項出現的條件下,各個類別出現的概率時,一般是根據該待分類項的特征屬性來求的。

怎么理解呢,比如在什么藝校或者空乘的招聘現場,那肯定有n多女孩子,這些女孩子就是待分類項,而女孩子在我們眼中一般只是分為漂亮和不漂亮兩種,這兩種就是類別,現在用朴素貝葉斯算法來對這n個女孩子進行分類。

女孩集合={x1,x2.....xn}----->此為待分類項

類別集合={漂亮,不漂亮}

首先我們要找出女孩子的一些特征屬性,比如臉蛋,身材等(假設就根據這兩個特征來判斷)

對於女孩的特征屬性={臉蛋,身材}

對於其中一個女孩子,求此項出現的條件下各個類別出現的概率,一般是根據該待分類項的特征屬性來求的,意思就是說,要根據這個女孩子的臉蛋(好看或者不好看)分別求出 在此臉蛋出現的前提下 是漂亮和不漂亮的概率;根據這個女孩子的身材(高矮胖瘦)分別求出 在此身材的前提下 是漂亮和不漂亮的概率。

但是,就比如說,一個在深山野林總生活了幾十年從未見過女人的野人來說,如果他出山碰到一個女人,這個女人是他這輩子見到的第一個女人,那他憑什么來說這個女人是漂亮還是不漂亮的呢?根據臉蛋和身材?但是注意前提:這個野人之前從未見過女人,可能發生的情況是就算這個女人很丑,由於野人沒有見過女人,他也會覺得很漂亮很性感,有一種莫名的吸引力

如上所說,生活中許許多多的判斷都是建立在有經驗的基礎之上,正是因為我們周圍有很多女同志,而且我們能夠通過網絡來看到更多的漂亮女孩子,所以我們能夠在路上判斷一個女孩是否漂亮

而之前我們要計算的  :要根據這個女孩子的臉蛋(好看或者不好看)分別求出 在此臉蛋出現的前提下 是漂亮和不漂亮的概率;根據這個女孩子的身材(高矮胖瘦)分別求出 在此身材的前提下 是漂亮和不漂亮的概率。

我們首先要有“經驗”才能計算,所以我們需要一個女孩集合,然后分別對其的臉蛋和身材進行判斷,得出這個女孩是否漂亮。這個女孩集合稱為訓練樣本,沒有訓練樣本貝葉斯分類將無法工作,因為它不知道如何判斷

那么假設:我們處理完訓練樣本之后得到以下數據(這個過程為人為處理的,也是貝葉斯分類中唯一一個人為處理的步驟)

P(漂亮|臉蛋好看)=0.9

P(漂亮|臉蛋不好看)=0.1

P(漂亮|身材高)=0.6

P(漂亮|身材矮)=0.4

P(漂亮|身材胖)=0.3

P(漂亮|身材瘦)=0.5

P(不漂亮|臉蛋好看)=0.1

P(不漂亮|臉蛋不好看)=0.9

P(不漂亮|身材高)=0.4

P(不漂亮|身材矮)=0.7

P(不漂亮|身材胖)=0.8

P(不漂亮|身材瘦)=0.3


P(漂亮)=0.6

P(不漂亮)=0.4

我們得到的數據為在各個類別的前提下,各個特征屬性出現的概率

這時候,如果給出一個女孩x1,臉蛋好看,身材矮,瘦,貝葉斯分類就可以根據訓練樣本的數據來判斷x1是否漂亮

根據貝葉斯定理:

P(漂亮|女孩x1)=P(女孩x1|漂亮)*P(漂亮)/P(女孩x1)

P(不漂亮|女孩x1)=P(女孩x1|不漂亮)*P(不漂亮)/P(女孩x1)

由於P(女孩x1)對於所有類別(漂亮,不漂亮)是個常數,所以將分子最大化即可,變形如下:

P(女孩x1|漂亮)*P(漂亮)=P(漂亮|女孩x1)=P(漂亮|臉蛋好看)*P(漂亮|身材矮)*P(漂亮|身材瘦)*P(漂亮)=0.9*0.4*0.5*0.6=0.018

P(女孩x1|不漂亮)*P(不漂亮)=P(不漂亮|女孩x1)=P(不漂亮|臉蛋好看)*P(漂亮|身材矮)*P(漂亮|身材瘦)*P(漂亮)=0.1*0.7*0.3*0.4=0.084

由於0.084>0.018

所以貝葉斯分類會將女孩x歸入不漂亮的類別中


由於所有的數據都是假設的,所以結果不准確那是肯定的(因為我自己覺得臉蛋好看,身材矮,瘦應該是屬於漂亮的。。最后計算出來竟然是相反的)

從這里面可以知道,訓練樣本和特征屬性的划分對於貝葉斯分類是十分重要的!這將決定整個貝葉斯分類器計算結果的准確性


總結一下之前的例子中,貝葉斯分類的處理過程

      朴素貝葉斯分類的正式定義如下:

      1、設為一個待分類項,而每個a為x的一個特征屬性。

      2、有類別集合

      3、計算

      4、如果,則

      那么現在的關鍵就是如何計算第3步中的各個條件概率。

      1、找到一個已知分類的待分類項集合,這個集合叫做訓練樣本集。

      2、統計得到在各類別下各個特征屬性的條件概率估計。即

      3、如果各個特征屬性是條件獨立的,則根據貝葉斯定理有如下推導:

      

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

      

      根據上述分析,朴素貝葉斯分類的流程可以由下圖表示:

      可以看到,整個朴素貝葉斯分類分為三個階段:

      第一階段——准備工作階段,這個階段的任務是為朴素貝葉斯分類做必要的准備,主要工作是根據具體情況確定特征屬性,並對每個特征屬性進行適當划分,然后由人工對一部分待分類項進行分類,形成訓練樣本集合。這一階段的輸入是所有待分類數據,輸出是特征屬性和訓練樣本。這一階段是整個朴素貝葉斯分類中唯一需要人工完成的階段,其質量對整個過程將有重要影響,分類器的質量很大程度上由特征屬性、特征屬性划分及訓練樣本質量決定。

      第二階段——分類器訓練階段,這個階段的任務就是生成分類器,主要工作是計算每個類別在訓練樣本中的出現頻率及每個特征屬性划分對每個類別的條件概率估計,並將結果記錄。其輸入是特征屬性和訓練樣本,輸出是分類器。這一階段是機械性階段,根據前面討論的公式可以由程序自動計算完成。

      第三階段——應用階段。這個階段的任務是使用分類器對待分類項進行分類,其輸入是分類器和待分類項,輸出是待分類項與類別的映射關系。這一階段也是機械性階段,由程序完成。

訓練完畢之后的貝葉斯分類器就可以處理我們交給他的任何數據,並根據訓練結果將其分類

以上有些段落摘選自算法雜貨鋪——分類算法之朴素貝葉斯分類(Naive Bayesian classification)

作者寫的比較有才華也比較深奧,建議去看看,本文僅作筆記之用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM