sklearn之各类朴素贝叶斯原理

news2025/2/24 23:27:45

sklearn之贝叶斯原理

  • 前言
  • 1 高斯朴素贝叶斯
    • 1.1 对连续变量的处理
    • 1.2 高斯朴素贝叶斯算法原理
  • 2 多项式朴素贝叶斯
    • 2.1 二项分布和多项分布
    • 2.2 详细原理
    • 2.3 如何判断是否符合多项式贝叶斯
  • 3 伯努利朴素贝叶斯
  • 4 类别贝叶斯
  • 4 补充朴素贝叶斯
    • 4.1 核心原理
    • 4.2 算法流程

前言

如果想看sklearn之贝叶斯应用可看:Sklearn之朴素贝叶斯应用
贝叶斯的原理可以看:贝叶斯分类器详解
根据这篇文章提到的原理,可知贝叶斯的核心公式是:
y = a r g m a x c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k )    ( 1 ) y=argmax_{c_{k}}P(Y=c_{k})\prod \limits_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_{k}) ~~(1) y=argmaxckP(Y=ck)j=1nP(X(j)=x(j)Y=ck)  (1)
”朴素贝叶斯“的多种变形算法的主要区别在于对条件概率的处理上,即: P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_{k}) P(X(j)=x(j)Y=ck),接下来围绕着这个公式对多种变形贝叶斯展开原理分析

1 高斯朴素贝叶斯

1.1 对连续变量的处理

例如:设汉堡的重量为特征 X i X_{i} Xi,令 X i = 100 X_{i}=100 Xi=100,则一个汉堡是100g的概率 P ( X i = 100 ∣ Y ) P(X_{i}=100|Y) P(Xi=100∣Y)是多少呢?由于重量是连续型数据,即重量有无数种情况,因此有:
P ( X i = 100 ∣ Y ) = lim ⁡ N → ∞ 1 N = 0 P(X_{i}=100|Y)=\lim_{N→\infty }\frac{1}{N}=0 P(Xi=100∣Y)=NlimN1=0
因此,考虑某点的概率没有任何意义,这种估算方法不可行
考虑换个角度:随机买一个汉堡,汉堡的重量在98g~102g之间的概率是多少?令特征 X i X_{i} Xi的取值为x,即所求概率为 P ( 98 < x < 102 ∣ Y ) P(98<x<102|Y) P(98<x<102∣Y),假设购买了100个汉堡,其中重量在98g-102g的汉堡有m个,则有:
P ( 98 < x < 102 ∣ Y ) = m 100 P(98<x<102|Y)=\frac{m}{100} P(98<x<102∣Y)=100m
基于100个汉堡绘制直方图,并规定每4g为一个区间,横坐标为汉堡的重量的分布,纵坐标为这个区间上汉堡的个数,如下图所示:
汉堡图
此时可以用面积来表示概率,即:
P ( 98 < x < 102 ∣ Y ) = m × 4 100 × 4 = 浅绿色区间面积 直方图所有区间的面积 P(98<x<102|Y)=\frac{m×4}{100×4}=\frac{浅绿色区间面积}{直方图所有区间的面积} P(98<x<102∣Y)=100×4m×4=直方图所有区间的面积浅绿色区间面积
如图购买10w个汉堡的直方图所示,其类似一条曲线,因此,当购买无数个汉堡的时候形成的曲线就叫做概率密度曲线(probability density function,PDF),此时整条曲线的面积表示为: ∫ − ∞ + ∞ f ( x ) d x \int_{-\infty}^{+\infty}f(x)dx +f(x)dx
此时对于连续特征X的取值x在区间 [ x i , x i + ϵ ] [x_{i},x_{i}+ϵ] [xi,xi+ϵ]的取值概率为:
P ( x i < x < x i + ϵ ∣ Y ) = ∫ x i x i + ϵ f ( x ) d x ≈ f ( x i ) × ϵ P(x_{i}<x<x_{i}+ϵ|Y)=\int_{x_{i}}^{x_{i}+ϵ}f(x)dx≈f(x_{i})×ϵ P(xi<x<xi+ϵY)=xixi+ϵf(x)dxf(xi)×ϵ
从贝叶斯分类器详解这篇文章可知公式:
y = f ( x ) = a r g m a x 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 ) y=f(x)=argmax_{c_{k}}P(Y=c_{k}|X=x) = \frac{P(Y=c_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})}{\sum_{k}P(Y=c_{k})\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_{k})} y=f(x)=argmaxckP(Y=ckX=x)=kP(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=ck)jP(X(j)=x(j)Y=ck)
通过上述式子可知:ϵ可以相互抵消,则仅用 f ( x i ) f(x_{i}) f(xi)就可以估算 P ( x i ∣ Y ) P(x_{i}|Y) P(xiY)了,即将求解连续型变量下某个点取值的概率问题,转化成了求解一个函数 f ( x ) f(x) f(x)在点 x i x_{i} xi上的取值的问题。 f ( x ) f(x) f(x)服从高斯分布,用该 f ( x ) f(x) f(x)去估算条件概率 P ( x i ∣ Y ) P(x_{i}|Y) P(xiY),这就是高斯朴素贝叶斯

1.2 高斯朴素贝叶斯算法原理

(1)原理
根据上述结论有:高斯贝叶斯算法假定数据样本在各个类别下,每个特征变量的条件概率均服从高斯分布 f ( x ) f(x) f(x),即:
f ( x i ) = p ( x i ∣ y c ) = 1 2 π σ c i 2 e x p ( − ( x i − μ c i ) 2 2 σ c i 2 ) f(x_{i})=p(x_{i}|y_{c})=\frac{1}{\sqrt{2\pi\sigma_{ci}^{2}}}exp(-\frac{(x_{i}-\mu_{ci})^{2}}{2\sigma_{ci}^{2}}) f(xi)=p(xiyc)=2πσci2 1exp(2σci2(xiμci)2)

  • 其中表示第 i i i个特征维度, σ c i \sigma_{ci} σci μ c i \mu_{ci} μci分别表示在类别 y = c y=c y=c下特征 x i x_{i} xi对应的标准差与期望。注意:这和1.1里面所讲的 x i x_{i} xi不是一个意思

由前言可知,之后进行极大化后验概率,为了防止下溢(结果小于所能表示的最小值的情况),因此取对数(以e为底),可得:
y = a r g m a x y c l o g ( P ( y c ) ∏ i = 0 n P ( x i ∣ y c ) ) = a r g m a x y c l o g ( P ( y c ) ∏ i = 0 n 1 2 π σ c i 2 e x p ( − ( x i − μ c i ) 2 2 σ c i 2 ) ) = a r g m a x y c [ l o g P ( y c ) + ∑ i = 0 n l o g ( 1 2 π σ c i 2 e x p ( − ( x i − μ c i ) 2 2 σ c i 2 ) ) ] = a r g m a x y c ( l o g P ( y c ) − 1 2 ∑ i = 0 n l o g 2 π σ c i 2 − 1 2 ∑ i = 0 n ( x i − μ c i ) 2 σ c i 2 ) \begin {aligned} {} y &=argmax_{y_{c}}log(P(y_{c})\prod\limits_{i=0}^{n}P(x_{i}|y_{c})) \\ &=argmax_{y_{c}}log(P(y_{c})\prod\limits_{i=0}^{n}\frac{1}{\sqrt{2\pi\sigma_{ci}^{2}}}exp(-\frac{(x_{i}-\mu_{ci})^{2}}{2\sigma_{ci}^{2}}))\\ & =argmax_{y_{c}}\begin{bmatrix} logP(y_{c})+\sum\limits_{i=0}^{n}log(\frac{1}{\sqrt{2\pi\sigma_{ci}^{2}}}exp(-\frac{(x_{i}-\mu_{ci})^{2}}{2\sigma_{ci}^{2}})) \end{bmatrix}\\ &=argmax_{y_{c}}(logP(y_{c})-\frac{1}{2}\sum\limits_{i=0}^{n}log2π\sigma_{ci}^{2}-\frac{1}{2}\sum\limits_{i=0}^{n}\frac{(x_{i}-\mu_{ci})^{2}}{\sigma_{ci}^{2}}) \end {aligned} y=argmaxyclog(P(yc)i=0nP(xiyc))=argmaxyclog(P(yc)i=0n2πσci2 1exp(2σci2(xiμci)2))=argmaxyc[logP(yc)+i=0nlog(2πσci2 1exp(2σci2(xiμci)2))]=argmaxyc(logP(yc)21i=0nlog2πσci221i=0nσci2(xiμci)2)
(2)示例
假设有如下连续型数据,一共有两个特征 x 0 x_{0} x0 x 1 x_{1} x1,如下表所示,预测x=[0.15,0.25]所属的类别,对数以底数e为底

样本 x 0 x_{0} x0 x 1 x_{1} x1所属类别
00.30.50
10.40.60
20.70.91
30.60.71

第一步:求先验概率
P ( y = 0 ) = l o g 1 2 ≈ − 0.693 P(y=0)=log\frac{1}{2}≈-0.693 P(y=0)=log210.693
P ( y = 1 ) = l o g 1 2 ≈ − 0.693 P(y=1)=log\frac{1}{2}≈-0.693 P(y=1)=log210.693
第二步:求方差和期望
y = 0 和 x 0 y=0和x_{0} y=0x0时,对应的期望和方差分别为:
μ 00 = 0.3 + 0.4 2 = 0.35 \mu_{00}=\frac{0.3+0.4}{2}=0.35 μ00=20.3+0.4=0.35
σ 00 2 = ( 0.3 − 0.35 ) 2 + ( 0.4 − 0.35 ) 2 2 = 0.0025 \sigma_{00}^{2}=\frac{(0.3-0.35)^{2}+(0.4-0.35)^2}{2}=0.0025 σ002=2(0.30.35)2+(0.40.35)2=0.0025
同理,最终可得期望矩阵和方差矩阵
μ = [ 0.35 0.55 0.65 0.8 ] \mu=\begin{bmatrix} 0.35&0.55 \\ 0.65& 0.8 \end{bmatrix} μ=[0.350.650.550.8]
σ 2 = [ 0.0025 0.0024 0.0025 0.01 ] \sigma^{2}=\begin{bmatrix} 0.0025& 0.0024\\ 0.0025 & 0.01 \end{bmatrix} σ2=[0.00250.00250.00240.01]
第三步:求条件概率
对于x=[0.15,0.25],当 y = 0 y=0 y=0时,有:
P ( x ∣ y = 0 ) = − 1 2 ∑ i = 0 n l o g 2 π σ 0 i 2 − 1 2 ∑ i = 0 n ( x i − μ 0 i ) 2 σ 0 i 2 = − 1 2 [ l o g ( 2 π × 0.0025 ) + l o g ( 2 π × 0.0024 ) ] − 1 2 [ ( 0.15 − 0.35 ) 2 0.0025 + ( 0.25 − 0.55 ) 2 0.0024 ] ≈ − 22.576 \begin {aligned} {} P(x|y=0)& =-\frac{1}{2}\sum\limits_{i=0}^{n}log2π\sigma_{0i}^{2}-\frac{1}{2}\sum\limits_{i=0}^{n}\frac{(x_{i}-\mu_{0i})^{2}}{\sigma_{0i}^{2}} \\&=-\frac{1}{2} [log(2π×0.0025)+log(2π×0.0024)]-\frac{1}{2}[\frac{(0.15-0.35)^{2}}{0.0025}+\frac{(0.25-0.55)^{2}}{0.0024}] \\ &≈-22.576 \end {aligned} P(xy=0)=21i=0nlog2πσ0i221i=0nσ0i2(xiμ0i)2=21[log(2π×0.0025)+log(2π×0.0024)]21[0.0025(0.150.35)2+0.0024(0.250.55)2]22.576
同理可得:
P ( x ∣ y = 1 ) ≈ − 61.665 P(x|y=1)≈-61.665 P(xy=1)61.665
第四步:求结果
对于x=[0.15,0.25],当 y = 0 y=0 y=0时,有:
P ( y = 0 ∣ x ) = P ( y = 0 ) + P ( x ∣ y = 0 ) = − 0.693 − 22.576 = − 23.269 P(y=0|x)=P(y=0)+P(x|y=0)=-0.693-22.576=-23.269 P(y=0∣x)=P(y=0)+P(xy=0)=0.69322.576=23.269
对于x=[0.15,0.25],当 y = 1 y=1 y=1时,有:
P ( y = 1 ∣ x ) = P ( y = 1 ) + P ( x ∣ y = 1 ) = − 0.693 − 61.665 = − 62.358 P(y=1|x)=P(y=1)+P(x|y=1)=-0.693-61.665=-62.358 P(y=1∣x)=P(y=1)+P(xy=1)=0.69361.665=62.358
综上,x属于y=0的概率最大,故x属于y=0这个类别

2 多项式朴素贝叶斯

2.1 二项分布和多项分布

(1)二项分布
二项分布
(2)多项分布
多项分布

2.2 详细原理

(1)原理
多项式朴素贝叶斯处理词袋模型时,则是将每个维度的词频在总词频中的占比来作为条件概率进行建模(一般使用词频法和TF-IDF表示法来配合多项式朴素贝叶斯的使用,这里讲的是词频法,详情见词袋模型)

​多项式朴素贝叶斯中,在一种标签类别 Y = c Y=c Y=c下,将条件概率分布的分布参数化为 θ c = ( θ c 1 , θ c 2 , ⋯   , θ c n ) \theta_{c}=(\theta_{c1},\theta_{c2},\cdots,\theta_{cn}) θc=(θc1,θc2,,θcn)

  • n表示训练集中的特征维度
  • θ c i \theta_{ci} θci是类别c下特征i的条件概率 P ( x i ∣ Y = c ) P(x_{i}|Y=c) P(xiY=c),表示当 Y = c Y=c Y=c条件固定时,一组样本在 x i x_{i} xi特征上的取值被取到的概率

参数通过极大似然估计可得:
θ c i = N c i N c \theta_{ci}=\frac{N_{ci}}{N_{c}} θci=NcNci

  • 其中 N c i N_{ci} Nci表示在训练集T中样本属于 Y = c Y=c Y=c类别下特征为 i i i的出现的频次,即 N c i = ∑ x ∈ T x i N_{ci}=\sum_{x \in T }x_{i} Nci=xTxi
  • N c N_{c} Nc表示在训练集T中样本属于 Y = c Y=c Y=c类别下所有特征的总频次,即 N c = ∑ i = 1 n N c i N_{c}=\sum\limits_{i=1}^{n}N_{ci} Nc=i=1nNci

令α>0来防止训练数据中出现0概率,以避免让参数θ为0的情况,可得如下式子:
θ c i = N c i + α N c + α n \theta_{ci}=\frac{N_{ci}+\alpha }{N_{c}+\alpha n} θci=Nc+αnNci+α

  • 将α设置为1,则这个平滑叫做拉普拉斯平滑
  • 如果α小于1,则把它叫做利德斯通平滑
  • 两种平滑都属于自然语言处理中比较常用的用来平滑分类数据的统计手段

由前言可知,之后进行极大化后验概率,为了防止下溢(结果小于所能表示的最小值的情况),因此取对数,可得:
y = a r g m a x c k l o g ( P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) ) y=argmax_{c_{k}}log(P(Y=c_{k})\prod \limits_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_{k})) y=argmaxcklog(P(Y=ck)j=1nP(X(j)=x(j)Y=ck))
由对数性质可知:
y = a r g m a x c k [ l o g ( P ( Y = c k ) ) + ∑ j = 1 n l o g ( P ( X ( j ) = x ( j ) ∣ Y = c k ) ) ] y=argmax_{c_{k}}[log(P(Y=c_{k}))+\sum\limits_{j=1}^{n}log(P(X^{(j)}=x^{(j)}|Y=c_{k}))] y=argmaxck[log(P(Y=ck))+j=1nlog(P(X(j)=x(j)Y=ck))]
条件概率计算的是训练集中特征维度的词频在总词频中的占比,而某个特征(即词语)可能出现多次,因此会出现连乘,在取对数的情况下,变成了加和(例如词语文本aab,特征a出现了两次),因此需要同时考虑到每个维度的词频:
y = a r g m a x c k [ l o g ( P ( Y = c k ) ) + ∑ j = 1 n f i l o g ( P ( X ( j ) = x ( j ) ∣ Y = c k ) ) ] y=argmax_{c_{k}}[log(P(Y=c_{k}))+\sum\limits_{j=1}^{n}f_{i}log(P(X^{(j)}=x^{(j)}|Y=c_{k}))] y=argmaxck[log(P(Y=ck))+j=1nfilog(P(X(j)=x(j)Y=ck))]

  • 其中 f i f_{i} fi表示特征维度i的词频

(2)例子
下述例子对数都以10为底
例子1
在词袋模型这篇文章中,中,由词频法的例子并假设都在类别Y=c中,可得:

BeijingChineseJapanMacaoShanghaiTokyoY
Chinese Beijing Chinese120000c
Chinese Chinese Shanghai020010c
Chinese Macao010100c
Tokyo Japan Chinese011001c

如上表格就是一个特征矩阵,行代表样本,列代表特征维度
仅以BeiJing特征作为例子,取α=1,求条件概率得:
θ = P ( B e i J i n g ∣ Y = c ) = 1 + 1 11 + 6 = 2 17 \theta=P(BeiJing|Y=c)=\frac{1+1}{11+6}=\frac{2}{17} θ=P(BeiJingY=c)=11+61+1=172
例子2
对类别和特征进行修改,为了方便,这里不再做平滑处理,如下所示:

BeijingShanghaiY
Beijing Beijing Beijing Shanghai310
Beijing Shanghai Shanghai121

现预测x=[25,2]所属的类别,取α=1

第一步:算各个类别的先验概率
P ( Y = 0 ) = l o g ( 1 2 ) ≈ − 0.30 P ( Y = 1 ) = l o g ( 1 2 ) ≈ − 0.30 P(Y=0)=log(\frac{1}{2})\approx -0.30 \\ \enspace \\ P(Y=1)=log(\frac{1}{2})\approx -0.30 P(Y=0)=log(21)0.30P(Y=1)=log(21)0.30
第二步:算条件概率
在类别Y=0的情况下有:
P ( B e i j i n g ∣ Y = 0 ) = l o g ( 3 3 + 1 ) ≈ − 0.12 P ( S h a n g h a i ∣ Y = 0 ) = l o g ( 1 3 + 1 ) ≈ − 0.60 P(Beijing|Y=0)=log(\frac{3}{3+1})\approx -0.12 \\ \enspace \\ P(Shanghai|Y=0)=log(\frac{1}{3+1})\approx -0.60 P(BeijingY=0)=log(3+13)0.12P(ShanghaiY=0)=log(3+11)0.60
在类别Y=1的情况下有:
P ( B e i j i n g ∣ Y = 1 ) = l o g ( 1 1 + 2 ) ≈ − 0.48 P ( S h a n g h a i ∣ Y = 1 ) = l o g ( 2 1 + 2 ) ≈ − 0.18 P(Beijing|Y=1)=log(\frac{1}{1+2})\approx -0.48 \\ \enspace \\ P(Shanghai|Y=1)=log(\frac{2}{1+2})\approx -0.18 P(BeijingY=1)=log(1+21)0.48P(ShanghaiY=1)=log(1+22)0.18
第三步:求后验概率
P ( Y = 0 ∣ x ) = P ( Y = 0 ) + 25 × P ( B e i j i n g ∣ Y = 0 ) + 2 × P ( S h a n g h a i ∣ Y = 0 ) = − 0.30 + 25 × − 0.12 + 2 × − 0.60 = − 4.5 P ( Y = 1 ∣ x ) = P ( Y = 1 ) + 25 × P ( B e i j i n g ∣ Y = 1 ) + 2 × P ( S h a n g h a i ∣ Y = 1 ) = − 0.30 + 25 × − 0.48 + 2 × − 0.18 = − 12.66 \begin {aligned} {} P(Y=0|x) & =P(Y=0)+25 \times P(Beijing|Y=0) +2\times P(Shanghai|Y=0) \\ & =-0.30+25\times -0.12+2\times-0.60\\ & =-4.5 \end {aligned}\\ \enspace \\ \begin {aligned} {} P(Y=1|x) & =P(Y=1)+25 \times P(Beijing|Y=1) +2\times P(Shanghai|Y=1) \\ & =-0.30+25\times -0.48+2\times-0.18\\ & =-12.66 \end {aligned} P(Y=0∣x)=P(Y=0)+25×P(BeijingY=0)+2×P(ShanghaiY=0)=0.30+25×0.12+2×0.60=4.5P(Y=1∣x)=P(Y=1)+25×P(BeijingY=1)+2×P(ShanghaiY=1)=0.30+25×0.48+2×0.18=12.66
显然在类别为0时概率更大,综上所述,x属于类0

2.3 如何判断是否符合多项式贝叶斯

根据多项分布的概念,以词袋模型为例,在文本分类中有如下假设:

  • 不考虑文本中单词之间的次序,即认为这两个文本‘ Love and Peace’和‘ Peace and Love’最后建模出来对应于同一个特征向量。不考虑文本单词之间的次序,会导致文本语义丢失。
  • 在类别为Y=c的文本中,每个单词的出现是相互独立。即在类别为Y=c的文本中,每次随机试验为随机从词表中抽取一个单词,进行n次独立重复试验

第2个假设只有满足了才保证了文本的特征随机向量 X X X满足多项式分布,即给定类别Y=c的文本,满足:
X ∼ M u l t i N o r m i a l ( n , θ c 1 , θ c 2 , ⋯   , θ c n ) X\sim MultiNormial(n,\theta_{c1},\theta_{c2},\cdots,\theta_{cn}) XMultiNormial(n,θc1,θc2,,θcn)
即满足了上述要求,可用多项式朴素贝叶斯推导过程里的方法求条件概率

3 伯努利朴素贝叶斯

(1)原理
BernoulliNB实现了按多元伯努利分布的数据的朴素贝叶斯训练和分类算法,即可能有多个特征,但每个特征都被假定为一个二元值(Bernoulli,boole)变量。因此,该类要求样本被表示为二值化的特征向量
伯努利朴素贝叶斯计算 P ( x i ∣ y ) P(x_{i}|y) P(xiy)仍然用到多项式朴素贝叶斯的方法:
θ c i = N c i + α N c + α n \theta_{ci}=\frac{N_{ci}+\alpha }{N_{c}+\alpha n} θci=Nc+αnNci+α
但伯努利朴素贝叶斯对条件概率新增处理是:
P ( x i ∣ y ) = P ( i ∣ y ) x i + ( 1 − P ( i ∣ y ) ( 1 − x i ) P(x_{i}|y)=P(i|y)x_{i}+(1-P(i|y)(1-x_{i}) P(xiy)=P(iy)xi+(1P(iy)(1xi)

  • 与多项式朴素贝叶斯的区别是,明确惩罚特征i的不出现,而多项式朴素贝叶斯会忽略未出现的特征

(2)例子

上述原理会觉得很难理解,给定具体例子就很好理解了,使用词袋模型这篇文章中所提到的独热法,得到下述数据:

BeijingShanghaiY
Beijing Beijing100
Shanghai Shanghai011
Shanghai Beijing112

为了方便,这里不再取对数且不做平滑处理,假设有一文本x为:Beijing,那它应该属于哪个类别?
第一步:算各个类别的先验概率
P ( Y = 0 ) = 1 3 P ( Y = 1 ) = 1 3 P ( Y = 2 ) = 1 3 P(Y=0)=\frac{1}{3} \\ \enspace \\ P(Y=1 )=\frac{1}{3} \\ \enspace \\ P(Y=2 )=\frac{1}{3} P(Y=0)=31P(Y=1)=31P(Y=2)=31
第二步:算条件概率
在类别Y=0的情况下有:
P ( B e i j i n g ∣ Y = 0 ) = 1 1 + 0 ) = 1 P ( S h a n g h a i ∣ Y = 0 ) = 0 1 + 0 = 0 P(Beijing|Y=0)=\frac{1}{1+0})=1 \\ \enspace \\ P(Shanghai|Y=0)=\frac{0}{1+0}=0 P(BeijingY=0)=1+01)=1P(ShanghaiY=0)=1+00=0
在类别Y=1的情况下有:
P ( B e i j i n g ∣ Y = 1 ) = 0 1 + 0 = 0 P ( S h a n g h a i ∣ Y = 1 ) = 1 1 + 0 = 1 P(Beijing|Y=1)=\frac{0}{1+0}=0 \\ \enspace \\ P(Shanghai|Y=1)=\frac{1}{1+0}=1 P(BeijingY=1)=1+00=0P(ShanghaiY=1)=1+01=1
在类别Y=2的情况下有:
P ( B e i j i n g ∣ Y = 2 ) = 1 1 + 1 = 0.5 P ( S h a n g h a i ∣ Y = 2 ) = 1 1 + 1 = 0.5 P(Beijing|Y=2)=\frac{1}{1+1}=0.5 \\ \enspace \\ P(Shanghai|Y=2)=\frac{1}{1+1}=0.5 P(BeijingY=2)=1+11=0.5P(ShanghaiY=2)=1+11=0.5
第三步:求后验概率
P ( Y = 0 ∣ x ) = P ( Y = 0 ) × P ( B e i j i n g ∣ Y = 0 ) × (1-P(Shanghai|Y=0)) = 1 3 P ( Y = 1 ∣ x ) = P ( Y = 1 ) × P ( B e i j i n g ∣ Y = 1 ) × (1-P(Shanghai|Y=1)) = 0 P ( Y = 2 ∣ x ) = P ( Y = 2 ) × P ( B e i j i n g ∣ Y = 2 ) × (1-P(Shanghai|Y=2)) = 1 12 P(Y=0|x) =P(Y=0)×P(Beijing|Y=0)× \textbf{(1-P(Shanghai|Y=0))} =\frac{1}{3} \\ \enspace \\ P(Y=1|x) =P(Y=1)×P(Beijing|Y=1)× \textbf{(1-P(Shanghai|Y=1))} =0 \\ \enspace \\ P(Y=2|x) =P(Y=2)×P(Beijing|Y=2)× \textbf{(1-P(Shanghai|Y=2))} =\frac{1}{12} P(Y=0∣x)=P(Y=0)×P(BeijingY=0)×(1-P(Shanghai|Y=0))=31P(Y=1∣x)=P(Y=1)×P(BeijingY=1)×(1-P(Shanghai|Y=1))=0P(Y=2∣x)=P(Y=2)×P(BeijingY=2)×(1-P(Shanghai|Y=2))=121
因此属于类0,上述加粗算式就是伯努利朴素贝叶斯的改进地方。对于某一个文本,若不存在该单词,若某类该单词概率越高,通过上述加粗算式的操作,使得该文本出现在该类的概率越低,这就是惩罚,而多项式朴素贝叶斯没有这种操作。

4 类别贝叶斯

(1)原理
这篇文章:贝叶斯分类器详解中所说的算法实际上就是朴素贝叶斯(可以直接看这篇文章即可),对条件概率的处理是:
P ( x i = t ∣ y = c ) = N t i c + α N c + α n i P(x_{i}=t|y=c)=\frac{N_{tic}+α}{N_{c}+αn_{i}} P(xi=ty=c)=Nc+αniNtic+α

  • N t i c N_{tic} Ntic是样本特征 x i x_{i} xi中出现类 t t t的次数,这些样本属于类别c; N c N_{c} Nc属于c类的样本数, n i n_{i} ni是特征i的可用类别数
  • 将α设置为1,则这个平滑叫做拉普拉斯平滑
  • 如果α小于1,则把它叫做利德斯通平滑
  • 两种平滑都属于自然语言处理中比较常用的用来平滑分类数据的统计手段

(2)例子
例子题目
对先验概率也做了一定的处理,可以忽略,重在看懂条件概率的处理过程
例子计算过程

4 补充朴素贝叶斯

4.1 核心原理

(1)多项式朴素贝叶斯公式改写
前面已经说过,多项式朴素贝叶斯的核心公式是:
θ c i = N c i + α N c + α n \theta_{ci}=\frac{N_{ci}+\alpha }{N_{c}+\alpha n} θci=Nc+αnNci+α
现假设在标签类别下 Y = c Y=c Y=c下,结构为(m,n)的特征矩阵如下:
X y = [ x 11 x 12 x 13 ⋯ x 1 n x 21 x 22 x 23 ⋯ x 2 n x 31 x 32 x 33 ⋯ x 3 n ⋯ x m 1 x m 2 x m 3 ⋯ x m n ] X_{y}=\begin{bmatrix} x_{11} & x_{12} &x_{13} & \cdots & x_{1n} \\ x_{21} & x_{22} & x_{23} &\cdots & x_{2n} \\ x_{31} & x_{32} & x_{33} &\cdots & x_{3n} \\ & & \cdots & & \\ x_{m1} & x_{m2} & x_{m3} &\cdots & x_{mn} \end{bmatrix} Xy= x11x21x31xm1x12x22x32xm2x13x23x33xm3x1nx2nx3nxmn

  • x j i x_{ji} xji表示样本 j j j的特征 i i i发生的次数,样本数为行,特征为列

根据该特征矩阵,可以对多项式朴素贝叶斯核心公式进行改写,如下:
θ c i = ∑ y i = c x j i + α ∑ i = 1 n ∑ y i = c x j i + α n \theta_{ci}=\frac{\sum_{y_{i}=c}x_{ji} +\alpha }{\sum_{i=1}^{n}\sum_{y_{i}=c}x_{ji}+\alpha n} θci=i=1nyi=cxji+αnyi=cxji+α
(2)补充朴素贝叶斯原理
其使用来自每个标签类别的补集的概率,并以此来计算每个特征的权重,如下:
θ i , y ≠ c = α i + ∑ y i ≠ c x i j α + ∑ i , y ≠ c ∑ i = 1 n x i j \theta_{i,y≠c}=\frac {\alpha_{i} + \sum_{y_{i}≠c}x_{ij} } {\alpha + \sum_{i,y≠c}\sum_{i=1}^{n}x_{ij}} θi,y=c=α+i,y=ci=1nxijαi+yi=cxij

  • x i j x_{ij} xij表示样本 j j j上对于特征 i i i下的取值,特征为行,样本为列
  • ∑ y i ≠ c x i j \sum_{y_{i}≠c}x_{ij} yi=cxij指特征 i i i下,所有标签类别不为 c c c的样本的特征取值之和
  • ∑ i , y ≠ c ∑ i = 1 n x i j \sum_{i,y≠c}\sum_{i=1}^{n}x_{ij} i,y=ci=1nxij指所有特征下,所有标签类别不为 c c c的样本的特征取值之和
  • α = ∑ i α i \alpha=\sum_{i}\alpha_{i } α=iαi

从上述公式可以看出:这就是多项式朴素贝叶斯的逆向思路
为了防止下溢,对其取对数,有:
w c i = l o g θ i , y ≠ c w_{ci}=log\theta_{i,y≠c} wci=logθi,y=c
还可以选择除以它的L2范式,以解决了在多项式分布中,特征取值比较多的样本(比如说比较长的文档)支配参数估计的情况。如下:
w c i = l o g θ i , y ≠ c ∑ j ∣ l o g θ i , y ≠ c ∣ w_{ci}=\frac {log\theta_{i,y≠c}} {\sum_{j}|log\theta_{i,y≠c}|} wci=jlogθi,y=clogθi,y=c
例如,样本1在参数估计中权重显然更大:

样本1样本2
x 1 x_{1} x150
x 2 x_{2} x211

基于 w c i w_{ci} wci,对于一个样本 X X X x i x_{i} xi是样本 X X X的特征,补充朴素贝叶斯的一个样本预测规则为:
P ( Y ≠ c ∣ X ) = a r g m i n c ∑ i x i w c i P(Y≠c|X)=argmin_{c}\sum\limits_{i}x_{i}w_{ci} P(Y=cX)=argmincixiwci

即我们求解出的最小补集概率所对应的标签就是样本的标签,因为 Y ≠ c Y≠c Y=c的概率越小,则 Y = c Y=c Y=c概率越大,因此属于类 c c c

4.2 算法流程

补充朴素贝叶斯的算法流程
X = { x 1 , ⋯   , x n } X=\{x_{1},\cdots,x_{n}\} X={x1,,xn}是一组数据集, x i j x_{ij} xij j j j文本中单词 i i i的计数
Y = { y 1 , ⋯   , y n } Y=\{y_{1},\cdots,y_{n}\} Y={y1,,yn}是该组数据集的标签
输入X和Y:

  1. x i j = l o g ( x i j + 1 ) \large{x_{ij}=log(x_{ij}+1)} xij=log(xij+1)
  2. x i j = x i j l o g ∑ k 1 ∑ k δ i k \large{x_{ij}=x_{ij}log\frac{\sum_{k}1}{\sum_{k}δ_{ik}}} xij=xijlogkδikk1
  3. x i j = x i j ∑ k ( x k j ) 2 \large{x_{ij}=\frac{x_{ij}}{\sqrt{\sum_{k}(x_{kj})^{2}}}} xij=k(xkj)2 xij
  4. θ i , y ≠ c = α i + ∑ y i ≠ c x i j α + ∑ i , y ≠ c ∑ i = 1 n x i j \large{\theta_{i,y≠c}=\frac{\alpha_{i} + \sum_{y_{i}≠c}x_{ij} }{\alpha + \sum_{i,y≠c}\sum_{i=1}^{n}x_{ij}}} θi,y=c=α+i,y=ci=1nxijαi+yi=cxij
  5. w c i = l o g θ i , y ≠ c \large{w_{ci}=log\theta_{i,y≠c}} wci=logθi,y=c
  6. w c i = w c i ∑ i w c i \large{w_{ci}=\frac{w_{ci}}{\sum_{i}w_{ci}}} wci=iwciwci
  7. t = { t 1 , ⋯   , t n } t=\{t_{1},\cdots,t_{n}\} t={t1,,tn}是测试文本, t i t_{i} ti是单词 i i i的计数
  8. 最后基于预测规则求出所属类别: l ( t ) = a r g m i n c ∑ i t i w c i l(t)=argmin_{c}\sum\limits_{i}t_{i}w_{ci} l(t)=argmincitiwci

这里对一些细节进行说明:

  1. x i j = l o g ( x i j + 1 ) \large{x_{ij}=log(x_{ij}+1)} xij=log(xij+1)可以更真实地处理文本,同时具备多项式朴素贝叶斯的优势
  2. x i j = x i j l o g ∑ k 1 ∑ k δ i k \large{x_{ij}=x_{ij}log\frac{\sum_{k}1}{\sum_{k}δ_{ik}}} xij=xijlogkδikk1对于 δ i k δ_{ik} δik,若单词 i i i出现在文本 k k k上,则 δ i k = 1 δ_{ik}=1 δik=1,否则为0。这个方法是为了对那些在每篇文档都出现的字进行处理,这些字不太重要,具体可看词袋模型的TF-IDF方法
  3. x i j = x i j ∑ k ( x k j ) 2 \large{x_{ij}=\frac{x_{ij}}{\sqrt{\sum_{k}(x_{kj})^{2}}}} xij=k(xkj)2 xij文本中词的相互依赖性很强,一个词首次出现在文本中后,就更有可能再一次出现。由于朴素贝叶斯假定发生独立,冗长的文本会对参数估计产生负面影响。因此标准化文本单词数避免这个问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1842092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

示例:应用DependencyPropertyDescriptor监视依赖属性值的改变

一、目的&#xff1a;开发过程中&#xff0c;经常碰到使用别人的控件时有些属性改变没有对应的事件抛出&#xff0c;从而无法做处理。比如TextBlock当修改了IsEnabled属性我们可以用IsEnabledChanged事件去做对应的逻辑处理&#xff0c;那么如果有类似Background属性改变我想找…

【Spine学习13】之 制作受击动画思路总结(叠加颜色特效发光效果)

绑定IK腿部骨骼容易出错的一种方式&#xff0c; 要记住 如果按照错误方式绑定骨骼&#xff0c;可能移动IK约束的时候会另腿部的弯曲方向相反了 &#xff1a; 上节分享了攻击动作的制作思路总结&#xff0c; 这节总结受击思路。 第一步&#xff1a; 创建一个新的动画&#xff1…

无需科学上网:轻松实现国内使用Coze.com平台自己创建的Bot(如何实现国内免费使用GPT-4o/Gemini等最新大模型)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 如何在国内使用 Coze.com 创建的 Bot 📒📝 创建Bot📝 实现国内使用📝 测试⚓️ 相关链接 ⚓️📖 介绍 📖 Coze.com 是一个强大的平台,允许用户创建各种类型的 Bot。然而,许多国内用户可能会遇到访问问题,导致无法…

【原创教程】汇川H5U PLC控制伺服的方法(小白篇)

1、伺服驱动器SV660在软件上的配置,右击运动控制轴-添加轴(如下图所示)。 2、新建后出现Asix-0,双击进入基本设置,在输出设备中进行分配,其他选项默认不改(如下图所示)。 3、在单位换算设置上只需要修改脉冲数和移动量(根据伺服配套导轨上名牌进行设置),其他设置默…

【论文笔记】Parameter-Effificient Transfer Learning for NLP

题目:Parameter-Effificient Transfer Learning for NLP 阅读 文章目录 0.摘要1.引言2 Adapter tuning for NLP3 实验3.1 参数/性能平衡3.2 讨论 4.相关工作 0.摘要 克服微调训练不高效的问题&#xff0c;增加一些adapter模块&#xff0c;思想就是固定原始的网络中的参数&…

我工作中用Redis的10种场景

Redis作为一种优秀的基于key/value的缓存&#xff0c;有非常不错的性能和稳定性&#xff0c;无论是在工作中&#xff0c;还是面试中&#xff0c;都经常会出现。 今天这篇文章就跟大家一起聊聊&#xff0c;我在实际工作中使用Redis的10种场景&#xff0c;希望对你会有所帮助。 …

使用dify.ai做一个婚姻法助手

步骤 1&#xff1a;注册并登录 Dify.ai 访问 Dify.ai 官网&#xff0c;注册一个账号并登录。 步骤 2&#xff1a;创建新项目 登录后&#xff0c;点击“创建新项目”。为项目命名&#xff0c;例如“婚姻法助手”。 步骤 3&#xff1a;导入婚姻法文本到知识库 在项目中&…

如何快速部署泛域名SSL证书

部署泛域名SSL证书的方法主要有购买通配符SSL证书、申请表格并生成CSR、验证域名和身份、下载并安装证书等步骤。在当今数字化时代&#xff0c;确保网站的安全性已经成为网站运营者以及访问者所共同关注的重要问题。 1、选择证书提供商 选择一个提供泛域名&#xff08;通配符&…

计算机组成原理必备知识点

计算机组成原理必备知识点 前言 本文档由本人复习计算机组成原理期末考试所总结&#xff0c;所有习题以及知识点的页数参考2025年王道计算机组成原理 中断处理过程 硬件完成 1.关中断 2.保存断点 3.中断服务程序寻址 中断程序完成 4.保存现场和屏蔽字 5.开中断 6.执…

最实战的GLM4微调入门:从文本分类开始

GLM4是清华智谱团队最近开源的大语言模型。 以GLM4作为基座大模型&#xff0c;通过指令微调的方式做高精度文本分类&#xff0c;是学习LLM微调的入门任务。 使用的9B模型&#xff0c;显存要求相对较高&#xff0c;需要40GB左右。 在本文中&#xff0c;我们会使用 GLM4-9b-Chat…

嵌入式开发二十:定时器之基本定时器

定时器是微控制器中的关键外设&#xff0c;用于精确控制时间和事件。通过配置时钟源、预分频器、计数周期和比较值&#xff0c;可以实现各种时间控制任务&#xff0c;如定时中断、PWM生成和时间测量。理解定时器的工作原理和配置方法是嵌入式系统开发中的基本技能。 STM32F407 …

转让神州开头的无区域科技公司需要多少钱

您好&#xff0c;我公司现有2家无区域神州名称的公司转让。所谓无区域名称是公司名称中不带有行政区划、及行业特点的公司名称&#xff0c;都是需要在工商总,局核准名称的&#xff0c;对于民营企业来说也比较喜欢这种名称名称很大气&#xff0c;现在重核更严格了&#xff0c;所…

期货止损口诀需牢记

实战操作难免错&#xff0c;心中不必一团火&#xff1b; 出错认输是常事&#xff0c;亏损不止闯大祸。 止损纪律要定死&#xff0c;价格不能差豪丝&#xff1b; 触及止损要出局&#xff0c;管它价格怎放肆。 强势多空价放宽&#xff0c;价格波动要空间&#xff1b; 大势不改…

OpenAI 前首席科学家 Ilya Sutskever 成立新人工智能公司

OpenAI 联合创始人之一 Ilya Sutskever 在正式离开 OpenAI 一个月后&#xff0c;成立了一家新公司 Safe Superintelligence Inc. (SSI)。Sutskever 是 OpenAI 的长期首席科学家&#xff0c;他与前 Y Combinator 合伙人 Daniel Gross 以及前 OpenAI 工程师 Daniel Levy 共同创立…

[SAP ABAP] MESSAGE消息处理

常用的MESSAGE命令的字符 信息类型描述EError 出现错误消息&#xff0c;应用程序在当前点暂停 WWarning 出现警告消息&#xff0c;用户必须按Enter键才能继续应用程序 IInformation 将打开一个弹出窗口&#xff0c;其中包含消息文本&#xff0c;用户必须按Enter键才能继续 SSu…

watcher学习小结

架构 主要是watcher-api&#xff0c;watcher-applier&#xff0c;watcher-decision-engine watcher-applier watcher-decision-engine 将DecisionEngineManager和DecisionEngineSchedulingService封装到oslo_service&#xff0c;然后调service的launch_service&#xff0c;实…

渗透测试基础(四) MS08-067 漏洞攻击

1. 漏洞介绍 漏洞描述 Microsoft Windows Server服务RPC请求缓冲区溢出漏洞Windows的Server服务在处理特质RPC请求时存在缓冲区溢出漏洞&#xff0c;远程攻击者可以通过发送恶意的RPC请求触发这个溢出&#xff0c;导致完全入侵用户系统&#xff0c;以SYSTEM权限执行任意指令。…

为什么3D渲染让客户无法抗拒?7个重要原因

客户通常对工程、建筑、复杂的室内外设计知之甚少&#xff0c;展示草图只会让他们感到难以理解。不过&#xff0c;现代设计师和建筑师不再需要为此烦恼。 通过使用逼真且沉浸式的3D渲染&#xff0c;他们可以让能够轻松地向客户传达信息和沟通想法。它对赢得客户至关重要。接下…

PyCharm新手入门

前言 在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook&#xff0c;Jupyter Notebook简单易用&#xff0c;可以用来练习代码编写&#xff0c;但是实际生产开发环境使用这个工具是远远不够用的&#xff0c;因为实际软件开发中需要软件调试…

API接口对接的步骤流程?有哪些注意事项?

API接口对接自动化的实现方法&#xff1f;如何调试API接口发信&#xff1f; 在现代软件开发中&#xff0c;API接口对接已成为各个系统和应用之间进行通信和数据交换的关键技术。AokSend将详细介绍API接口对接的步骤流程&#xff0c;帮助开发者更好地理解和实现这一过程。 API…