贝叶斯公式(Bayes’ Theorem)
贝叶斯公式(Bayes’ Theorem)是概率论中的一个基本公式,用于计算一个事件在已知另一事件发生的条件下的概率。贝叶斯公式的基本思想是通过已有数据更新我们的信念或预测。公式如下:
P ( A ∣ B ) = P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)⋅P(A)
这里, P ( A ∣ B ) P(A|B) P(A∣B)表示在事件 B B B已经发生的情况下事件 A A A发生的条件概率。其他符号的解释如下:
-
P
(
A
)
P(A)
P(A):事件
A
A
A发生的先验概率(在未观察到事件
B
B
B时对
A
A
A发生的信念)。
-
P
(
B
)
P(B)
P(B):事件
B
B
B发生的边缘概率(所有可能情况下
B
B
B发生的概率)。
-
P
(
B
∣
A
)
P(B|A)
P(B∣A):事件
A
A
A发生的情况下事件
B
B
B发生的条件概率(称为似然)。
贝叶斯公式的推导:
- 联合概率
P
(
A
∩
B
)
P(A \cap B)
P(A∩B)可以表示为
P
(
A
)
⋅
P
(
B
∣
A
)
P(A) \cdot P(B|A)
P(A)⋅P(B∣A)或
P
(
B
)
⋅
P
(
A
∣
B
)
P(B) \cdot P(A|B)
P(B)⋅P(A∣B):
P ( A ∩ B ) = P ( A ) ⋅ P ( B ∣ A ) = P ( B ) ⋅ P ( A ∣ B ) P(A \cap B) = P(A) \cdot P(B|A) = P(B) \cdot P(A|B) P(A∩B)=P(A)⋅P(B∣A)=P(B)⋅P(A∣B) - 将两者等式化,并解出
P
(
A
∣
B
)
P(A|B)
P(A∣B):
P ( A ∣ B ) = P ( A ) ⋅ P ( B ∣ A ) P ( B ) P(A|B) = \frac{P(A) \cdot P(B|A)}{P(B)} P(A∣B)=P(B)P(A)⋅P(B∣A)
实例说明
假设有一个医疗测试用于检测某种疾病,已知:
- 该疾病在总体中的患病率(先验概率 P ( D i s e a s e ) P(Disease) P(Disease))为 1%。
- 测试对患病者的准确率(条件概率 P ( P o s i t i v e ∣ D i s e a s e ) P(Positive|Disease) P(Positive∣Disease),称为灵敏度)为 99%。
- 测试对健康者的准确率(条件概率 P ( N e g a t i v e ∣ H e a l t h y ) P(Negative|Healthy) P(Negative∣Healthy),称为特异度)为 95%。
假设测试结果是阳性,我们想知道实际患病的概率 P ( D i s e a s e ∣ P o s i t i v e ) P(Disease|Positive) P(Disease∣Positive)。
-
先验概率:
P ( D i s e a s e ) = 0.01 P(Disease) = 0.01 P(Disease)=0.01
P ( H e a l t h y ) = 1 − P ( D i s e a s e ) = 0.99 P(Healthy) = 1 - P(Disease) = 0.99 P(Healthy)=1−P(Disease)=0.99 -
条件概率(似然):
P ( P o s i t i v e ∣ D i s e a s e ) = 0.99 P(Positive|Disease) = 0.99 P(Positive∣Disease)=0.99
P ( P o s i t i v e ∣ H e a l t h y ) = 1 − P ( N e g a t i v e ∣ H e a l t h y ) = 1 − 0.95 = 0.05 P(Positive|Healthy) = 1 - P(Negative|Healthy) = 1 - 0.95 = 0.05 P(Positive∣Healthy)=1−P(Negative∣Healthy)=1−0.95=0.05 -
边缘概率 P ( P o s i t i v e ) P(Positive) P(Positive):
P ( P o s i t i v e ) = P ( P o s i t i v e ∣ D i s e a s e ) ⋅ P ( D i s e a s e ) + P ( P o s i t i v e ∣ H e a l t h y ) ⋅ P ( H e a l t h y ) P(Positive) = P(Positive|Disease) \cdot P(Disease) + P(Positive|Healthy) \cdot P(Healthy) P(Positive)=P(Positive∣Disease)⋅P(Disease)+P(Positive∣Healthy)⋅P(Healthy)
P ( P o s i t i v e ) = ( 0.99 ⋅ 0.01 ) + ( 0.05 ⋅ 0.99 ) P(Positive) = (0.99 \cdot 0.01) + (0.05 \cdot 0.99) P(Positive)=(0.99⋅0.01)+(0.05⋅0.99)
P ( P o s i t i v e ) = 0.0099 + 0.0495 = 0.0594 P(Positive) = 0.0099 + 0.0495 = 0.0594 P(Positive)=0.0099+0.0495=0.0594 -
使用贝叶斯公式计算 P ( D i s e a s e ∣ P o s i t i v e ) P(Disease|Positive) P(Disease∣Positive):
P ( D i s e a s e ∣ P o s i t i v e ) = P ( P o s i t i v e ∣ D i s e a s e ) ⋅ P ( D i s e a s e ) P ( P o s i t i v e ) P(Disease|Positive) = \frac{P(Positive|Disease) \cdot P(Disease)}{P(Positive)} P(Disease∣Positive)=P(Positive)P(Positive∣Disease)⋅P(Disease)
P ( D i s e a s e ∣ P o s i t i v e ) = 0.99 ⋅ 0.01 0.0594 P(Disease|Positive) = \frac{0.99 \cdot 0.01}{0.0594} P(Disease∣Positive)=0.05940.99⋅0.01
P ( D i s e a s e ∣ P o s i t i v e ) ≈ 0.1667 P(Disease|Positive) \approx 0.1667 P(Disease∣Positive)≈0.1667
因此,即使测试结果为阳性,患病的概率也仅约为16.67%。
贝叶斯公式在各个领域有广泛应用,包括医疗诊断、机器学习、统计推断等。它的核心思想是结合先验知识与新证据不断更新我们的信念或预测。
贝叶斯算法
贝叶斯算法是一类基于贝叶斯定理的统计分类方法,常用于分类和回归问题。在机器学习中,最著名的贝叶斯算法是朴素贝叶斯分类器(Naive Bayes Classifier)。朴素贝叶斯分类器假设特征之间相互独立,并基于这种假设计算样本属于某一类别的概率。
朴素贝叶斯分类器的基本原理
朴素贝叶斯分类器利用贝叶斯定理进行分类,其公式如下:
P ( C ∣ X ) = P ( X ∣ C ) ⋅ P ( C ) P ( X ) P(C|X) = \frac{P(X|C) \cdot P(C)}{P(X)} P(C∣X)=P(X)P(X∣C)⋅P(C)
其中:
-
P
(
C
∣
X
)
P(C|X)
P(C∣X):在给定特征
X
X
X的情况下样本属于类别
C
C
C的后验概率。
-
P
(
X
∣
C
)
P(X|C)
P(X∣C):在类别
C
C
C下观察到特征
X
X
X的似然。
-
P
(
C
)
P(C)
P(C):类别
C
C
C的先验概率。
-
P
(
X
)
P(X)
P(X):观察到特征
X
X
X的边缘概率。
朴素贝叶斯分类器的假设
朴素贝叶斯分类器的“朴素”之处在于假设特征之间相互独立。即对于特征向量 X = ( x 1 , x 2 , . . . , x n ) X = (x_1, x_2, ..., x_n) X=(x1,x2,...,xn),有:
P ( X ∣ C ) = P ( x 1 , x 2 , . . . , x n ∣ C ) = P ( x 1 ∣ C ) ⋅ P ( x 2 ∣ C ) ⋅ . . . ⋅ P ( x n ∣ C ) P(X|C) = P(x_1, x_2, ..., x_n|C) = P(x_1|C) \cdot P(x_2|C) \cdot ... \cdot P(x_n|C) P(X∣C)=P(x1,x2,...,xn∣C)=P(x1∣C)⋅P(x2∣C)⋅...⋅P(xn∣C)
这大大简化了计算过程,使得算法在实际应用中非常高效。
朴素贝叶斯分类器的步骤
-
训练阶段:
- 计算每个类别 C C C的先验概率 P ( C ) P(C) P(C)。
- 对于每个类别 C C C,计算每个特征 x i x_i xi在类别 C C C下的条件概率 P ( x i ∣ C ) P(x_i|C) P(xi∣C)。
-
分类阶段:
- 对于待分类样本 X = ( x 1 , x 2 , . . . , x n ) X = (x_1, x_2, ..., x_n) X=(x1,x2,...,xn),计算每个类别 C C C的后验概率 P ( C ∣ X ) P(C|X) P(C∣X)。
- 选择后验概率最大的类别作为分类结果。
朴素贝叶斯分类器的具体实现
假设我们有一个邮件分类器,要将邮件分为“垃圾邮件”(Spam)和“非垃圾邮件”(Ham)。我们有以下训练数据:
邮件内容 | 类别 |
---|---|
Offer | Spam |
Buy now | Spam |
Meeting | Ham |
Project update | Ham |
-
计算先验概率:
- P ( S p a m ) = Spam 邮件数量 总邮件数量 = 2 4 = 0.5 P(Spam) = \frac{\text{Spam 邮件数量}}{\text{总邮件数量}} = \frac{2}{4} = 0.5 P(Spam)=总邮件数量Spam 邮件数量=42=0.5
- P ( H a m ) = Ham 邮件数量 总邮件数量 = 2 4 = 0.5 P(Ham) = \frac{\text{Ham 邮件数量}}{\text{总邮件数量}} = \frac{2}{4} = 0.5 P(Ham)=总邮件数量Ham 邮件数量=42=0.5 -
计算条件概率:
- P ( Offer ∣ S p a m ) = Spam 类别中包含 “Offer” 的邮件数量 Spam 邮件数量 = 1 2 = 0.5 P(\text{Offer}|Spam) = \frac{\text{Spam 类别中包含 “Offer” 的邮件数量}}{\text{Spam 邮件数量}} = \frac{1}{2} = 0.5 P(Offer∣Spam)=Spam 邮件数量Spam 类别中包含 “Offer” 的邮件数量=21=0.5
- P ( Offer ∣ H a m ) = Ham 类别中包含 “Offer” 的邮件数量 Ham 邮件数量 = 0 2 = 0 P(\text{Offer}|Ham) = \frac{\text{Ham 类别中包含 “Offer” 的邮件数量}}{\text{Ham 邮件数量}} = \frac{0}{2} = 0 P(Offer∣Ham)=Ham 邮件数量Ham 类别中包含 “Offer” 的邮件数量=20=0 -
分类新的邮件:
假设新邮件内容为 “Offer Buy now”,需要计算每个类别的后验概率:-
计算 P ( S p a m ∣ Offer Buy now ) P(Spam|\text{Offer Buy now}) P(Spam∣Offer Buy now):
P ( S p a m ∣ Offer Buy now ) ∝ P ( Offer Buy now ∣ S p a m ) ⋅ P ( S p a m ) = P ( Offer ∣ S p a m ) ⋅ P ( Buy now ∣ S p a m ) ⋅ P ( S p a m ) P(Spam|\text{Offer Buy now}) \propto P(\text{Offer Buy now}|Spam) \cdot P(Spam) = P(\text{Offer}|Spam) \cdot P(\text{Buy now}|Spam) \cdot P(Spam) P(Spam∣Offer Buy now)∝P(Offer Buy now∣Spam)⋅P(Spam)=P(Offer∣Spam)⋅P(Buy now∣Spam)⋅P(Spam)
= 0.5 ⋅ 0.5 ⋅ 0.5 = 0.125 = 0.5 \cdot 0.5 \cdot 0.5 = 0.125 =0.5⋅0.5⋅0.5=0.125 -
计算 P ( H a m ∣ Offer Buy now ) P(Ham|\text{Offer Buy now}) P(Ham∣Offer Buy now):
P ( H a m ∣ Offer Buy now ) ∝ P ( Offer Buy now ∣ H a m ) ⋅ P ( H a m ) = P ( Offer ∣ H a m ) ⋅ P ( Buy now ∣ H a m ) ⋅ P ( H a m ) P(Ham|\text{Offer Buy now}) \propto P(\text{Offer Buy now}|Ham) \cdot P(Ham) = P(\text{Offer}|Ham) \cdot P(\text{Buy now}|Ham) \cdot P(Ham) P(Ham∣Offer Buy now)∝P(Offer Buy now∣Ham)⋅P(Ham)=P(Offer∣Ham)⋅P(Buy now∣Ham)⋅P(Ham)
= 0 ⋅ 0 ⋅ 0.5 = 0 = 0 \cdot 0 \cdot 0.5 = 0 =0⋅0⋅0.5=0
由于 P ( H a m ∣ Offer Buy now ) = 0 P(Ham|\text{Offer Buy now}) = 0 P(Ham∣Offer Buy now)=0,而 P ( S p a m ∣ Offer Buy now ) > 0 P(Spam|\text{Offer Buy now}) > 0 P(Spam∣Offer Buy now)>0,因此新邮件被分类为“垃圾邮件”。
-
朴素贝叶斯分类器的优缺点
优点:
- 简单易实现,计算效率高。
- 对小规模数据表现良好,尤其在文本分类任务中效果显著。
- 对噪声数据不敏感。
缺点:
- 特征独立性假设在实际应用中往往不成立,可能影响分类效果。
- 对于未见过的特征,条件概率为零会导致整个后验概率为零(可通过拉普拉斯平滑解决)。
朴素贝叶斯分类器尽管有其假设限制,但在许多实际应用中仍然表现出色,特别是在文本分类、垃圾邮件检测等领域。