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

贝叶斯定理

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) 似然 在垃圾邮件中,出现"中奖"的概率
相关推荐
zlinear数据采集卡6 小时前
ZLinear产品线全景对比:D223 vs DABL7606 vs DABL-G511选型指南
arm开发·嵌入式硬件·算法·fpga开发·开源
数模竞赛Paid answer6 小时前
2026年华东杯数学建模C题收益率预测问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯
天吾cc6 小时前
JSON 与 cJSON 学习笔记
笔记·学习·json
一米阳光86616 小时前
软考(中级)软件设计师核心笔记(8)数据结构——树与二叉树
数据结构·笔记·职场发展·软考·软件设计师·中级职称
lifallen6 小时前
Orca 与 Emdash:同样管理多个 Agent,差别在谁来调度
人工智能·学习·ai·软件构建·开源软件·ai编程
runafterhit7 小时前
【学习地图】ARM嵌入式类 · 文章索引
arm开发·学习
沐-风_7 小时前
双通道LVDS(Dual‑Link)Link0 / Link1:硬件、软件、标准
嵌入式硬件·学习
依然鸣7 小时前
PTA团体程序设计天梯赛L2真题讲解L2-005-008
开发语言·数据结构·c++·算法·深度优先·pat考试·图论
看浪的路人7 小时前
第2讲:一致性哈希——数据分片与负载均衡
算法·哈希算法