天天看點

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

公号:碼農充電站pro

​​​​​

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

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

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

1,機率相關概念

機率用于描述一件事情發生的可能性大小,用數學符号​

​P(x)​

​ 表示,​

​x​

​ 表示随機變量,​

​P(x)​

​ 表示​

​x​

​ 的機率。

随機變量根據變量取值是否連續,可分為離散型随機變量和連續型随機變量。

聯合機率由多個随機變量共同決定,用​

​P(x, y)​

​ 表示,含義為“事件​

​x​

​ 與事件​

​y​

​ 同時發生的機率”。

條件機率也是由多個随機變量共同決定,用​

​P(x|y)​

​ 表示,含義為“在事件​

​y​

​ 發生的前提下,事件​

​x​

​ 發生的機率。”

邊緣機率:從 ​

​P(x, y)​

​ 推導出 ​

​P(x)​

​,進而忽略 ​

​y​

​ 變量。

  • 對于離散型随機變量,通過聯合機率 ​

    ​P(x, y)​

    ​ 在 ​

    ​y​

    ​ 上求和, 可得到​

    ​P(x)​

    ​,這裡的​

    ​P(x)​

    ​ 就是邊緣機率。
  • 對于連續型随機變量,通過聯合機率 ​

    ​P(x, y)​

    ​y​

    ​ 上求積分, 可得到​

    ​P(x)​

    ​P(x)​

機率分布:将随機變量所有可能出現的值,及其對應的機率都展現出來,就能得到這個變量的機率分布,機率分布分為兩種,分别是離散型和連續型。

常見的離散型資料分布模型有:

  • 伯努利分布:表示單個随機變量的分布,且該變量的取值隻有兩個,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​

因為特征有 ​

​f1​

​ 與 ​

​f2​

​,那麼:

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

對于分類問題,特征往往不止一個。如果特征之間互相影響,也就是​

​f1​

​ 與​

​f2​

​ 之間互相影響,那麼​

​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)​

​。這就将一個分類問題轉化成了一個機率問題。

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

(本節完。)

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

​P(x)​

​x​

​P(x)​

​x​

​P(x, y)​

​x​

​y​

​P(x|y)​

​y​

​x​

​P(x, y)​

​P(x)​

​y​

  • ​P(x, y)​

    ​y​

    ​P(x)​

    ​P(x)​

  • ​P(x, y)​

    ​y​

    ​P(x)​

    ​P(x)​

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題
樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題
  • ​P(Bi)​

    ​P(A|Bi)​

  • ​P(Bi|A)​

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題
樸素貝葉斯分類-理論篇-如何通過機率解決分類問題
樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

​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)​

​F​

  • ​P(c|F)​

    ​F​

    ​c​

​f1​

​f2​

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

​f1​

​f2​

​P(c|(f1,f2))​

  • ​P(A, B) = P(A) * P(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)​

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

  • ​P(Ci)​

  • ​P(Fj|Ci)​

  • ​Ci​

  • ​Fj​

  • ​P(Fj|Ci) * P(Ci)​

樸素貝葉斯分類-理論篇-如何通過機率解決分類問題

​身高​

​體重​

​鞋碼​

​性别​

  • ​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)]
      

​P(Ci)​

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

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

​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
      

​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​

​F​

​P(C|F)​

​P(C|F)​

​P(F|C) * P(C)​

​P(F|C) * P(C)​