贝叶斯分类器


贝叶斯分类是一种分类算法的总称,这种算法的均以贝叶斯定理为基础。

贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公司计算出其后验概率,即该对象属于某一类的概率。

主要的特点

  • 属性可以离散、也可以是连续
  • 数学基础扎实,分类效率稳定
  • 对缺失和噪声数据不敏感
  • 属性如果不相关,分类效果很好,如果相关,则不低于决策树。

贝叶斯定理

SSS为试验EEE的样本空间。B1,B2⋯ ,BnB_1,B_2\cdots,B_nB1,B2,BnEEE的一组事件,若

  • Bi⋂Bj=∅,i≠j,i,j=1,2,⋯ ,nB_i \bigcap B_j=\empty,i\ne j ,i,j=1,2,\cdots,nBiBj=,i̸=j,i,j=1,2,,n
  • B1⋃B2⋯⋃Bn=SB_1\bigcup B_2 \cdots \bigcup B_n=SB1B2Bn=S

则称B1,B2,⋯ ,BnB_1,B_2,\cdots,B_nB1,B2,,Bn为样本空间SSS的一个划分。如果B1,B2,⋯ ,BnB_1,B_2,\cdots,B_nB1,B2,,Bn为样本的一个划分,则对于每次试验,事件中有且仅有一个事件发生。

全概率公式:设试验EEE的样本空间为SSS,A为E的事件,B1,B2⋯ ,BnB_1,B_2\cdots,B_nB1,B2,Bn为样本空间SSS的一个划分,且P(Bi)≥0,i=1,2,3⋯ ,nP(B_i)\ge 0 ,i=1,2,3\cdots,nP(Bi)0,i=1,2,3,n
P(A)=P(A∣B1)P(B1)+⋯+P(A∣Bn)P(Bn)=∑j=1nP(A∣Bj)P(Bj) P(A)=P(A|B_1)P(B_1) + \cdots + P(A|B_n)P(B_n)=\sum_{j=1}^n P(A|B_j)P(B_j) P(A)=P(AB1)P(B1)++P(ABn)P(Bn)=j=1nP(ABj)P(Bj)
贝叶斯定理:设试验EEE的样本空间维SSS,A为E的事件,B1,B2⋯ ,BnB_1,B_2\cdots,B_nB1,B2,Bn为样本空间S的一个划分,且P(A)>0,P(Bi)≥0,i=1,2⋯nP(A)>0,P(B_i)\ge 0 , i=1,2\cdots nP(A)>0,P(Bi)0,i=1,2n,则有
P(Bi∣A)=P(A∣Bi)P(Bi)∑i=1nP(A∣Bi)P(Bi) P(B_i|A) = \frac{P(A|B_i)P(B_i)}{\sum\limits_{i=1}^n P(A|B_i)P(B_i)} P(BiA)=i=1nP(ABi)P(Bi)P(ABi)P(Bi)

朴素贝叶斯法

设样本x⃗=(x(1),x(2),⋯ ,x(n))T∈X⊆Rn\vec{x}=(x^{(1)},x^{(2)},\cdots,x^{(n)})^T\in \mathcal{X}\sube \mathbb{R}^nx =(x(1),x(2),,x(n))TXRn,设标记y∈Y={c1,c2,⋯ ,ck}y\in \mathcal{Y}=\{c_1,c_2,\cdots,c_k\}yY={c1,c2,,ck}。令XXXX\mathcal{X}X上的随机向量,Y为Y\mathcal{Y}Y 上的随机向量。P(X,Y)为X和Y的联合概率分布。假定训练数据集T={(x1⃗,y1),(x2⃗,y2),⋯ ,(xn⃗,yn)}T=\{(\vec{x_1},y_1),(\vec{x_2},y_2),\cdots,(\vec{x_n},y_n)\}T={(x1 ,y1),(x2 ,y2),,(xn ,yn)}由P(X,Y)独立同分布。那么朴素贝叶斯可从训练数据集中学习联合概率分布P(X,Y)。

  • 先验概率分布: P(Y=ck),k=1,2,⋯ ,KP(Y=c_k),k=1,2,\cdots,KP(Y=ck),k=1,2,,K
  • 条件概率分布:P(X=x⃗∣Y=ck),k=1,2,⋯ ,KP(X=\vec{x}|Y=c_k),k=1,2,\cdots,KP(X=x Y=ck),k=1,2,,K

朴素贝叶斯法假设:在分类确定的条件下,用于分类的特征是条件独立的。即
P(X=x⃗∣Y=ck)=P(X(1)=x(1),X(2)=x(2),⋯ ,X(n)=x(n)∣Y=ck)=∏i=1nP(X(i)=x(i)∣Y=ck),k=1,2,⋯ ,K \begin{aligned} P(X=\vec{x}|Y=c_k) &=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},\cdots,X^{(n)}=x^{(n)}|Y=c_k) \\ & = \prod_{i=1}^n P(X^{(i)}=x^{(i)}|Y=c_k),k=1,2,\cdots,K \end{aligned} P(X=x Y=ck)=P(X(1)=x(1),X(2)=x(2),,X(n)=x(n)Y=ck)=i=1nP(X(i)=x(i)Y=ck),k=1,2,,K
根据贝叶斯定理
P(Y=ck∣X=x⃗)=P(X=x⃗∣Y=ck)P(Y=ck)∑i=1KP(X=x⃗∣Y=ci)P(Y=ci) P(Y=c_k|X=\vec{x}) = \frac{P(X=\vec x | Y=c_k)P(Y=c_k)}{\sum\limits_{i=1}^K P(X=\vec x|Y=c_i)P(Y=c_i)} P(Y=ckX=x )=i=1KP(X=x Y=ci)P(Y=ci)P(X=x Y=ck)P(Y=ck)
考虑分类特征的条件独立假设有
P(Y=ck∣X=x⃗)=P(Y=ck)∏i=1nP(X(i)=x(i)∣Y=ck)∑i=1KP(X=x⃗∣Y=ci)P(Y=ci),k=1,2⋯ ,K P(Y=c_k|X=\vec{x}) = \frac{P(Y=c_k)\prod\limits_{i=1}^n P(X^{(i)}=x^{(i)}|Y=c_k)}{\sum\limits_{i=1}^K P(X=\vec x|Y=c_i)P(Y=c_i)},k=1,2\cdots,K P(Y=ckX=x )=i=1KP(X=x Y=ci)P(Y=ci)P(Y=ck)i=1nP(X(i)=x(i)Y=ck),k=1,2,K
由于朴素贝叶斯分类器表示为:
y=f(x⃗)=arg⁡max⁡ckP(Y=ck)∏i=1nP(X(i)=x(i)∣Y=ck)∑i=1KP(X=x⃗∣Y=ci)P(Y=ci) y=f(\vec x) = \arg \underset{c_k}{\max} \frac{P(Y=c_k)\prod\limits_{i=1}^n P(X^{(i)}=x^{(i)}|Y=c_k)}{\sum\limits_{i=1}^K P(X=\vec x|Y=c_i)P(Y=c_i)} y=f(x )=argckmaxi=1KP(X=x Y=ci)P(Y=ci)P(Y=ck)i=1nP(X(i)=x(i)Y=ck)
由于对所有的ck,k=1,2,⋯ ,Kc_k,k=1,2,\cdots,Kck,k=1,2,,K,上式的分母都相同,因此上式可以重写为
y=f(x⃗)=arg⁡max⁡ckP(Y=ck)∏i=1nP(X(i)=x(i)∣Y=ck) y=f(\vec x) = \arg \underset{c_k}{\max} P(Y=c_k)\prod_{i=1}^n P(X^{(i)}=x^{(i)}|Y=c_k) y=f(x )=argckmaxP(Y=ck)i=1nP(X(i)=x(i)Y=ck)

朴素贝叶斯法的学习

在朴素贝叶斯法中,要学习的参数就是以下两种

  • 先验概率 P(Y=ck)P(Y=c_k)P(Y=ck)
  • 条件概率 P(X(j)=x(j)∣Y=ck)P(X^{(j)}=x^{(j)}|Y=c_k)P(X(j)=x(j)Y=ck)

通常采用极大似然估计这两种概率

  • 先验概率P(Y=ck)P(Y=c_k)P(Y=ck)的极大似然估计为
    P(Y=ck)=1N∑i=1NI(yi=ck),k=1,2,⋯ ,K P(Y=c_k)=\frac{1}{N} \sum_{i=1}^N I(y_i=c_k),k=1,2,\cdots,K P(Y=ck)=N1i=1NI(yi=ck),k=1,2,,K

  • 条件概率P(X(j)=ajl∣Y=ck)P(X^{(j)}=a_{jl}|Y=c_k)P(X(j)=ajlY=ck)的极大似然估计为
    P(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)j=1,2,⋯ ,nl=1,2,⋯ ,sjk=1,2,⋯ ,K P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum\limits_{i=1}^N I(x^{(j)}_i=a_{jl},y_i=c_k)}{\sum\limits_{i=1}^N I(y_i=c_k)} \\ j=1,2,\cdots,n \\ l = 1,2,\cdots,s_j \\ k=1,2,\cdots,K P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)j=1,2,,nl=1,2,,sjk=1,2,,K
    其中aj1,aj2⋯ ,ajsja_{j1},a_{j2}\cdots,a_{js_j}aj1,aj2,ajsj为第j个特征x(j)x^{(j)}x(j)可能的取值。

朴素贝叶斯算法

输入

训练集T={(x⃗1,y1),(x⃗2,y2),⋯ ,(x⃗N,yN)}T=\{(\vec x_1,y_1),(\vec x_2,y_2),\cdots,(\vec x_N,y_N)\}T={(x 1,y1),(x 2,y2),,(x N,yN)}x⃗i=(xi(1),xi(2),⋯ ,xi(n))T\vec x_i = (x^{(1)}_i,x^{(2)}_i,\cdots,x^{(n)}_i)^Tx i=(xi(1),xi(2),,xi(n))Txi(j)x^{(j)}_ixi(j)为第i个样本第j个特征,其中xi(j)∈{aj1,aj2,⋯ ,ajsj}x^{(j)}_i \in \{a_{j1},a_{j2},\cdots,a_{js_j}\}xi(j){aj1,aj2,,ajsj}ajla_{jl}ajl为j个特征可能取得的第l个值,j=1,2,⋯ ,n,l=1,2,⋯ ,sk,yi∈{c1,c2,⋯ ,ck}j=1,2,\cdots,n,l=1,2,\cdots,s_k,y_i\in\{c_1,c_2,\cdots,c_k\}j=1,2,,n,l=1,2,,sk,yi{c1,c2,,ck}

实例x⃗\vec xx

输出

实例x⃗\vec xx 的分类

算法步骤

  • 计算先验概率的估计值以及条件概率的估计值
    P(Y=ck)=1N∑i=1NI(yi=ck),k=1,2,⋯ ,KP(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)j=1,2,⋯ ,nl=1,2,⋯ ,sjk=1,2,⋯ ,K P(Y=c_k)=\frac{1}{N} \sum_{i=1}^N I(y_i=c_k),k=1,2,\cdots,K \\ P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum\limits_{i=1}^N I(x^{(j)}_i=a_{jl},y_i=c_k)}{\sum\limits_{i=1}^N I(y_i=c_k)} \\ j=1,2,\cdots,n \\ l = 1,2,\cdots,s_j \\ k=1,2,\cdots,K P(Y=ck)=N1i=1NI(yi=ck),k=1,2,,KP(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)j=1,2,,nl=1,2,,sjk=1,2,,K

  • 给于给定的实例x⃗=(x(1),x(2),⋯ ,x(n))T\vec x = (x^{(1)},x^{(2)},\cdots,x^{(n)})^Tx =(x(1),x(2),,x(n))T,计算
    P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck),k=1,2⋯ ,K P(Y=c_k)\prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k),k=1,2\cdots,K P(Y=ck)j=1nP(X(j)=x(j)Y=ck),k=1,2,K

  • 计算并返回实例x⃗\vec xx 的分类yyy
    y=arg⁡max⁡ckP(Y=ck)∏i=1nP(X(i)=x(i)∣Y=ck) y=\arg \underset{c_k}{\max} P(Y=c_k)\prod_{i=1}^n P(X^{(i)}=x^{(i)}|Y=c_k) y=argckmaxP(Y=ck)i=1nP(X(i)=x(i)Y=ck)

贝叶斯估计

设第jjj个特征x(j)x^{(j)}x(j)可能的取值为aj1,aj2,⋯ ,ajsja_{j1},a_{j2},\cdots,a_{js_j}aj1,aj2,,ajsj,则条件概率P(X(j)=ajl∣Y=ck)P(X^{(j)}=a_{jl}|Y=c_k)P(X(j)=ajlY=ck)的极大似然估计为
P(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)∑i=1NI(yi=ck)j=1,2,⋯ ,nl=1,2,⋯ ,sjk=1,2,⋯ ,K P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum\limits_{i=1}^N I(x^{(j)}_i=a_{jl},y_i=c_k)}{\sum\limits_{i=1}^N I(y_i=c_k)} \\j=1,2,\cdots,n \\l = 1,2,\cdots,s_j \\k=1,2,\cdots,K P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)j=1,2,,nl=1,2,,sjk=1,2,,K
用极大似然估计可能会出现分母为0的情况,因此可以采用贝叶斯估计(最大后验估计)
P(X(j)=ajl∣Y=ck)=∑i=1NI(xi(j)=ajl,yi=ck)+λ∑i=1NI(yi=ck)+sjλ P(X^{(j)}=a_{jl}|Y=c_k) = \frac{\sum\limits_{i=1}^N I(x^{(j)}_i=a_{jl},y_i=c_k)+\lambda}{\sum\limits_{i=1}^N I(y_i=c_k)+s_j\lambda} P(X(j)=ajlY=ck)=i=1NI(yi=ck)+sjλi=1NI(xi(j)=ajl,yi=ck)+λ
它满足概率分布函数的条件
Pλ(X(j)=ajl∣Y=ck)>0,l=1,2,⋯ ,sj,k=1,2,⋯ ,K∑l=1sjPλ(X(j)=ajl∣Y=ck)=1 P_{\lambda}(X^{(j)}=a_{jl}|Y=c_k) >0 , l=1,2,\cdots,s_j,k=1,2,\cdots,K \\\sum_{l=1}^{s_j}P_{\lambda}(X^{(j)}=a_{jl}|Y=c_k)=1 Pλ(X(j)=ajlY=ck)>0,l=1,2,,sj,k=1,2,,Kl=1sjPλ(X(j)=ajlY=ck)=1
此时P(Y=ck)P(Y=c_k)P(Y=ck)的贝叶斯估计调整为:
Pλ(Y=ck)=∑i=1NI(yi=ck)+λN+λ P_{\lambda}(Y=c_k)=\frac{\sum\limits_{i=1}^NI(y_i=c_k)+\lambda}{N+\lambda} Pλ(Y=ck)=N+λi=1NI(yi=ck)+λ

  • λ=0\lambda = 0λ=0时,为极大似然估计
  • λ=1\lambda=1λ=1时,为拉普拉斯平滑
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐