当前位置:网站首页>李航《统计学习方法》笔记之朴素贝叶斯法
李航《统计学习方法》笔记之朴素贝叶斯法
2022-08-02 09:20:00 【timerring】

第4章朴素贝叶斯法
朴素是整个算法的强假设,即变量之间是强相互独立的。
例子
路人拿出来3颗豆,两颗红豆1颗绿豆,我和路人各自抽了一颗,路人发现自己抽中的是绿豆,他想用剩下的那颗和我换,我换不换?换不换豆,抽中红豆概率一样吗?
P ( A ∣ B ) P(A \mid B) P(A∣B) 表示在B发生的条件下发生A的概率。
P ( A ∣ B ) = P ( A B ) P ( B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A \mid B)=\frac{P(A B)}{P(B)}=\frac{P(B \mid A) P(A)}{P(B)} P(A∣B)=P(B)P(AB)=P(B)P(B∣A)P(A)
设A表示我抽中的是红豆,B表示路人抽中的是绿豆
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) = 1 ⋅ 1 3 1 = 1 3 P(A \mid B)=\frac{P(B \mid A) P(A)}{P(B)}=\frac{1 \cdot \frac{1}{3}}{1}=\frac{1}{3} P(A∣B)=P(B)P(B∣A)P(A)=11⋅31=31
注意这里的一个误区,由于是在已知B抽中的是绿豆的前提下,因此,这里 P ( B ) = 1 P(B)=1 P(B)=1而不是 2 3 \frac{2}{3} 32。
结论:如果要红豆,最好和路人交换一下。如果要绿豆,最好不要换。
假设有一个手写数据集,里面有100条记录,其中第0-9条记录是10个人分别写的0。10-19条是10个人分别写的1。……。第90-99条是10个人分别写的10,写了一个数字X,怎么判断是数字几呢?
朴素贝叶斯工作原理:
P ( Y = 0 ∣ X ) = ? , P ( Y = 1 ∣ X ) = ? , ⋯ ⋯ , P ( Y = 10 ∣ X ) = ? P(Y=0 \mid X)=?, P(Y=1 \mid X)=?, \cdots \cdots, P(Y=10 \mid X)=? P(Y=0∣X)=?,P(Y=1∣X)=?,⋯⋯,P(Y=10∣X)=?
找到概率值最高的,就是对应的数字。
数学表达就是:
对于刚刚的手写数据集, 我们设数字的类别为 $C_{k}, C_{0} $表示数字 $0, \cdots \cdots $。刚才数字判别公式可以修改为 P ( Y = C k ∣ X = x ) 。 P\left(Y=C_{\mathbf{k}} \mid X=x\right)_{\text {。 }} P(Y=Ck∣X=x)。
P ( Y = C k ∣ X = x ) = P ( X = x ∣ Y = C k ) P ( Y = C k ) P ( X = x ) = P ( X = x ∣ Y = C k ) P ( Y = C k ) ∑ k P ( X = x , Y = C k ) = P ( X = x ∣ Y = C k ) P ( Y = C k ) ∑ k P ( X = x ∣ Y = C k ) P ( Y = C k ) \begin{aligned} P\left(Y=C_{\mathrm{k}} \mid X=x\right)=& \frac{P\left(X=x \mid Y=C_{k}\right) P\left(Y=C_{k}\right)}{P(X=x)} \\ =& \frac{P\left(X=x \mid Y=C_{k}\right) P\left(Y=C_{k}\right)}{\sum_{k} P\left(X=x, Y=C_{k}\right)} \\ =& \frac{P\left(X=x \mid Y=C_{k}\right) P\left(Y=C_{k}\right)}{\sum_{k} P\left(X=x \mid Y=C_{k}\right) P\left(Y=C_{k}\right)} \end{aligned} P(Y=Ck∣X=x)===P(X=x)P(X=x∣Y=Ck)P(Y=Ck)∑kP(X=x,Y=Ck)P(X=x∣Y=Ck)P(Y=Ck)∑kP(X=x∣Y=Ck)P(Y=Ck)P(X=x∣Y=Ck)P(Y=Ck)
并且由于每一张图片是8x8的像素点组成,可以看作一个一维64数组,这里是把样本X拆开
P ( X = x ∣ Y = C k ) = P ( X ( 1 ) = x ( 1 ) ∣ Y = C k ) P ( X ( 2 ) = x ( 2 ) ∣ Y = C k ) ⋯ P ( X ( j ) = x ( j ) ∣ Y = C k ) = ∏ j P ( X ( j ) = x ( j ) ∣ Y = C k ) \begin{aligned} \mathrm{P}\left(X=x \mid Y=C_{k}\right) &=P\left(X^{(1)}=x^{(1)} \mid Y=C_{k}\right) P\left(X^{(2)}=x^{(2)} \mid Y=C_{k}\right) \cdots P\left(X^{(j)}=x^{(j)} \mid Y=C_{k}\right) \\ &=\prod_{j} P\left(X^{(j)}=x^{(j)} \mid Y=C_{k}\right) \end{aligned} P(X=x∣Y=Ck)=P(X(1)=x(1)∣Y=Ck)P(X(2)=x(2)∣Y=Ck)⋯P(X(j)=x(j)∣Y=Ck)=j∏P(X(j)=x(j)∣Y=Ck)
因此上式可以化简为:
KaTeX parse error: Expected 'EOF', got '&' at position 45: …d X = x\right) &̲ = \frac{P\left…
f ( x ) = argmax C k P ( Y = C k ∣ X = x ) = P ( Y = C k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = C k ) ∑ k P ( Y = C k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = C k ) = P ( Y = C k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = C k ) \begin{aligned} f(x)=\underset{C_{k}}{\operatorname{argmax}} P\left(Y=C_{k} \mid X=x\right) &=\frac{P\left(Y=C_{k}\right) \prod_{j} P\left(X^{(j)}=x^{(j)} \mid Y=C_{k}\right)}{\sum_{k} P\left(Y=C_{k}\right) \prod_{j} P\left(X^{(j)}=x^{(j)} \mid Y=C_{k}\right)} \\ &=P\left(Y=C_{k}\right) \prod_{j} P\left(X^{(j)}=x^{(j)} \mid Y=C_{k}\right) \end{aligned} f(x)=CkargmaxP(Y=Ck∣X=x)=∑kP(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)P(Y=Ck)∏jP(X(j)=x(j)∣Y=Ck)=P(Y=Ck)j∏P(X(j)=x(j)∣Y=Ck)
其中 argmax C k \underset{C_{k}}{\operatorname{argmax}} Ckargmax意味找到让后面这个概率最大的 C k C_{k} Ck,其中:
∑ k ∏ j p ( X ( j ) = x ( j ) ∣ Y = C k ) p ( Y = C k ) = ∑ k ∑ j p ( X ( j ) = x ( j ) , Y = C k ) = ∑ j P ( X ( j ) = x ( j ) ) = P ( X = x ) \begin{array}{l} \sum_{k} \prod_{j} p\left(X^{(j)}=x^{(j)} \mid Y=C_k) p(Y=C_k)\right. \\ =\sum_{k } \sum_{j} p\left(X^{(j)}=x^{(j)}, Y=C_{k}\right)=\sum_{j} P\left(X^{(j)}=x^{(j)}\right) \\ =P(X=x) \end{array} ∑k∏jp(X(j)=x(j)∣Y=Ck)p(Y=Ck)=∑k∑jp(X(j)=x(j),Y=Ck)=∑jP(X(j)=x(j))=P(X=x)
朴素贝叶斯法的参数估计
极大似然估计
在朴素贝叶斯法中, 学习意味着估计 P ( Y = c k ) P\left(Y=c_{k}\right) P(Y=ck) 和 P ( X ( j ) = x ( j ) ∣ Y = c k ) P\left(X^{(j)}=x^{(j)} \mid Y=c_{k}\right) P(X(j)=x(j)∣Y=ck) 。可以 应用极大似然估计法估计相应的概率。先验概率 P ( Y = c k ) P\left(Y=c_{k}\right) P(Y=ck) 的极大似然估计是
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N , k = 1 , 2 , ⋯ , K P\left(Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)}{N}, \quad k=1,2, \cdots, K P(Y=ck)=N∑i=1NI(yi=ck),k=1,2,⋯,K
设第 j 个特征 $x^{(j)} $ 可能取值的集合为 { a j 1 , a j 2 , ⋯ , a j S j } \left\{a_{j 1}, a_{j 2}, \cdots, a_{j S_{j}}\right\} { aj1,aj2,⋯,ajSj}, 条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P\left(X^{(j)}=a_{j l} \mid Y=\right. \left.c_{k}\right) P(X(j)=ajl∣Y=ck) 的极大似然估计是
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) j = 1 , 2 , ⋯ , n ; l = 1 , 2 , ⋯ , S j ; k = 1 , 2 , ⋯ , K \begin{array}{l} P\left(X^{(j)}=a_{j l} \mid Y=c_{k}\right)=\frac{\sum_{i=1}^{N} I\left(x_{i}^{(j)}=a_{j l}, y_{i}=c_{k}\right)}{\sum_{i=1}^{N} I\left(y_{i}=c_{k}\right)} \\ j=1,2, \cdots, n ; \quad l=1,2, \cdots, S_{j} ; \quad k=1,2, \cdots, K \end{array} P(X(j)=ajl∣Y=ck)=∑i=1NI(yi=ck)∑i=1NI(xi(j)=ajl,yi=ck)j=1,2,⋯,n;l=1,2,⋯,Sj;k=1,2,⋯,K
式中, x i ( j ) x_{i}^{(j)} xi(j) 是第 i 个样本的第 j 个特征; a j l a_{j l} ajl 是第 j 个特征可能取的第 l 个值; I I I 为指 示函数。
边栏推荐
- Openwrt_树莓派B+_Wifi中继
- 记某社区问答
- What attributes and methods are available for page directives in JSP pages?
- Spend 2 hours a day to make up for Tencent T8, play 688 pages of SSM framework and Redis, and successfully land on Meituan
- ORBSLAM代码阅读
- 【SeaTunnel】从一个数据集成组件演化成企业级的服务
- LeetCode_2357_使数组种所有元素都等于零
- 破解wifi密码 暴力破解 保姆式教学
- 新起点丨MeterSphere开源持续测试平台v2.0发布
- Analysis of software testing technology How far is Turing test from us
猜你喜欢

Worship, Alibaba distributed system development and core principle analysis manual

Redis数据结构

单词接龙 II

LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之一:解题思路

Pycharm (1) the basic use of tutorial
主流监控系统工具选型及落地场景参考

location对象,navigator对象,history对象学习

线程池的使用及ThreadPoolExecutor源码分析

【打新必读】麦澜德估值分析,骨盆及产后康复电刺激产品

spark:页面单跳转换率统计(案例)
随机推荐
The use of thread pool and analysis of ThreadPoolExecutor source code
system_error错误处理库学习
Rust 从入门到精通03-helloworld
leetcode:639. 解码方法 II
你有了解过这些架构设计,架构知识体系吗?(架构书籍推荐)
Redis数据结构
二维数组零碎知识梳理
LeetCode_2358_分组的最大数量
node封装一个图片拼接插件
新起点丨MeterSphere开源持续测试平台v2.0发布
“蔚来杯“2022牛客暑期多校训练营4
JS中的数组方法
使用scrapy 把爬到的数据保存到mysql 防止重复
不用Swagger,那我用啥?
Golang ORM框架 — GORM
利用minlm比较句子之间的相似度
Jenkins--基础--07--Blue Ocean
AutoJs学习-实现科赫雪花
了解下C# 多线程
HCIP笔记十六天