贝叶斯定理
P(A∣B)=P(B∣A)P(A)P(B)P(A|B)=\frac{P(B|A)P(A)}{P(B)}P(A∣B)=P(B)P(B∣A)P(A)
P(A)P(A)P(A):先验概率,事件 A 发生的概率(事前已知)
P(A∣B)P(A|B)P(A∣B):后验概率,B 发生条件下 A 发生的概率(我们要求解)
P(B∣A)P(B|A)P(B∣A):似然概率,A 发生条件下 B 发生的概率
P(B)P(B)P(B):证据因子,常数,分类时可以忽略
拓展到分类任务
设类别为 y,特征向量 x=(x1,x2,...,xn)\boldsymbol{x}=(x_1,x_2,...,x_n)x=(x1,x2,...,xn):
P(y∣x)=P(x∣y)P(y)P(x)P(y|\boldsymbol{x})=\frac{P(\boldsymbol{x}|y)P(y)}{P(\boldsymbol{x})}P(y∣x)=P(x)P(x∣y)P(y)
拉普拉斯平滑
朴素贝叶斯算法例子
数据集
| 序号 | x1天气 | x2时间 | 标签y |
|---|---|---|---|
| 1 | 晴天 | 周末 | 出去玩 |
| 2 | 晴天 | 工作日 | 出去玩 |
| 3 | 下雨 | 周末 | 出去玩 |
| 4 | 下雨 | 工作日 | 宅家 |
| 5 | 晴天 | 工作日 | 宅家 |
业务场景预测标签 y:是否出去玩
y1y_1y1 = 出去玩;y2y_2y2 = 宅家
特征:
x1x_1x1:天气 → 晴天、下雨
x2x_2x2:时间 → 周末、工作日
总样本:5 条
出去玩:3 条;宅家:2 条
朴素假设:x1x_1x1天气、x2x_2x2时间相互条件独立
计算先验概率 P(y)P(y)P(y)
P(出去玩)=35,P(宅家)=25P(出去玩)=\frac{3}{5},\quad P(宅家)=\frac{2}{5}P(出去玩)=53,P(宅家)=52
计算条件概率 P(xi∣y)P(x_i|y)P(xi∣y)
类别:出去玩(共 3 条样本)
样本 1、2、3
x1x_1x1统计:晴天 2 次,下雨 1 次
P(晴∣出去玩)=23,P(雨∣出去玩)=13P(晴|出去玩)=\frac{2}{3},\quad P(雨|出去玩)=\frac{1}{3}P(晴∣出去玩)=32,P(雨∣出去玩)=31
x2x_2x2统计:周末 2 次,工作日 1 次
P(周末∣出去玩)=23,P(工作日∣出去玩)=13P(周末|出去玩)=\frac{2}{3},\quad P(工作日|出去玩)=\frac{1}{3}P(周末∣出去玩)=32,P(工作日∣出去玩)=31
类别:宅家(共 2 条样本)
样本 4、5
x1x_1x1统计:晴天 1 次,下雨 1 次
P(晴∣宅家)=12,P(雨∣宅家)=12P(晴|宅家)=\frac{1}{2},\quad P(雨|宅家)=\frac{1}{2}P(晴∣宅家)=21,P(雨∣宅家)=21
x2x_2x2统计:周末 0 次,工作日 2 次
P(周末∣宅家)=02=0,P(工作日∣宅家)=22=1P(周末|宅家)=\frac{0}{2}=0,\quad P(工作日|宅家)=\frac{2}{2}=1P(周末∣宅家)=20=0,P(工作日∣宅家)=22=1
预测新样本:【晴天,周末】
朴素贝叶斯判别公式(只需比较分子):
P(y∣x1,x2)∝P(y)⋅P(x1∣y)⋅P(x2∣y)P(y|x_1,x_2)\propto P(y)\cdot P(x_1|y)\cdot P(x_2|y)P(y∣x1,x2)∝P(y)⋅P(x1∣y)⋅P(x2∣y)
假设类别为【出去玩】
P(出去玩)⋅P(晴∣出去玩)⋅P(周末∣出去玩)=35×23×23=1245≈0.267P(出去玩)\cdot P(晴|出去玩)\cdot P(周末|出去玩) =\frac{3}{5}\times \frac{2}{3}\times \frac{2}{3} =\frac{12}{45}\approx 0.267P(出去玩)⋅P(晴∣出去玩)⋅P(周末∣出去玩)=53×32×32=4512≈0.267
假设类别为【宅家】
P(宅家)⋅P(晴∣宅家)⋅P(周末∣宅家)=25×12×0=0P(宅家)\cdot P(晴|宅家)\cdot P(周末|宅家) =\frac{2}{5}\times \frac{1}{2}\times 0 =0P(宅家)⋅P(晴∣宅家)⋅P(周末∣宅家)=52×21×0=0
比较:0.267>00.267 > 00.267>0
预测结果:出去玩
零概率问题演示 + 拉普拉斯平滑演算
测试样本:【下雨,周末】
不做平滑时:
P(宅家)⋅P(雨∣宅家)⋅P(周末∣宅家)=25×12×0=0P(宅家)\cdot P(雨|宅家)\cdot P(周末|宅家)=\frac{2}{5}\times\frac12\times0=0P(宅家)⋅P(雨∣宅家)⋅P(周末∣宅家)=52×21×0=0
只要出现训练集中没见过的组合,概率直接归零,不合理。
使用拉普拉斯平滑 (α=1\alpha=1α=1), 公式:
P(xi∣y)=Nyi+αNy+α⋅kP(x_i|y)=\frac{N_{yi}+\alpha}{N_y+\alpha\cdot k}P(xi∣y)=Ny+α⋅kNyi+α
k = 当前特征取值种类数量
x1、x2x_1、x_2x1、x2 都只有 2 种取值,k=2k=2k=2
P(周末∣宅家)=0+12+1×2=14P(周末|宅家)=\frac{0+1}{2+1\times2}=\frac{1}{4}P(周末∣宅家)=2+1×20+1=41
P(工作日∣宅家)=2+12+2=34P(工作日|宅家)=\frac{2+1}{2+2}=\frac{3}{4}P(工作日∣宅家)=2+22+1=43
平滑后所有概率都不会等于 0
完整的贝叶斯公式
P(y∣x1,x2)=P(y)⋅P(x1∣y)⋅P(x2∣y)P(x1,x2)P(y|x_1,x_2) = \frac{P(y) \cdot P(x_1|y) \cdot P(x_2|y)}{P(x_1,x_2)}P(y∣x1,x2)=P(x1,x2)P(y)⋅P(x1∣y)⋅P(x2∣y)
但分母 P(x1,x2)P(x_1,x_2)P(x1,x2) 对所有类别 y 都是一样的。所以我们只需要比较分子的大小,就能判断哪个 y 最有可能。这就是 ∝ (正比于)的含义。
P(y∣x1,x2)∝P(y)⋅P(x1∣y)⋅P(x2∣y)P(y|x_1,x_2) \propto P(y) \cdot P(x_1|y) \cdot P(x_2|y)P(y∣x1,x2)∝P(y)⋅P(x1∣y)⋅P(x2∣y)
| 符号 | 含义 | 例子(判断邮件是否为垃圾邮件) |
|---|---|---|
| yyy | 要预测的类别 | 是垃圾邮件?还是正常邮件? |
| x1,x2x_1, x_2x1,x2 | 观察到的特征 | x1x_1x1=邮件里有"免费",x2x_2x2=邮件里有"中奖" |
| P(y∣x1,x2)P(y|x_1,x_2)P(y∣x1,x2) | 后验概率 | 看到"免费"和"中奖"后,这封邮件是垃圾邮件的概率 |
| ∝\propto∝ | 正比于(忽略分母) | 暂时不用管精确值,只看相对大小 |
| P(y)P(y)P(y) | 先验概率 | 所有邮件中垃圾邮件的占比(比如 20%) |
| P(x1∣y)P(x_1|y)P(x1∣y) | 似然 | 在垃圾邮件中,出现"免费"的概率 |
| P(x2∣y)P(x_2|y)P(x2∣y) | 似然 | 在垃圾邮件中,出现"中奖"的概率 |