朴素贝叶斯相关基础知识

判别模型与生成模型

机器学习或者统计学习的方法可以分为判别模型(非概率模型)和生成模型(概率模型)。

判别模型

常见的形式为 y = f(x) ,建立目标变量y和输入特征x之间的映射关系,并且多数情况下会形成决策边界,如下图所示。例如 y = wx + b。每当输入一个新样本的特征时,可以直接得到预测结果。以二分类为例子,wx + b 的结果是0~1之间的概率值,当概率值大于0.5,我们就得到y=1,反之,则y=0。
在这里插入图片描述

生成模型

常见的形式为P(y|x),建立出特征x与不同目标变量y之间的联合概率分布。也就是建立好属于不同y的特征x的分布模型,如下图所示。当需要对新的数据x预测时,则需要判断x属于各个y的概率,概率大的y则为预测结果。

在这里插入图片描述

引用知乎文章机器学习“判定模型”和“生成模型”有什么区别?politer的回答来举个具体的例子:

判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。

生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。

细细品味上面的例子,判别式模型是根据一只羊的特征可以直接给出这只羊的概率(比如logistic regression,这概率大于0.5时则为正例,否则为反例),而生成式模型是要都试一试,最大的概率的那个就是最后结果~

如果你还了解过机器学习的其他算法,那么:

  1. 概率模型(生成模型)有:朴素贝叶斯、高斯混合模型、决策树、隐马尔可夫模型、条件随机场、概率潜在语义分析、潜在狄利克雷分配等。
  2. 非概率模型(判别模型)有:感知机、支持向量机、k近邻,k均值,Adaboost,神经网络等。

先验概率、条件概率、后验概率

先验概率:是基于以往的经验或对现有数据的分析所得到的概率,如硬币正面的概率p为1/2,这里的p=1/2就是先验概率。

条件概率:条件概率是知道原因来推测结果,即有因求果。就是给定某个事件X发生的前提条件下,另一个事件Y发生的概率,记为P(Y|X)。例如已知X:今天是双十一,那么Y:促销的概率可以记为P(促销|今天是双十一)。

后验概率:条件概率是知道结果来推测原因,即有果求因。表达形式与条件概率相似,例如P(X|Y),只不过含义变了。例如X:今天是双十一,Y:促销,则P(X|Y)表示已知现在商品在促销,那么今天是双十一的概率,即P(今天是双十一|促销)。

朴素贝叶斯法建模

假设输入空间 X ∈ R n \mathcal X \in R^n XRn是n维的向量集合,输出空间 Y = { c 1 , c 2 . . . c k } \mathcal Y = \{c_1, c_2...c_k\} Y={c1,c2...ck}为类别标记的集合。输入为特征向量 x ∈ X x \in \mathcal X xX,输出为类别标记 y ∈ Y y \in \mathcal Y yY。X 为 X \mathcal X X 上的随机向量,Y为 Y \mathcal Y Y 上的随机变量。P(X, Y) 是X,Y的联合概率分布,假设训练集T:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } 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 ( Y = c k ) , k = 1 , 2 , . . . , K (1) P(Y=c_k), k=1,2,...,K \tag 1 P(Y=ck),k=1,2,...,K(1)

P ( X = x ∣ Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , … , X ( n ) = x ( n ) ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) (2) \begin{aligned} P(X=x|Y=c_k)&=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},\dots,X^{(n)}=x^{(n)}|Y=c_k)\\ &=\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k) \end{aligned} \tag 2 P(X=xY=ck)=P(X(1)=x(1),X(2)=x(2),,X(n)=x(n)Y=ck)=j=1nP(X(j)=x(j)Y=ck)(2)

公式的上角标表示第i个样本,其中(1)是各个类别的先验概率分布,(2)是条件概率分布。基于上面的两个式子,就可以计算得到联合概率分布P(X, Y)。

朴素贝叶斯法在分类时,对给定的输入x,通过学习到的模型计算后验概率分布 P ( Y = c k ∣ X = x ) P(Y=c_k| X = x) P(Y=ckX=x),然后将后验概率最大的类别作为x的输出。后验概率的计算公式由贝叶斯定理(全概率公式)可得:
P ( Y = c k ∣ X = x ) = P ( Y = c k , X = x ) p ( X = x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k = 1 K P ( X = x ∣ Y = c k ) P ( Y = c k ) (3) \begin{aligned} P(Y=c_k| X = x) &= \frac{P(Y=c_k, X = x)}{p(X = x)} \\ &= \frac{P(X=x|Y=c_k) P(Y=c_k)}{\sum_{k=1}^KP(X=x|Y=c_k)P(Y=c_k)} \end{aligned} \tag 3 P(Y=ckX=x)=p(X=x)P(Y=ck,X=x)=k=1KP(X=xY=ck)P(Y=ck)P(X=xY=ck)PY=ck(3)
基于(3),朴素贝叶斯分类器可以表示为:
y = arg ⁡ max ⁡ c k P ( Y = c k ∣ X = x ) (4) y = \arg \max\limits_{c_k}P(Y=c_k| X = x) \tag 4 y=argckmaxP(Y=ckX=x)(4)
由于(3)的分母是个固定值,故(4)可以简化为:
y = arg ⁡ max ⁡ c k P ( X = x ∣ Y = c k ) P ( Y = c k ) (5) y =\arg \max\limits_{c_k}P(X=x|Y=c_k) P(Y=c_k) \tag 5 y=argckmaxP(X=xY=ck)PY=ck(5)
将(2)代入(5)又可以得到:
y = arg ⁡ max ⁡ c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) (6) y =\arg \max\limits_{c_k} P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k) \tag 6 y=argckmaxPY=ckj=1nP(X(j)=x(j)Y=ck)(6)

在这里插入图片描述

后验概率 P ( Y = c k ∣ X = x ) P(Y=c_k| X = x) P(Y=ckX=x)最大化的解释

朴素贝叶斯法将实例划分到概率最大的类别中,等价于期望风险最小化,所谓期望风险就是损失的期望值。假设我们选择0-1损失函数:
L ( Y , f ( x ) ) = { 1 , Y ≠ f ( X ) 0 , Y ≠ f ( X ) L(Y,f(x)) = \left\{ \begin{array}{lr} 1, Y\ne f(X) \\ 0, Y\ne f(X) \end{array} \right. L(Y,f(x))={1,Y=f(X)0,Y=f(X)
损失值越小,模型越好。f(X)为决策函数,此时期望风险为:
R e x p ( f ) = E [ L ( Y , f ( X ) ) ] R_{exp}(f) = E[L(Y, f(X))] Rexp(f)=E[L(Y,f(X))]
对于某个向量X,可以用下面的公式求期望风险:
R e x p ( f ) = ∑ k = 1 K [ L ( c k , f ( X ) ) ] P ( c k ∣ X ) R_{exp}(f) = \sum_{k=1}^K[L(c_k,f(X))]P(c_k|X) Rexp(f)=k=1K[L(ck,f(X))]P(ckX)
要得到某个y,使得上式最小化,则有:
f ( x ) = arg ⁡ min ⁡ y ∈ Y ∑ k = 1 K L ( c k , y ) P ( c k ∣ X = x ) = arg ⁡ min ⁡ y ∈ Y ∑ k = 1 K P ( y ≠ c k ∣ X = x ) = arg ⁡ min ⁡ y ∈ Y ( 1 − P ( y = c i ∣ X = x ) ) = arg ⁡ max ⁡ y ∈ Y P ( y = c k ∣ X = x ) \begin{aligned} f(x) &= \arg\min\limits_{y \in \mathcal Y} \sum_{k=1}^KL(c_k, y)P(c_k|X=x) \\ &= \arg\min\limits_{y \in \mathcal Y} \sum_{k=1}^KP(y \ne c_k|X=x) \\ &= \arg\min\limits_{y \in \mathcal Y} (1-P(y=c_i|X=x)) \\ &= \arg\max\limits_{y \in \mathcal Y}P(y=c_k|X=x) \end{aligned} f(x)=argyYmink=1KL(ck,y)P(ckX=x)=argyYmink=1KP(y=ckX=x)=argyYmin(1P(y=ciX=x))=argyYmaxP(y=ckX=x)
这样,想要期望风险最小化则需要后验概率最大化:
f ( x ) = arg ⁡ max ⁡ y ∈ Y P ( y = c k ∣ X = x ) f(x) = \arg\max\limits_{y \in \mathcal Y}P(y=c_k|X=x) f(x)=argyYmaxP(y=ckX=x)
这就是朴素贝叶斯法采用的原理。

朴素贝叶斯法的参数估计

极大似然估计

在朴素贝叶斯法中,模型的学习就是要估计 P ( Y = c k ) P(Y=c_k) P(Y=ck) P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)Y=ck),可以用极大似然估计法估计相应的概率。

P ( Y = c k ) P(Y=c_k) P(Y=ck)好理解,其实就是 c k c_k ck的频率:
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N , k = 1 , 2 , . . . , K P(Y=c_k) = \frac{\sum_{i=1}^N I(y_i=c_k)}{N}, k=1,2,...,K \\ P(Y=ck)=Ni=1NI(yi=ck),k=1,2,...,K
P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)Y=ck) 就是要计算属于不同的 c k c_k ck的样本中,不同特征的不同取值的概率。设第j个特征 x ( j ) x^{(j)} x(j)的可能取值集合为 { a j 1 , a j 2 , . . . , a j S j } \{a_{j1}, a_{j2},..., a_{jS_j}\} {aj1,aj2,...,ajSj},则极大似然估计为:
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 ; 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; \quad l=1,2,...,S_j; \quad k=1,2,...,K; \quad P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K;
其中 a j l a_{jl} ajl表示第j个特征取第 l l l个值, I I I为指示函数,满足条件则取值为1,否则为0。

算法流程

(1)计算先验概率与条件概率:
P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N 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 ; P(Y=c_k) = \frac{\sum_{i=1}^N I(y_i=c_k)}{N}\\ 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; \quad l=1,2,...,S_j; \quad k=1,2,...,K; \quad P(Y=ck)=Ni=1NI(yi=ck)P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K;
(2)对于给定的实例 x = ( x ( 1 ) , x ( 2 ) , . . . x ( n ) ) T x=(x^{(1)},x^{(2)},...x^{(n)})^T x=(x(1),x(2),...x(n))T,计算:
P ( Y = C k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=C_k) = \prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k) P(Y=Ck)=j=1nP(X(j)=x(j)Y=ck)
(3)确定实例x的类:
y = arg ⁡ max ⁡ c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) y =\arg \max\limits_{c_k} P(Y=c_k)\prod^n_{j=1}P(X^{(j)}=x^{(j)}|Y=c_k) y=argckmaxPY=ckj=1nP(X(j)=x(j)Y=ck)
举个例子,假设有数据集如下图所示,估计 x = ( 2 , S ) T x=(2,S)^T x=(2,S)T的类别:

在这里插入图片描述

则利用朴素贝叶斯法求解过程如下:
P ( Y = 1 ) = 9 / 15 , P ( Y = − 1 ) = 6 / 15 P ( X ( 1 ) = 1 ∣ Y = 1 ) = 2 / 9 , P ( X ( 1 ) = 2 ∣ Y = 1 ) = 3 / 9 , P ( X ( 1 ) = 3 ∣ Y = 1 ) = 4 / 9 P ( X ( 2 ) = S ∣ Y = 1 ) = 1 / 9 , P ( X ( 2 ) = M ∣ Y = 1 ) = 4 / 9 , P ( X ( 2 ) = L ∣ Y = 1 ) = 4 / 9 P ( X ( 1 ) = 1 ∣ Y = − 1 ) = 3 / 6 , P ( X ( 1 ) = 2 ∣ Y = − 1 ) = 2 / 6 , P ( X ( 1 ) = 3 ∣ Y = − 1 ) = 4 / 6 P ( X ( 2 ) = S ∣ Y = − 1 ) = 3 / 6 , P ( X ( 2 ) = M ∣ Y = − 1 ) = 2 / 6 , P ( X ( 2 ) = L ∣ Y = − 1 ) = 1 / 6 P ( Y = 1 ) P ( X ( 1 ) = 2 ∣ Y = 1 ) P ( X ( 2 ) = S ∣ Y = 1 ) = 9 15 ⋅ 3 9 ⋅ 1 9 = 1 45 P ( Y = − 1 ) P ( X ( 1 ) = 2 ∣ Y = − 1 ) P ( X ( 2 ) = S ∣ Y = − 1 ) = 6 15 ⋅ 2 6 ⋅ 3 6 = 1 15 \begin{aligned} & P(Y=1) = 9/15, P(Y=-1) = 6/15 \\ \\ & P(X^{(1)}=1|Y=1)=2/9, P(X^{(1)}=2|Y=1)=3/9, P(X^{(1)}=3|Y=1)=4/9 \\ & P(X^{(2)}=S|Y=1)=1/9, P(X^{(2)}=M|Y=1)=4/9, P(X^{(2)}=L|Y=1)=4/9 \\ & P(X^{(1)}=1|Y=-1)=3/6, P(X^{(1)}=2|Y=-1)=2/6, P(X^{(1)}=3|Y=-1)=4/6 \\ & P(X^{(2)}=S|Y=-1)=3/6, P(X^{(2)}=M|Y=-1)=2/6, P(X^{(2)}=L|Y=-1)=1/6 \\ \\ & P(Y=1)P(X^{(1)}=2|Y=1)P(X^{(2)}=S|Y=1) = \frac{9}{15} \cdot\frac{3}{9} \cdot\frac{1}{9}=\frac{1}{45} \\ & P(Y=-1)P(X^{(1)}=2|Y=-1)P(X^{(2)}=S|Y=-1) = \frac{6}{15} \cdot\frac{2}{6} \cdot\frac{3}{6}=\frac{1}{15} \end{aligned} P(Y=1)=9/15,P(Y=1)=6/15P(X(1)=1Y=1)=2/9,P(X(1)=2Y=1)=3/9,P(X(1)=3Y=1)=4/9P(X(2)=SY=1)=1/9,P(X(2)=MY=1)=4/9,P(X(2)=LY=1)=4/9P(X(1)=1Y=1)=3/6,P(X(1)=2Y=1)=2/6,P(X(1)=3Y=1)=4/6P(X(2)=SY=1)=3/6,P(X(2)=MY=1)=2/6,P(X(2)=LY=1)=1/6P(Y=1)P(X(1)=2Y=1)P(X(2)=SY=1)=1599391=451P(Y=1)P(X(1)=2Y=1)P(X(2)=SY=1)=1566263=151
由于1/15大于1/45,所以y = -1。

贝叶斯估计

回归条件概率的计算:
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 ) 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)} P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)
如果存在某个类别下的某个特征没有出现过,则概率值为0,会影响后验概率的计算结果,导致分类结果产生偏差。解决此类问题的方法是采用贝叶斯估计。条件概率的贝叶斯估计是:
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 ) + S j λ (1) P_\lambda(X^{(j)}=a_{jl}|Y=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 1 Pλ(X(j)=ajlY=ck)=i=1NI(yi=ck)+Sjλi=1NI(xi(j)=ajl,yi=ck)+λ(1)
式子中 λ ≥ 0 \lambda \ge 0 λ0,当 λ = 0 \lambda = 0 λ=0则为极大似然估计, λ \lambda λ 通常取1,此时成为拉普拉斯平滑。同样,先验概率的贝叶斯估计是:
P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P_\lambda(Y=c_k) = \frac{\sum_{i=1}^N I(y_i=c_k)+\lambda}{N+K\lambda} Pλ(Y=ck)=N+Kλi=1NI(yi=ck)+λ

优缺点

优点

  1. 朴素贝叶斯模型有稳定的分类效率。
  2. 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
  3. 对缺失数据不太敏感,算法也比较简单,常用于文本分类。

缺点:

  1. 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
  2. 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。
  3. 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
  4. 对输入数据的表达形式很敏感。

参考文章:

  1. 《统计学习方法 第二版》
  2. 机器学习算法基础_Task2 bayes_plus.ipynb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值