樸素貝葉斯分類:原理

貝葉斯原理是英國數學家托馬斯·貝葉斯提出的。貝葉斯是個很神奇的人,他的經歷類似梵高。生前沒有得到重視,死後,他寫的一篇關於歸納推理的論文被朋友翻了出來,並發表了。這一發表不要緊,結果這篇論文的思想直接影響了接下來兩個多世紀的統計學,是科學史上著名的論文之一。

貝葉斯原理

貝葉斯爲了解決一個叫“逆向概率”問題寫了一篇文章,嘗試解答在沒有太多可靠證據的情況下,怎樣做出更符合數學邏輯的推測。
什麼是“逆向概率”呢?
所謂“逆向概率”是相對“正向概率”而言。正向概率的問題很容易理解,比如我們已經知道袋子裏面有 N 個球,不是黑球就是白球,其中 M 個是黑球,那麼把手伸進去摸一個球,就能知道摸出黑球的概率是多少。但這種情況往往是上帝視角,即瞭解了事情的全貌再做判斷。

一個袋子裏有10個球,其中6個黑球,4個白球;那麼隨機抓一個黑球的概率是0.6!

在現實生活中,我們很難知道事情的全貌。貝葉斯則從實際場景出發,提了一個問題:如果我們事先不知道袋子裏面黑球和白球的比例,而是通過我們摸出來的球的顏色,能判斷出袋子裏面黑白球的比例麼?

正是這樣的一個問題,影響了接下來近 200 年的統計學理論。
這是因爲,貝葉斯原理與其他統計學推斷方法截然不同,它是建立在主觀判斷的基礎上:在我們不瞭解所有客觀事實的情況下,同樣可以先估計一個值,然後根據實際結果不斷進行修正。
假設有一種病叫做“貝葉死”,它的發病率是萬分之一,現有一種測試可以檢驗一個人是否得病的準確率是 99.9%,它的誤報率是 0.1%,那麼現在的問題是,如果一個人被查出來患有“葉貝死”,實際上患有的可能性有多大?

問題分析:隨機拉一個人進行檢查,誤報率是0.1%。那麼如果一個人被檢查患病,實際上患有的概率。也就是說,檢查出患病準確率是99.9%,那麼實際患病的概率是不是99.9%?

先驗概率:
通過經驗來判斷事情發生的概率,比如說“貝葉死”的發病率是萬分之一,就是先驗概率。

後驗概率:
後驗概率就是發生結果之後,推測原因的概率。比如說某人查出來了患有“貝葉死”,那麼患病的原因可能是 A、B 或 C。**患有“貝葉死”是因爲原因 A 的概率就是後驗概率。**它是屬於條件概率的一種。

條件概率:
事件 A 在另外一個事件 B 已經發生條件下的發生概率,表示爲 P(A|B)。比如原因 A 的條件下,患有“貝葉死”的概率,就是條件概率。

似然函數(likelihood function):

你可以把概率模型的訓練過程理解爲求參數估計的過程。似然在這裏就是可能性的意思,它是關於統計參數的函數。

介紹完貝葉斯原理中的這幾個概念,我們再來看下貝葉斯原理,實際上貝葉斯原理就是求解後驗概率,我們假設:A 表示事件 “測出爲陽性”, 用 B1 表示“患有貝葉死”, B2 表示“沒有患貝葉死”。

患有貝葉死的情況下,測出爲陽性的概率爲 P(A|B1)=99.9%,沒有患貝葉死,但測出爲陽性的概率爲 P(A|B2)=0.1%。
對萬分之一的解讀:。患有貝葉死的概率爲 P(B1)=0.01%,沒有患貝葉死的概率 P(B2)=99.99%。

那麼我們檢測出來爲陽性,而且是貝葉死的概率 P(B1,A)–聯合概率分佈
在這裏插入圖片描述
在這裏插入圖片描述
然後我們想求得是檢查爲陽性的情況下,患有貝葉死的概率,也即是 P(B1|A)
在這裏插入圖片描述
在這裏插入圖片描述

樸素貝葉斯

樸素貝葉斯,它是一種簡單但極爲強大的預測建模算法。之所以稱爲樸素貝葉斯,**是因爲它假設每個輸入變量是獨立的。**這個假設很硬,現實生活中根本不滿足,但是這項技術對於絕大部分的複雜問題仍然非常有效。

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

我們迴歸到貝葉死的案例中來,類型概率是患病,不患病;條件概率是:患病的條件下,被檢查出陽性的概率,不患病的條件下,檢查出陽性的概率(誤診的概率)。要求的被檢查出陽性,那麼患病的概率(貝葉斯是求後驗概率–知道結果,推測原因的概率,“求什麼什麼是類別,其它的就是屬性條件”!)

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

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

在這裏插入圖片描述

離散數據案例

我以下面的數據爲例,這些是根據你之前的經驗所獲得的數據。然後給你一個新的數據:身高“高”、體重“中”,鞋碼“中”,請問這個人是男還是女?
在這裏插入圖片描述
男女就是類型,男C1,女C2;
屬性條件:身高A1,體重A2,鞋碼A3
那麼我們想求在 A1、A2、A3 屬性下,Cj 的概率,用條件概率表示就是 P(Cj|A1A2A3)。根據上面講的貝葉斯的公式,我們可以得出:
在這裏插入圖片描述
因爲一共有 2 個類別,所以我們只需要求得 P(C1|A1A2A3) 和P(C2|A1A2A3) 的概率即可,然後比較下哪個分類的可能性大,就是哪個分類結果。
等價於求 P(A1A2A3|Cj)P(Cj) 最大值

我們假定 Ai 之間是相互獨立的,那麼:
在這裏插入圖片描述
在這裏插入圖片描述

連續數據案例

在這裏插入圖片描述
那麼如果給你一個新的數據,身高 180、體重 120,鞋碼 41,請問該人是男是女呢?
公式還是上面的公式,這裏的困難在於,由於身高、體重、鞋碼都是連續變量,不能採用離散變量的方法計算概率。而且由於樣本太少,所以也無法分成區間計算。怎麼辦呢?

這時,可以假設男性和女性的身高、體重、鞋碼都是正態分佈通過樣本計算出均值和方差,也就是得到正態分佈的密度函數。
有了密度函數,就可以把值代入,算出某一點的密度函數的值。

比如,男性的身高是均值 179.5、標準差爲 3.697 的正態分佈。(我們選擇不同條件下的樣本,得出的均值,標準差就是條件下的概率分佈了。這點稍後計算中體現)

所以男性的身高爲 180 的概率爲 0.1069。怎麼計算得出的呢? –excel

NORMDIST(x,mean,standard_dev,cumulative) 函數,一共有 4 個參數:
在這裏插入圖片描述
這裏我們使用的是 NORMDIST(180,179.5,3.697,0)=0.1069。
同理我們可以計算得出男性體重爲 120 的概率爲 0.000382324,
男性鞋碼爲 41 號的概率爲 0.120304111。
在這裏插入圖片描述
很明顯這組數據分類爲男的概率大於分類爲女的概率。

總結:

樸素貝葉斯分類常用於文本分類,尤其是對於英文等語言來說,分類效果很好。它常用於垃圾文本過濾、情感預測、推薦系統等。

第一階段:準備階段
在這個階段我們需要確定特徵屬性,比如上面案例中的“身高”、“體重”、“鞋碼”等,同時明確預測值是什麼。並對每個特徵屬性進行適當劃分,然後由人工對一部分數據進行分類,形成訓練樣本。

這一階段是整個樸素貝葉斯分類中唯一需要人工完成的階段,其質量對整個過程將有重要影響,分類器的質量很大程度上由特徵屬性、特徵屬性劃分及訓練樣本質量決定。

第二階段:訓練階段

這個階段就是生成分類器,主要工作是計算每個類別在訓練樣本中的出現頻率每個特徵屬性劃分對每個類別的條件概率。

輸入是特徵屬性和訓練樣本,輸出是分類器。

第三階段:應用階段

這個階段是使用分類器對新數據進行分類。

輸入是分類器和新數據,輸出是新數據的分類結果。

可以考慮:自編程實現第一階段,第二階段!

思考題:

如果你的女朋友,在你的手機裏發現了和別的女人的曖昧短信,於是她開始思考了 3 個概率問題,你來判斷下下面的 3 個概率分別屬於哪種概率:

1、你在沒有任何情況下,出軌的概率;(先驗概率)
2、在你的手機裏發現了曖昧短信,認爲你出軌的概率。(條件概率)
3、如果你出軌了,那麼你的手機裏有曖昧短信的概率;(後驗概率)

對應到貝葉斯案例
1、假設有一種病叫做“貝葉死”,它的發病率是萬分之一,
2、現有一種測試可以檢驗一個人是否得病的準確率是 99.9%,它的誤報率是 0.1%
3、那麼現在的問題是,如果一個人被查出來患有“葉貝死”,實際上患有的可能性有多大?

tips:知道客觀事實,診斷出病/認爲你出軌(主觀判斷)這是條件概率–知道原因,推測結果的概率。
另一種局面:認爲你出軌/診斷出病,推測原因(客觀事實)出現的概率這是後驗概率(知道結果推測原因發生的概率)

貝葉斯算法的優缺點

優點:
    (1)樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率。
    (2)對小規模的數據表現很好,能個處理多分類任務,適合增量式訓練,尤其是數據量超出內存時,我們可以一批批的去增量訓練。
    (3)對缺失數據不太敏感,算法也比較簡單,常用於文本分類。
  缺點:
    (1)理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因爲樸素貝葉斯模型給定輸出類別的情況下,假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。而在屬性相關性較小時,樸素貝葉斯性能最爲良好。對於這一點,有半樸素貝葉斯之類的算法通過考慮部分關聯性適度改進。
    (2)需要知道先驗概率,且先驗概率很多時候取決於假設,假設的模型可以有很多種,因此在某些時候會由於假設的先驗模型的原因導致預測效果不佳。
    (3)由於我們是通過先驗和數據來決定後驗的概率從而決定分類,所以分類決策存在一定的錯誤率。
    (4)對輸入數據的表達形式很敏感。

參考文獻

數據分析實戰45講
統計學習方法(李航)
理論推導看這裏:https://www.jianshu.com/p/b6cadf53b8b8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章