樸素貝葉斯(Naive Bayesian Model)
1、定義:
貝葉斯定理是關於隨機事件A和B的條件概率(或邊緣概率)的一則定理。其中P(A|B)是在B發生的情況下A發生的可能性。
貝葉斯法事概率論你框架下實施決策的基本方法,對分類任務來說,在所有相關概率都已知的情況下,如何運用這些概率來推測,分類
樸素貝葉斯最核心的部分是貝葉斯法則,而貝葉斯法則的基石是條件概率
條件概率公式
設A,B是兩個事件,且P(B)>0,則在事件B發生的條件下,事件A發生的條件概爲:
由條件概率可以推斷出貝葉斯公式:
換個形象的表達形式,如下:
我們最終求的p(類別|特徵)即可!
我們把P(A)稱爲"先驗概率",即在B事件發生之前,我們對A事件概率的一個判斷。P(A|B)稱爲"後驗概率",即在B事件發生之後,我們對A事件概率的重新評估。P(B|A)/P(B)稱爲"可能性函數",這是一個調整因子,使得預估概率更接近真實概率。
所以,條件概率可以理解成下面的式子:後驗概率 = 先驗概率 x 調整因子
這就是貝葉斯推斷的含義。我們先預估一個"先驗概率"P(A),然後加入實驗結果B,如果實驗增強了"先驗概率",我們就可以得到更接近事實的"後驗概率"。
1、"可能性函數"P(B|A)/P(B)>1,"先驗概率"被增強,事件A的發生的可能性變大
2、"可能性函數"P(B|A)/P(B)=1,意味着B事件無助於判斷事件A的可能性;
3、"可能性函數"P(B|A)/P(B)<1,意味着"先驗概率"被削弱,事件A的可能性變小。
例題分析
下面我先給出例子問題。
給定數據如下:
現在給我們的問題是,如果一對男女朋友,男生想女生求婚,男生的四個特點分別是不帥、性格不好、身高矮和不上進,請你判斷一下女生是嫁還是不嫁?
這是一個典型的分類問題,轉爲數學問題就是比較
p(嫁 | (不帥、性格不好、身高矮、不上進))
與
p(不嫁 | (不帥、性格不好、身高矮、不上進))
的概率,誰的概率大,我就能給出嫁或者不嫁的答案!
這裏我們聯繫到樸素貝葉斯公式:
我們需要求p(嫁|(不帥、性格不好、身高矮、不上進),這是我們不知道的,但是通過樸素貝葉斯公式可以轉化爲好求的三個量.
我們將上面公式整理一下如下:
下面我將一個一個的進行統計計算(在數據量很大的時候,根據中心極限定理,頻率是等於概率的,這裏只是一個例子,所以我就進行統計即可)。
p(嫁)=?
首先我們整理訓練數據中,嫁的樣本數如下
則 p(嫁) = 6/12(總樣本數) = 1/2
p(不帥|嫁)=?統計滿足樣本數如下:
則p(不帥|嫁) = 3/6 = 1/2 在嫁的條件下,看不帥有多少
我們把所有已知的概率帶入公式,就可以得出
= (1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)
p (不嫁|不帥、性格不好、身高矮、不上進) = ((1/6*1/2*1*1/2)*1/2)/(1/3*1/3*7/12*1/3)
p (不嫁|不帥、性格不好、身高矮、不上進) > p (嫁|不帥、性格不好、身高矮、不上進)
得出不嫁的結論
2、貝葉斯 ==》 樸素貝葉斯
由概率論的知識我們可以知道,這個等式成立是有條件的,這個條件就是特徵之間相互獨立。(然而實際當中,特徵值之間往往不是相互獨立的)
這就是樸素貝葉斯分類有樸素一詞的來源,
樸素貝葉斯算法 = 貝葉斯算法 + 各個特徵之間相互獨立(限定條件)
這一假設使得貝葉斯法變得簡單,但有時會犧牲一定的分類準確率。
=================================
但是爲什麼需要假設特徵之間相互獨立呢?
1、我們這麼想,假如沒有這個假設,那麼我們對右邊這些概率的估計其實是不可做的,這麼說,我們這個例子有4個特徵,其中帥包括{帥,不帥},性格包括{不好,好,爆好},身高包括{高,矮,中},上進包括{不上進,上進},他們是相互關聯的,那麼四個特徵的聯合概率分佈總共是4維空間,總個數爲2*3*3*2=36個。
36個,計算機掃描統計還可以,但是現實生活中,往往有非常多的特徵,每一個特徵的取值也是非常之多,那麼通過統計來估計後面概率的值,變得幾乎不可做,這也是爲什麼需要假設特徵之間獨立的原因。
2、假如我們沒有假設特徵之間相互獨立,那麼我們統計的時候,就需要在整個特徵空間中去找,比如統計p(不帥、性格不好、身高矮、不上進|嫁),
我們就需要在嫁的條件下,去找四種特徵全滿足分別是不帥,性格不好,身高矮,不上進的人的個數,這樣的話,由於數據的稀疏性,很容易統計到0的情況。 這樣是不合適的。
根據上面倆個原因,樸素貝葉斯法對條件概率分佈做了條件獨立性的假設,由於這是一個較強的假設,樸素貝葉斯也由此得名!這一假設使得樸素貝葉斯法變得簡單,但有時會犧牲一定的分類準確率。
================================
3、貝葉斯網絡
樸素貝葉斯算法在計算概率值上是假設各個特徵是相互獨立的。貝葉斯網絡則將各個特徵之間的關聯考慮進去。
貝葉斯網絡,又稱信念網絡,或有向無環圖模型,是一種概率圖模型。它是一種模擬人類推理過程中因果關係的不確定性處理模型,其網絡拓樸結構是一個有向無環圖(DAG)。
貝葉斯網絡的有向無環圖中的節點表示隨機變量,它們可以是可觀察到的變量,或隱變量、未知參數等。認爲有因果關係(或非條件獨立)的變量或命題則用箭頭來連接。若兩個節點間以一個單箭頭連接在一起,表示其中一個節點是“因(parents)”,另一個是“果(children)”,兩節點就會產生一個條件概率值。
=================================
貝葉斯網絡概率的計算很簡單,是從聯合概率分佈公式中變換所得,下面是聯合概率分佈公式:
而在貝葉斯網絡中,由於存在前述的關係存在,該公式就被簡化爲了如下:
其中Parent(xi),表示的是xi的前驅結點,如果還不理解,可以對照我後面的代碼,自行調試分析。
=================================
3、優缺點
優點:
§ 樸素貝葉斯模型發源於古典數學理論,有着堅實的數學基礎,以及穩定的分類效率。
§ 對小規模的數據表現很好,能個處理多分類任務,適合增量式訓練;
§ 對缺失數據不太敏感,算法也比較簡單,常用於文本分類。
缺點:
§ 需要計算先驗概率;
§ 分類決策存在錯誤率;
§ 對輸入數據的表達形式很敏感。
4、應用場景
對於在小數據集上有顯著特徵的相關對象,樸素貝葉斯方法可對其進行快速分類
§ 中文分詞領域
§ 統計機器翻譯
§ 多用於文本分類,
§ 垃圾郵件過濾
§ 拼寫檢查/糾正器的文章
§ 情感分析
§ 消費者分類
===彩蛋===
=================================
P(我們猜測他想輸入的單詞 | 他實際輸入的單詞)
這個概率。並找出那個使得這個概率最大的猜測單詞。顯然,我們的猜測未必是唯一的,就像前面舉的那個自然語言的歧義性的例子一樣;這裏,比如用戶輸入: thew ,那麼他到底是想輸入 the ,還是想輸入 thaw ?到底哪個猜測可能性更大呢?幸運的是我們可以用貝葉斯公式來直接出它們各自的概率,我們不妨將我們的多個猜測記爲 h1 h2 .. ( h 代表 hypothesis),它們都屬於一個有限且離散的猜測空間 H (單詞總共就那麼多而已),將用戶實際輸入的單詞記爲 D ( D 代表 Data ,即觀測數據),
=================================