朴素贝叶斯(naive bayes)分类
1. 概念回顾
1.1 条件概率公式
条件概率是指在事件B发生的条件下,事件A发生的概率。条件概率表示为P(A∣B)P(A|B)P(A∣B),读作“A在B发生的条件下发生的概率”。若只有两个事件A、B,那么有:
P(A∣B)=P(AB)P(B)P(A|B)=\frac{P(AB)}{P(B)} P(A∣B)=P(B)P(AB)
1.2 全概率公式
若事件B1,B2,...,BnB_1,B_2,...,B_nB1,B2,...,Bn构成一个完备事件组且都有正概率,则对任意一个事件A都有:
P(A)=∑i=1nP(Bi)P(A∣Bi)P(A)=\sum_{i=1}^{n}P(B_i)P(A|B_i) P(A)=i=1∑nP(Bi)P(A∣Bi)
1.3 贝叶斯定理
贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。
P(Bi∣A)=P(Bi)P(A∣Bi)P(A)=P(Bi)P(A∣Bi)∑j=1nP(Bj)P(A∣Bj)\begin{aligned} P(B_i|A)&=\frac{P(B_i)P(A|B_i)}{P(A)} &=\frac{P(B_i)P(A|B_i)}{\sum_{j=1}^{n} P(B_j)P(A|B_j)} \end{aligned} P(Bi∣A)=P(A)P(Bi)P(A∣Bi)=∑j=1nP(Bj)P(A∣Bj)P(Bi)P(A∣Bi)
贝叶斯定理建立了P(A∣B)P(A|B)P(A∣B)和P(B∣A)P(B|A)P(B∣A)之间的联系,结合条件概率公式,具体推导过程为:
P(A∣B)=P(AB)P(B)⇒P(AB)=P(A∣B)P(B)P(B∣A)=P(AB)P(A)=P(A∣B)P(B)P(A)P(A|B)=\frac{P(AB)}{P(B)} \Rightarrow P(AB)=P(A|B)P(B) \\ P(B|A)=\frac{P(AB)}{P(A)}=\frac{P(A|B)P(B)}{P(A)} P(A∣B)=P(B)P(AB)⇒P(AB)=P(A∣B)P(B)P(B∣A)=P(A)P(AB)=P(A)P(A∣B)P(B)
2. 朴素贝叶斯(Naive Bayes)
2.1 定义
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法,其名称中的“朴素”就体现在“特征条件独立(所有特征变量相互独立)”这一假设中。朴素贝叶斯法的基本假设是条件独立性。
基本步骤:
- 对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;
- 然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。
参考博文[2]中给出了贝叶斯原理(贝叶斯定理)、贝叶斯分类和朴素贝叶斯之间的直观解释图示:
2.2 基本方法(公式推导)
首先定义:
- 输入空间为I⊆RnI \subseteq R^nI⊆Rn为n维向量的集合,输出空间为类标签集合C=c1,c2,...,cKC={c_1,c_2,...,c_K}C=c1,c2,...,cK;
- 输入为特征向量x∈Ix\in Ix∈I,输出为类标签(class label,代表所属类别)y∈Cy\in Cy∈C;
- XXX是定义在输入空间III上的随机向量,YYY是定义在空间CCC上的随机变量;
- P(X,Y)P(X,Y)P(X,Y)是XXX和YYY的联合概率分布;
- 训练数据集T=(x1,y1),(x2,y2),...,(xN,yN)T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}T=(x1,y1),(x2,y2),...,(xN,yN)由P(X,Y)P(X,Y)P(X,Y)独立同分布产生。
则,朴素贝叶斯法通过训练数据集TTT学习得到联合概率分布P(X,Y)P(X,Y)P(X,Y)。具体来说,就是利用训练数据学习得到先验概率P(Y)P(Y)P(Y)及条件概率P(X∣Y)P(X|Y)P(X∣Y)的估计,然后求得联合概率分布。先验概率和条件概率的估计方法可以是极大似然估计或贝叶斯估计等方法,具体在下一节中介绍。
先验概率分布为:
P(Y=ck),k=1,2,...,K(1)P(Y=c_k),\text{ }k=1,2,...,K \tag{1} P(Y=ck), k=1,2,...,K(1)
条件概率分布为:
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck),k=1,2,...,K(2)P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k), \text{ } k=1,2,...,K \tag{2} P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n)∣Y=ck), k=1,2,...,K(2)
由(1)和(2)结合条件概率公式,可以计算得到联合概率分布P(X,Y)P(X,Y)P(X,Y)。
条件独立性假设是说用于分类的特征在类确定的条件下都是条件独立的。这一假设使朴素贝叶斯法变得简单,但有时会牺牲一定的分类准确率。
根据条件独立性的假设,有:
P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n))=∏j=1nP(X(j)=x(j)∣Y=ck)(3)\begin{aligned} P(X=x|Y=c_k)&=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}) \\ &=\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) \end{aligned} \tag{3} P(X=x∣Y=ck)=P(X(1)=x(1),...,X(n)=x(n))=j=1∏nP(X(j)=x(j)∣Y=ck)(3)
根据贝叶斯定理并结合公式(3)可计算后验概率为:
P(Y=ck∣X=x)=P(X=x∣Y=ck)P(Y=ck)P(X=x)=P(X=x∣Y=ck)P(Y=ck)∑kP(X=x∣Y=ck)P(Y=ck)=P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)∑kP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)(4)\begin{aligned} P(Y=c_k|X=x)&=\frac{P(X=x|Y=c_k)P(Y=c_k)}{P(X=x)} \\ &=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_{k}P(X=x|Y=c_k)P(Y=c_k)} \\ &=\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)} \end{aligned} \tag{4} P(Y=ck∣X=x)=P(X=x)P(X=x∣Y=ck)P(Y=ck)=∑kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)=∑kP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)(4)
这是朴素贝叶斯法的基本公式。那么,朴素贝叶斯分类器就是在类标签集合CCC中找到ckc_kck使其满足下式:
y=f(x)=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)∑kP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)(5)y=f(x)=argmax_{c_k} \frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)} \tag{5} y=f(x)=argmaxck∑kP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)(5)
上式中分母对所有ckc_kck相同,因此可以简化为:
y=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)(7)y=argmax_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) \tag{7} y=argmaxckP(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)(7)
2.3 朴素贝叶斯法的参数估计
这里是前一个章节(2.2)部分的扩展,通过概率估计方法求得先验概率和条件概率,进而求取联合概率。
2.3.1 极大似然估计
(1)公式推导
先验概率P(Y=ck)P(Y=c_k)P(Y=ck)的极大似然估计是:
P(Y=ck)=∑i=1NI(yi=ck)N,k=1,2,...,K(8)P(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N} \text{ } ,k=1,2,...,K \tag{8} P(Y=ck)=N∑i=1NI(yi=ck) ,k=1,2,...,K(8)
即为类标签ckc_kck出现的频率。
设第j个特征x(j)x^{(j)}x(j)可能取值的集合为{aj1,aj2,...,ajSj}\{a_{j1},a_{j2},...,a_{jS_j}\}{aj1,aj2,...,ajSj},则根据条件概率公式,条件概率P(X(j)=ajl∣Y=ck)P(X^{(j)}=a_{jl}|Y=c_k)P(X(j)=ajl∣Y=ck)的极大似然估计为:
P(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K(9)P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)} \\ j=1,2,...,n; l=1,2,...,S_j; k=1,2,...,K \tag{9} 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(9)
(2)参考示例
(书中例题4.1)试由表中的训练数据学习一个朴素贝叶斯分类器并确定x=(2,S)Tx=(2,S)^Tx=(2,S)T的类标签yyy。表中X(1)X^{(1)}X(1)、X(2)X^{(2)}X(2)为特征,取值的集合为A1={1,2,3}A_1=\{1,2,3\}A1={1,2,3},A2={S,M,L}A_2=\{S,M,L\}A2={S,M,L},YYY为类标签,Y∈C={1,−1}Y\in C=\{1,-1\}Y∈C={1,−1}。
2.3.2 贝叶斯估计&拉普拉斯平滑
(1)公式推导
极大似然估计可能会出现所要估计的概率值为0的情况,这会影响结果,解决这个问题可以采用贝叶斯估计。
为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑(Laplace smoothing)。假定训练样本很大时,每个分量的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。在实际的使用中也经常使用加λ\lambdaλ来代替简单加1。如果对N个计数都加上λ\lambdaλ,这时分母也要记得加上N∗λN * \lambdaN∗λ。
条件概率的贝叶斯估计是:
P(X(j)=ajl,yi=ck)=∑i=1NI(xi(j)=ajl,yi=ck)+λ∑i=1NI(yi=ck)+Sjλ(10)P(X^{(j)}=a_{jl},y_i=c_k)=\frac{\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}I(y_i=c_k)+S_j\lambda} \tag{10} P(X(j)=ajl,yi=ck)=∑i=1NI(yi=ck)+Sjλ∑i=1NI(xi(j)=ajl,yi=ck)+λ(10)
在上式中,λ≥0\lambda \geq 0λ≥0。且当λ=0\lambda=0λ=0就是极大似然估计,当λ=1\lambda=1λ=1时就是拉普拉斯平滑。
先验概率的贝叶斯估计为:
Pλ(Y=ck)=∑i=1NI(yi=ck)+λN+Kλ(11)P_{\lambda}(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)+\lambda}{N+K\lambda} \tag{11} Pλ(Y=ck)=N+Kλ∑i=1NI(yi=ck)+λ(11)
(2)参考示例
(书中例题4.2)问题同例4.1,按照拉普拉斯平滑估计概率,即取λ=1\lambda=1λ=1。
参考
[1] 《统计学习方法》第四章. 李航
[2] https://blog.csdn.net/qiu_zhi_liao/article/details/90671932
[3] https://www.cnblogs.com/bqtang/p/3693827.html
朴素贝叶斯(naive bayes)分类相关推荐
- 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测
目录 一.简介和环境准备 简介: 环境: 二.实战演练 2.1使用葡萄(Wine)数据集,进行贝叶斯分类 1.数据导入 2.模型训练 3.模型预测 2.2模拟离散数据集–贝叶斯分类 1.数据导入.分析 ...
- 朴素贝叶斯(naive bayes)
朴素贝叶斯(naive bayes) 标签: Python 机器学习 主要參考资料:<机器学习实战><统计学习方法> 1.朴素贝叶斯分类原理 朴素贝叶斯法是基于贝叶斯定理和特征 ...
- 机器学习一:朴素贝叶斯(Naive Bayes)
朴素贝叶斯 Naive Bayes 1. Introduction 1.1 离散属性 1.2 连续属性 1.2.1 Gaussian Naive Bayes 1.2.2 Multinomial Nai ...
- 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇
[手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...
- 机器学习笔记——朴素贝叶斯(Naive Bayes)
1贝叶斯算法简介 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算 ...
- 机器学习(十)分类算法之朴素贝叶斯(Naive Bayes)算法
贝叶斯定理 首先我们来了解一下贝叶斯定理: 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? 了解一下公式 事件B发生的条件下,事件A发生的概率为: 这里写图片描述 同 ...
- 机器学习算法: 朴素贝叶斯(Naive Bayes)
朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...
- spark mllib 朴素贝叶斯 naive bayes
为什么80%的码农都做不了架构师?>>> 数据源说明 第一列每行的标签,其他列为特征 运行代码如下 package spark.logisticRegressionimport ...
- 朴素贝叶斯(Naive Bayes),“Naive”在何处?
加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法(Naive Bayes). Naive的发音是"乃一污",意思是"朴素的"."幼稚的".&q ...
- 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes
文章目录 0. 前言 1. 朴素贝叶斯算法 2. 半朴素贝叶斯算法 2.1. ODE 2.2. SPODE 2.3. TAN 2.4. AODE 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔 ...
最新文章
- 多线程之旅之四——浅谈内存模型和用户态同步机制
- 【项目管理】git和码云的使用
- linux下查看mysql版本的四种方法
- 【leetcode】1023. Camelcase Matching
- AAAI2021-基于对比学习的三元组生成式抽取方法
- 【Matlab】符号运算总结
- html背景颜色代码格式,html常用背景颜色代码.docx
- 计算机拓展训练论文,素质拓展训练论文拓展训练论文
- 【闲】获取视频选集(每集)名字
- 独家揭秘:小程序销售额破千万,他们怎么做到的
- Electropure EDI 中国区2019年年度总结会议
- 腾讯云服务器带贵的原因?
- 详记Android打开相机拍照流程
- Python 如何随机生成手机号?
- 2-vulnhub靶场,Earth
- 游戏植物僵尸和POP开发技术
- 北斗导航产业迎爆发式增长
- php单选按钮关闭文本框,使用php在html中显示单选按钮文本(Display radio button text in html with php)...
- 编程流量老师最近几届pyhon编程与学员赚钱技术绝活纯提炼代码分享
- IOS开发—IOS绘制圆,直线,弧线,矩形,扇形,三角形,贝塞尔等图形