您的位置:首页 > 其它

【机器学习详解】概率生成模型与朴素贝叶斯分类器

2016-03-31 23:39 531 查看
转载请注明出处/article/11857922.html

1.概率生成模型

首先介绍生成模型的概念,然后逐步介绍采用生成模型的步骤。

1.1概念

即对每一种类别CkC_k分别建立一种数据模型p(x|Ck)p(x|C_k),把待分类数据x分别带入每种模型中,计算后验概率p(Ck|x)p(C_k|x),选择最大的后验概率对应的类别。

假设原始数据样本有K类,生成学习算法是通过对原始数据类p(x|Ck)p(x|C_k)与p(Ck)p(C_k)建立数据类模型后,采用贝叶斯定理从而得出后验概率p(Ck|x)p(C_k|x)。对待分类样本x分别计算属于每个类别的后验概率p(Ck|x)p(C_k|x),取最大可能的类别。arg max(k)=p(Ck|x)=p(x,Ck)p(x)=p(x|Ck)p(Ck)∑jp(x|Cj)p(Cj)arg\ max(k)=p(C_k|x)=\frac{p(x,C_k)}{p(x)}=\frac{p(x|C_k)p(C_k)}{\sum_j{p(x|C_j)p(C_j)}}

二分类的情况:(K=2)

p(C1|x)=p(x,C1)p(x)=p(x|C1)p(C1)p(x|C1)p(C1)+p(x|C2)p(C2)=11+exp(−α)=σ(α)p(C_1|x)=\frac{p(x,C_1)}{p(x)}=\frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)}=\frac{1}{1+exp(-\alpha)}=\sigma(\alpha)其中α=lnp(x|C1)p(C1)p(x|C2)p(C2)\alpha=ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)};函数σ(α)=11+exp(−α)\sigma(\alpha)=\frac{1}{1+exp(-\alpha)}称为sigmoid函数。

多类的情况:(K>2)

多分类的情况,是二分类的扩展,称为softmax函数。同样采用贝叶斯定理:p(Ck|x)=p(x|Ck)p(Ck)∑jp(x|Cj)p(Cj)=exp(αk)∑jexp(αj)p(C_k|x)=\frac{p(x|C_k)p(C_k)}{\sum_j{p(x|C_j)p(C_j)}}=\frac{exp(\alpha_k)}{\sum_jexp(\alpha_j)}

其中αk=lnp(x|Ck)p(Ck)\alpha_k=lnp(x|C_k)p(C_k)。

1.2高斯分布假设

对于连续变量x,我们首先假设给定具体类条件下数据密度函数p(x|Ck)p(x|C_k)分布服从多维高斯分布,同时所有类别p(x|Ck)p(x|C_k)具有相同的协方差矩阵∑\sum:



二维高斯分布,相同方差,不同期望的三个图形。



二分类情况K=2

把多维高斯分布公式带入上述对应的贝叶斯公式得:



注意到sigmoid函数参数是关于数据x的线性函数

下图是2维数据的高斯分布图形:



多分类的情况K>2

多维高斯分布函数带入softmax函数得:



注意:αk(x)\alpha_k(x)也是关于样本数据x的线性函数

实际上,无论是连续型数据还是下面将要介绍的离散型数据(朴素贝叶斯分类),只要假设的分布属于指数簇函数,都有广义线性模型的结论。

K=2时为sigmoid函数:参数λ\lambda为模型的固有参数



K>2时为softmax函数:



1.3模型参数的求解

在假设了数据类密度函数p(x|Ck)p(x|C_k)的情况下,下面需要对模型的参数进行求解。例如,上述假设了数据为高斯分布,需要计算先验概率p(Ck)p(C_k)及参数μk,∑\mu_k,\sum .我们采用最大化释然函数的方法求解:

考虑二分类的情况:样本数据为(xn,tn) (x_n,t_n),样本总量为N,tn=1t_n=1属于C1C_1类,总数为N1N_1;tn=0t_n=0属于C2C_2类,总数为N2N_2.假设先验概率p(C1)=πp(C_1)=\pi;则p(C2)=1−πp(C_2)=1-\pi

释然函数:


分别求偏导数并令为0,得:









2.朴素贝叶斯分类器(NBC)

2.1概念

朴素贝叶斯分类器是生成学习算法的一种。考虑一个样本x=(x1,x2,x3...xD)x=(x_1,x_2,x_3...x_D),有D个特征,每个特征xix_i取值为有限的离散值,这时需要对p(x|y)p(x|y)建立模型。朴素贝叶斯算法做了一种很强的假设:即给定类别y=c的情况下,每种特征之间相互独立,即有p(x1|y,x2)=p(x1|y)p(x_1|y,x_2)=p(x_1|y);p(x1,x2|y)=p(x1|y)p(x2|y)p(x_1,x_2|y)=p(x_1|y)p(x_2|y)所以有:



条件类概率p(x|y)p(x|y)可根据数据类型建立不同的形式:

当样本数据x取实数值为时,采用高斯分布:p(x|y=c,θ)=∏Dj=1N(xj|μjc,σ2jc)p(x|y=c,\theta)=\prod_{j=1}^{D}N(x_j|\mu_{jc},\sigma^2_{jc})

当每种特征xj∈{0,1}x_j\in\{0,1\}时,采用伯努利分布p(x|y=c,θ)=∏Dj=1Ber(xj|μjc)p(x|y=c,\theta)=\prod_{j=1}^{D}Ber(x_j|\mu_{jc})

当每种特征取值xj∈{1,2,3,...,K}x_j\in\{1,2,3,...,K\},可以采用multinoulli distribution:p(x|y=c,θ)=∏Dj=1Cat(xj|μjc)p(x|y=c,\theta)=\prod_{j=1}^{D}Cat(x_j|\mu_{jc})

2.2文本分类

朴素贝叶斯虽然做了很强的特征独立性假设,却对在文本分类的情况效果很好。

首先收集所有样本数据中出现过的词,建立一个有序字典,长度为D。对待分类文本x依据字典建立一个长度为D词向量,x=(x1,x2,x3,....,xD)x=(x_1,x_2,x_3,....,x_D),每种特征xj∈{0,1}x_j\in\{0,1\}。即xj=1x_j=1表示字典中第j个词在此文本中出现过;反之,xj=0x_j=0表示字典中第j个词没有在文本中出现过,采用伯努利分布p(x,y)=p(y)p(x|y)=p(y)∏Dj=1Ber(xj|μjc)p(x,y)=p(y)p(x|y)=p(y)\prod_{j=1}^{D}Ber(x_j|\mu_{jc})。

定义:ϕi|y=0=p(xi=1|yi=0)\phi_{i|y=0}=p(x_i=1|y_i=0),ϕi|y=1=p(xi=1|yi=1)\phi_{i|y=1}=p(x_i=1|y_i=1),ϕy=p(y=1)\phi_{y}=p(y=1)

释然函数:



最大释然估计得:



训练出模型后,对待分类样本根据贝叶斯定理,计算每种类别的后验概率,选择最大的后验概率类别:



2.3拉普拉斯平滑

在对文本分类的情况下,假如我们训练分类器采用的训练文本所有xjx_j都为0时,这时模型参数ϕj|y=0=0\phi_{j|y=0}=0,ϕj|y=1=0\phi_{j|y=1}=0,这时如果需要对待一个文本x分类且xj=1x_j=1,根据上述朴素贝叶斯方法,得到每种后验概率都为0,即p(y=1|x)=0,P(y=0|x)=0p(y=1|x)=0,P(y=0|x)=0。这是由于上述乘法的缘故,根本原因是ϕj|y=0=0\phi_{j|y=0}=0,ϕj|y=1=0\phi_{j|y=1}=0。由于样本量有限,预测某个事件的发生概率为0,也是不准确的。

为了解决这种情况,可以模型参数的分子加上1,同时保持和为1,,称为拉普拉斯平滑。





参考:PRML&&MLAPP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: