朴素贝叶斯公式
P ( y ∣ x ) = P ( y ) ⋅ P ( x ∣ y ) P ( x ) P(y|x) = \cfrac{P(y) \cdot P(x|y)}{P(x)}P(y∣x)=P(x)P(y)⋅P(x∣y)
x xx:代表特征,可以有多个特征,但是每个特征的取值只有0和1
P ( y ) P(y)P(y):类别的先验概率
P ( x ∣ y ) P(x|y)P(x∣y):针对每一个类别,记录每一个特征出现(取值为1)的概率
P ( y ∣ x ) P(y|x)P(y∣x):每个类别的后验概率,选择后验概率最大的类别作为预测结果
详细计算过程
准备训练数据
| 邮件编号 | 是否包含免费 | 是否包含中奖 | 是否包含发票 | 类别(标签) |
|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 垃圾邮件 |
| 2 | 1 | 0 | 1 | 垃圾邮件 |
| 3 | 1 | 1 | 1 | 垃圾邮件 |
| 4 | 0 | 1 | 0 | 垃圾邮件 |
| 5 | 1 | 0 | 0 | 垃圾邮件 |
| 6 | 0 | 0 | 0 | 正常邮件 |
| 7 | 0 | 0 | 1 | 正常邮件 |
| 8 | 1 | 0 | 0 | 正常邮件 |
| 9 | 0 | 0 | 0 | 正常邮件 |
| 10 | 0 | 1 | 0 | 正常邮件 |
按类别分组统计:垃圾邮件组
| 邮件编号 | 是否包含免费 | 是否包含中奖 | 是否包含发票 | 类别(标签) |
|---|---|---|---|---|
| 1 | 1 | 1 | 0 | 垃圾邮件 |
| 2 | 1 | 0 | 1 | 垃圾邮件 |
| 3 | 1 | 1 | 1 | 垃圾邮件 |
| 4 | 0 | 1 | 0 | 垃圾邮件 |
| 5 | 1 | 0 | 0 | 垃圾邮件 |
按类别分组统计:正常邮件组
| 邮件编号 | 是否包含免费 | 是否包含中奖 | 是否包含发票 | 类别(标签) |
|---|---|---|---|---|
| 6 | 0 | 0 | 0 | 正常邮件 |
| 7 | 0 | 0 | 1 | 正常邮件 |
| 8 | 1 | 0 | 0 | 正常邮件 |
| 9 | 0 | 0 | 0 | 正常邮件 |
| 10 | 0 | 1 | 0 | 正常邮件 |
计算条件概率
对于垃圾邮件类别
- 特征1(免费):在5封垃圾邮件中,有4封包含"免费"
P ( 免费 = 1 ∣ 垃圾邮件 ) = 4 5 = 0.8 P(免费=1|垃圾邮件)=\cfrac{4}{5}=0.8P(免费=1∣垃圾邮件)=54=0.8
- 特征2(中奖):在5封垃圾邮件中,有3封包含"中奖"
P ( 中奖 = 1 ∣ 垃圾邮件 ) = 3 5 = 0.6 P(中奖=1|垃圾邮件)=\cfrac{3}{5}=0.6P(中奖=1∣垃圾邮件)=53=0.6
- 特征3(发票):在5封垃圾邮件中,有2封包含"发票"
P ( 发票 = 1 ∣ 垃圾邮件 ) = 2 5 = 0.4 P(发票=1|垃圾邮件)=\cfrac{2}{5}=0.4P(发票=1∣垃圾邮件)=52=0.4
对于正常邮件类别
- 特征1(免费):在5封垃圾邮件中,有1封包含"免费"
P ( 免费 = 1 ∣ 垃圾邮件 ) = 1 5 = 0.2 P(免费=1|垃圾邮件)=\cfrac{1}{5}=0.2P(免费=1∣垃圾邮件)=51=0.2
- 特征2(中奖):在5封垃圾邮件中,有1封包含"中奖"
P ( 中奖 = 1 ∣ 垃圾邮件 ) = 1 5 = 0.2 P(中奖=1|垃圾邮件)=\cfrac{1}{5}=0.2P(中奖=1∣垃圾邮件)=51=0.2
- 特征3(发票):在5封垃圾邮件中,有1封包含"发票"
P ( 发票 = 1 ∣ 垃圾邮件 ) = 1 5 = 0.2 P(发票=1|垃圾邮件)=\cfrac{1}{5}=0.2P(发票=1∣垃圾邮件)=51=0.2
整理成条件概率表P ( x ∣ y ) P(x|y)P(x∣y)
| 特征 | P(特征=1|垃圾邮件) | P(特征=1|正常邮件) |
|---|---|---|
| 是否包含免费 | 0.8 | 0.2 |
| 是否包含中奖 | 0.6 | 0.2 |
| 是否包含发票 | 0.4 | 0.2 |
模型计算过程
若存在以下新的样本数据:[ 1 , 0 , 1 ] [1,0,1][1,0,1],需要计算这个新的样本数据属于哪个类别
P ( y ) = P ( 垃圾邮件 ) = 5 10 = 0.5 P(y) = P(垃圾邮件) = \cfrac{5}{10} = 0.5P(y)=P(垃圾邮件)=105=0.5
在朴素贝叶斯中,前提性假设特征之间是相互独立的,所以该样本数据为垃圾邮件的概率为
P ( x ∣ y ) = P ( y ) P ( x ∣ y ) P ( x ) = P ( y ) P ( x 1 , x 2 , x 3 ∣ y ) P ( x ) = P ( y ) P ( x 1 ∣ y ) P ( x 2 ∣ y ) P ( x 3 ∣ y ) P ( x ) = P ( y ) P ( 1 ∣ y ) P ( 0 ∣ y ) P ( 1 ∣ y ) P ( x ) = P ( y ) P ( 免费 ∣ 垃圾邮件 ) P ( 未中奖 ∣ 垃圾邮件 ) P ( 发票 ∣ 垃圾邮件 ) P ( x ) = 0.5 ∗ 0.8 ∗ ( 1 − 0.6 ) ∗ 0.4 P ( x ) = 0.064 P ( x ) \begin{split} P(x|y) &= \cfrac{P(y)P(x|y)}{P(x)}\\ &= \cfrac{P(y)P(x_1,x_2,x_3|y)}{P(x)} \\ &= \cfrac{P(y)P(x_1|y)P(x_2|y)P(x_3|y)}{P(x)} \\ &= \cfrac{P(y)P(1|y)P(0|y)P(1|y)}{P(x)} \\ &= \cfrac{P(y)P(免费|垃圾邮件)P(未中奖|垃圾邮件)P(发票|垃圾邮件)}{P(x)} \\ &= \cfrac{0.5*0.8*(1-0.6)*0.4}{P(x)} \\ &= \cfrac{0.064}{P(x)} \\ \end{split}P(x∣y)=P(x)P(y)P(x∣y)=P(x)P(y)P(x1,x2,x3∣y)=P(x)P(y)P(x1∣y)P(x2∣y)P(x3∣y)=P(x)P(y)P(1∣y)P(0∣y)P(1∣y)=P(x)P(y)P(免费∣垃圾邮件)P(未中奖∣垃圾邮件)P(发票∣垃圾邮件)=P(x)0.5∗0.8∗(1−0.6)∗0.4=P(x)0.064在朴素贝叶斯中,前提性假设特征之间是相互独立的,所以该样本数据为正常邮件的概率为
P ( x ∣ y ) = P ( y ) P ( x ∣ y ) P ( x ) = P ( y ) P ( x 1 , x 2 , x 3 ∣ y ) P ( x ) = P ( y ) P ( x 1 ∣ y ) P ( x 2 ∣ y ) P ( x 3 ∣ y ) P ( x ) = P ( y ) P ( 1 ∣ y ) P ( 0 ∣ y ) P ( 1 ∣ y ) P ( x ) = P ( y ) P ( 免费 ∣ 正常邮件 ) P ( 未中奖 ∣ 正常邮件 ) P ( 发票 ∣ 正常邮件 ) P ( x ) = 0.5 ∗ 0.2 ∗ ( 1 − 0.2 ) ∗ 0.2 P ( x ) = 0.016 P ( x ) \begin{split} P(x|y) &= \cfrac{P(y)P(x|y)}{P(x)}\\ &= \cfrac{P(y)P(x_1,x_2,x_3|y)}{P(x)} \\ &= \cfrac{P(y)P(x_1|y)P(x_2|y)P(x_3|y)}{P(x)} \\ &= \cfrac{P(y)P(1|y)P(0|y)P(1|y)}{P(x)} \\ &= \cfrac{P(y)P(免费|正常邮件)P(未中奖|正常邮件)P(发票|正常邮件)}{P(x)} \\ &= \cfrac{0.5*0.2*(1-0.2)*0.2}{P(x)} \\ &= \cfrac{0.016}{P(x)} \\ \end{split}P(x∣y)=P(x)P(y)P(x∣y)=P(x)P(y)P(x1,x2,x3∣y)=P(x)P(y)P(x1∣y)P(x2∣y)P(x3∣y)=P(x)P(y)P(1∣y)P(0∣y)P(1∣y)=P(x)P(y)P(免费∣正常邮件)P(未中奖∣正常邮件)P(发票∣正常邮件)=P(x)0.5∗0.2∗(1−0.2)∗0.2=P(x)0.016由于P ( x ) P(x)P(x)在垃圾邮件和正常邮件的计算过程中是相同的,所以该样本数据为垃圾邮件的概率可以看做为0.064,为正常邮件的概率可以看做为0.016,由于0.064 > 0.016 0.064>0.0160.064>0.016,所以该数据被判定为垃圾邮件