樸素貝葉斯分類-理論篇

公號:碼農充電站pro
主頁:https://codeshellme.github.iohtml

貝葉斯原理是英國數學家托馬斯·貝葉斯於18 世紀提出的,當咱們不能直接計算一件事情(A)發生的可能性大小的時候,能夠間接的計算與這件事情有關的事情(X,Y,Z)發生的可能性大小,從而間接判斷事情(A)發生的可能性大小。python

在這裏插入圖片描述

在介紹貝葉斯原理以前,先介紹幾個與機率相關的概念。git

1,機率相關概念

機率用於描述一件事情發生的可能性大小,用數學符號P(x) 表示,x 表示隨機變量P(x) 表示x 的機率。github

隨機變量根據變量取值是否連續,可分爲離散型隨機變量連續型隨機變量算法

聯合機率由多個隨機變量共同決定,用P(x, y) 表示,含義爲「事件x 與事件y 同時發生的機率」。shell

條件機率也是由多個隨機變量共同決定,用P(x|y) 表示,含義爲「在事件y 發生的前提下,事件x 發生的機率。」code

邊緣機率:從 P(x, y) 推導出 P(x),從而忽略 y 變量。htm

  • 對於離散型隨機變量,經過聯合機率 P(x, y)y求和, 可獲得P(x),這裏的P(x) 就是邊緣機率。
  • 對於連續型隨機變量,經過聯合機率 P(x, y)y求積分, 可獲得P(x),這裏的P(x) 就是邊緣機率。

機率分佈:將隨機變量全部可能出現的值,及其對應的機率都展示出來,就能獲得這個變量的機率分佈,機率分佈分爲兩種,分別是離散型和連續型。blog

常見的離散型數據分佈模型有:事件

  • 伯努利分佈:表示單個隨機變量的分佈,且該變量的取值只有兩個,0 或 1。例如拋硬幣(不考慮硬幣直立的狀況)的機率分佈就是伯努利分佈。數學公式以下:
    • P(x = 0) = 1 - λ
    • P(x = 1) = λ
  • 多項式分佈:也叫分類分佈,描述了一個具備 k 個不一樣狀態的單個隨機變量。這裏的 k,是有限的數值,若是 k 爲 2,那就變成了伯努利分佈。
    • P(x = k) = λ
  • 二項式分佈
  • 泊松分佈

常見的連續型數據分佈模型有:

  • 正態分佈,也叫高斯分佈,是最重要的一種。
  • 均勻分佈
  • 指數分佈
  • 拉普拉斯分佈

正態分佈的數學公式爲:

在這裏插入圖片描述

正態分佈的分佈圖爲:

在這裏插入圖片描述

正態分佈還可分爲:

  • 一元正態分佈:此時 μ爲 0,σ爲 1。
  • 多元正態分佈。

數學指望,若是把「每次隨機結果的出現機率」看作權重,那麼指望就是全部結果的加權平均值

方差表示的是隨機變量的取值與其數學指望的偏離程度,方差越小意味着偏離程度越小,方差越大意味着偏離程度越大。

機率論研究的就是這些機率之間的轉化關係。

2,貝葉斯定理

貝葉斯公式以下:

在這裏插入圖片描述

含義:

  • 等號右邊分子部分,P(Bi)先驗機率P(A|Bi)條件機率
  • 等號右邊整個分母部分爲邊緣機率
  • 等號左邊P(Bi|A)後驗機率,由先驗機率,條件機率,邊緣機率計算得出。

貝葉斯定理可用於分類問題,將其用在分類問題中時,可將上面的公式簡化爲:

在這裏插入圖片描述

其中:

  • c 表示一個分類,f 表示屬性值。
  • P(c|f) 表示在待分類樣本中,出現屬性值 f 時,樣本屬於類別 c 的機率。
  • P(f|c) 是根據訓練樣本數據,進行統計獲得的,分類 c 中出現屬性 f 的機率。
  • P(c ) 是分類 c 在訓練數據中出現的機率。
  • P(f) 是屬性 f 在訓練樣本中出現的機率。

這就意味着,當咱們知道一些屬性特徵值時,根據這個公式,就能夠計算出所屬分類的機率,最終所屬哪一個分類的機率最大,就劃分爲哪一個分類,這就完成了一個分類問題。

貝葉斯推導

來看下貝葉斯公式是如何推導出來的。

以下圖兩個橢圓,左邊爲C,右邊爲F。
在這裏插入圖片描述

如今讓兩個橢圓產生交集:

在這裏插入圖片描述

根據上圖可知:在事件F 發生的條件下,事件C 發生的機率就是P(C ∩ F) / P(F),即:

  • P(C | F) = P(C ∩ F) / P(F)

可獲得:

  • P(C ∩ F) = P(C | F) * P(F)

同理可得:

  • P(C ∩ F) = P(F | C) * P(C)

因此:

  • P(C ∩ F) = P(C | F) * P(F) = P(F | C) * P(C)
  • P(C | F) = P(F | C) * P(C) / P(F)

3,樸素貝葉斯

假設咱們如今有一個數據集,要使用貝葉斯定理,進行分類。特徵有兩個:f1,f2。如今要對數據F 進行分類,那咱們須要求解:

  • P(c|F):表示數據F 屬於分類c 的機率。

由於特徵有 f1f2,那麼:

  • P(c|F) = P(c|(f1,f2))

對於分類問題,特徵每每不止一個。若是特徵之間相互影響,也就是f1f2 之間相互影響,那麼P(c|(f1,f2)) 就不容易求解。

樸素貝葉斯在貝葉斯的基礎上作了一個簡單粗暴的假設,它假設多個特徵之間互不影響,相互獨立。

樸素的意思就是純樸,簡單

用數學公式表示就是:

  • P(A, B) = P(A) * P(B)

實際上就是大學機率論中所講的事件獨立性,即事件A 與事件B 的發生互不干擾,相互獨立

那麼,根據樸素貝葉斯,P(c|F) 的求解過程以下:


在這裏插入圖片描述


假設咱們如今要分類的數據有兩類:c1 和 c2

那麼對於數據F 的分類問題,咱們就須要求解兩個機率:P(c1|F) 和P(c2|F)

  • 若是P(c1|F) > P(c2|F),那麼F 屬於c1 類。
  • 若是P(c1|F) < P(c2|F),那麼F 屬於c2 類。

根據貝葉斯原理,咱們能夠獲得:

在這裏插入圖片描述

對於分類問題,咱們的最終目的是分類,而不是真正的求解出P(c1|F)P(c2|F) 的確切數值。

根據上面的公式,咱們能夠看到,等號右邊的分母部分都是P(F)

在這裏插入圖片描述

因此咱們只須要求出P(F|c1) × P(c1)P(F|c2) × P(c2),就能夠知道P(c1|F)P(c2|F) 哪一個大了。

因此對於P(c|F) 能夠進一步簡化:


在這裏插入圖片描述


4,處理分類問題的通常步驟

用樸素貝葉斯原理,處理一個分類問題,通常要通過如下幾個步驟:

  • 準備階段
    • 獲取數據集。
    • 分析數據,肯定特徵屬性,並獲得訓練樣本。
  • 訓練階段
    • 計算每一個類別機率P(Ci)
    • 對每一個特徵屬性,計算每一個分類的條件機率P(Fj|Ci)
    • Ci 表明全部的類別。
    • Fj 表明全部的特徵。
  • 預測階段
    • 給定一個數據,計算該數據所屬每一個分類的機率P(Fj|Ci) * P(Ci)
    • 最終那個分類的機率大,數據就屬於哪一個分類。

5,用樸素貝葉斯分類

接下來咱們來處理一個實際的分類問題,咱們處理的是離散型數據

5.1,準備數據集

咱們的數據集以下:

在這裏插入圖片描述

該數據集的特徵集有身高體重鞋碼,目標集爲性別

咱們的目的是訓練一個模型,該模型能夠根據身高,體重和鞋碼來預測所屬的性別。

咱們給定一個特徵:

  • 身高 = 高,用F1 表示。
  • 體重 = 中,用F2 表示。
  • 鞋碼 = 中,用F3 表示。

要求這個特徵是仍是?(用C1 表示C2 表示)也就是要求P(C1|F) 大,仍是P(C2|F) 大?

# 根據樸素貝葉斯推導

   P(C1|F)
=> P(C1|(F1,F2,F3))
=> P(C1|F1) * P(C1|F2) * P(C1|F3)
=> [P(F1|C1) * P(C1)] * [P(F2|C1) * P(C1)] * [P(F3|C1) * P(C1)]

   P(C2|F)
=> P(C2|(F1,F2,F3))
=> P(C2|F1) * P(C2|F2) * P(C2|F3)
=> [P(F1|C2) * P(C2)] * [P(F2|C2) * P(C2)] * [P(F3|C2) * P(C2)]

5.2,計算P(Ci)

目標集共有兩類:男和女,男出現4 次,女出現4 次,因此:

  • P(C1) = 4 / 8 = 0.5
  • P(C2) = 4 / 8 = 0.5

5.3,計算P(Fj|Ci)

經過觀察表格中的數據,咱們能夠知道:

# 性別爲男的狀況下,身高=高 的機率
P(F1|C1) = 2 / 4 = 0.5

# 性別爲男的狀況下,體重=中 的機率
P(F2|C1) = 2 / 4 = 0.5

# 性別爲男的狀況下,鞋碼=中 的機率
P(F3|C1) = 1 / 4 = 0.25

# 性別爲女的狀況下,身高=高 的機率
P(F1|C2) = 0 / 4 = 0

# 性別爲女的狀況下,體重=中 的機率
P(F2|C2) = 2 / 4 = 0.5

# 性別爲女的狀況下,鞋碼=中 的機率
P(F3|C2) = 2 / 4 = 0.5

5.4,計算P(Fj|Ci) * P(Ci)

上面咱們已經推導過P(C1|F)P(C2|F),下面能夠求值了:

P(C1|F)
=> [P(F1|C1) * P(C1)] * [P(F2|C1) * P(C1)] * [P(F3|C1) * P(C1)]
=> [0.5 * 0.5] * [0.5 * 0.5] * [0.25 * 0.5]
=> 0.25 * 0.25 * 0.125
=> 0.0078125

   P(C2|F)
=> [P(F1|C2) * P(C2)] * [P(F2|C2) * P(C2)] * [P(F3|C2) * P(C2)]
=> [0 * 0.25] * [0.5 * 0.5] * [0.5 * 0.5]
=> 0

最終能夠看到 P(C1|F) > P(C2|F),因此該特徵屬於C1,即男性。

6,總結

能夠看到,對於一個分類問題:給定一個數據F,求解它屬於哪一個分類? 實際上就是要求解F 屬於各個分類的機率大小,即P(C|F)

根據樸素貝葉斯原理,P(C|F)P(F|C) * P(C) 正相關,因此最終要求解的就是P(F|C) * P(C)。這就將一個分類問題轉化成了一個機率問題。

下篇文章會介紹如何使用樸素貝葉斯處理實際問題。

(本節完。)


推薦閱讀:

決策樹算法-理論篇

決策樹算法-實戰篇


歡迎關注做者公衆號,獲取更多技術乾貨。

碼農充電站pro

相關文章
相關標籤/搜索