朴素贝叶斯算法-学习笔记

贝叶斯定理

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) 似然 在垃圾邮件中,出现"中奖"的概率
相关推荐
小淮AI2 小时前
从“刷题”到“追问”:AI课堂正在重塑哪些学习旧习惯?
人工智能·学习
shehuiyuelaiyuehao3 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
wixzjsh3 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
ZhiMuZhiLing3 小时前
拓客软件学习成本实测方法论:从注册到出第一批名单要多久
学习·流量运营·用户运营
程序员大雄学编程4 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
203号居民5 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾5 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP5 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
指针常量6 小时前
【RL系列文章】难样本学习等
学习·大语言模型·rl·后训练
ZhouDevin6 小时前
算法论文/数据集3——CLD(TMLR2025)压缩训练集,仅保留对验证集有益的样本
人工智能·深度学习·算法·计算机视觉