【机器学习详解】概率生成模型与朴素贝叶斯分类器
2016-03-31 23:39
531 查看
转载请注明出处/article/11857922.html
假设原始数据样本有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)。
二维高斯分布,相同方差,不同期望的三个图形。
二分类情况K=2
把多维高斯分布公式带入上述对应的贝叶斯公式得:
注意到sigmoid函数参数是关于数据x的线性函数
下图是2维数据的高斯分布图形:
多分类的情况K>2
多维高斯分布函数带入softmax函数得:
注意:αk(x)\alpha_k(x)也是关于样本数据x的线性函数
实际上,无论是连续型数据还是下面将要介绍的离散型数据(朴素贝叶斯分类),只要假设的分布属于指数簇函数,都有广义线性模型的结论。
K=2时为sigmoid函数:参数λ\lambda为模型的固有参数
K>2时为softmax函数:
考虑二分类的情况:样本数据为(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,得:
条件类概率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})
首先收集所有样本数据中出现过的词,建立一个有序字典,长度为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)
释然函数:
最大释然估计得:
训练出模型后,对待分类样本根据贝叶斯定理,计算每种类别的后验概率,选择最大的后验概率类别:
为了解决这种情况,可以模型参数的分子加上1,同时保持和为1,,称为拉普拉斯平滑。
参考:PRML&&MLAPP
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
相关文章推荐
- gets与scanf
- Codeforces 270E Flawed Flow 网络流问题
- 一步步优化JVM一:概述、方法及需求
- 单词统计、翻译、生成doc
- C++作业-2
- 浮动float和清楚浮动clearfix
- [渗透测试]扫目录,Sqlmap利用均超时,利用dirb扫描
- 周线金叉
- Socket编程-UdpClient的使用
- Lumen/laravel Event Demo
- vs2015连接oracle 11g(.net自带方式 using System.Data.OracleClient;)
- while read line 与 for 区别
- C++实验2-计算标准体重
- 软件测试第三次作业
- 递归算法案例分析
- 递归算法案例分析
- IOS学习 GCD 延时执行三种方法 并行/串行/主队列综合练习 队列组 shift+command+o快速查找
- Android四大组件
- 文章标队和栈的一些区别
- 递归算法案例分析