您的位置:首页 > 其它

生成模型中的高斯判别分析和朴素贝叶斯

2014-02-11 23:01 429 查看
设样本为X(大写X表示向量),其类别为y。下面的图片若非特殊声明,均来自cs229 Lecture notes 2。

用于分类的机器学习算法可以分为两种:判别模型(Discriminative learning algorithms)和生成模型(Generative Learning algorithms)。判别模型试图直接求出p(y|X),如logistic regression,或者直接将样本空间X映射到类别空间y,,如 {0,1}。具体来说,它试图在一个高维空间里找到一条能将不同类别的样本区分开的直线。而生成模型则试图对p(X|y)建模,再利用Bayes定理求出p(y|X)。

把feature向量按连续和离散分,下面分别介绍两个生成模型:高斯判别分析, 朴素贝叶斯。

1高斯判别分析(Gaussian discriminant analysis)

比如我们现在要区分两种鱼A和B,feature向量为2维:体重和长度。GDA假设不同的类别的feature向量分别服从各自的多元高斯分布(multivariate normal distribution)。因此,整个模型如下(这里假设不同类的协方差矩阵是相同的):



带入公式,得到



使用最大似然估计使联合概率最大化,得到参数的最大似然估计:



其中“1{y = 1}”,如果y=1则表达式值为1,否则值为0。可以看到结果十分直观,mul为样本的均值,协方差矩阵也是按定义来的。

1.1异常检测(Anomaly Detection)

类似的生成模型还可以用于异常检测(Anomaly Detection),而且更为简单——因为只用对正常状态下的feature向量建模。建模完成后,将测试样本带入在训练集上求得的高斯模型:


来自《Machine
Learning》的第八个练习讲义

若p小于一定阀值epsilon,则该样本异常。而epsilon可以通过cross-validation确定。这里值得补充的是,GDA相对于logistic regression对样本做了更强的假设:若p(X|y)服从多元高斯分布,则p(y|X)一定满足logistic 函数。反之则不成立。因此,如果样本确实服从高斯分布,那么用GDA效果会更好。另一方面,logistic regression则更鲁棒,因为它可以fit
除了高斯分布以外的模型。

2朴素贝叶斯(Naive Bayes)

2.1模型一

假设要进行垃圾邮件(spam)的区分。Naïve贝叶斯分类器则假设单词x之间是条件独立的,若某单词出现,则对应的x为1,否则为0。设vocabulary的大小为5000,y为邮件类别。则给定y时,一个邮件的生成概率如下:



通过最大化联合概率,得到参数的最大似然估计如下,



同样是个很直观的结果,某类中出现一个单词的概率只是所有邮件中出现的均值。而一封测试邮件属于类别1的概率为


(1)

类似的可以得到属于类别0的概率。最后取概率较大的那个类别。注意,若测试邮件中含有训练集中从未出现过的单词,则上述表达式是不良定义的(出现0除以0)。因此要使用拉普拉斯平滑(Laplace smoothing)。Laplace smoothing是保证似然概率sum to 1的前提下,让每个单词至少出现一次。对于2分类,改进后的参数估计如下,



最后,很多情况下(1)中的p(x)无法直接求解(积不出来或者X的维数太大)。但幸运的是这里(最大似然估计)的结果与P(X)无关。

2.2模型二

上述的生成模型对应的生成过程如下:

①Sample出一个邮件的类别 y ~ Bernoulli

②遍历vocabulary,确定每个单词是否出现在该邮件中 x_i ~ Bernoulli

这模型有个缺点,就是没有把单词出现的次数考虑进来。比如一邮件中“促销”一词出现得越多,则其越可能是spam。改进后的生成过程如下:

①Sample出一个邮件的类别 y ~ Bernoulli

②对于邮件中的每个单词,从vocabulary中sample。 x ~ multinomial

可以看到x的取值从1…|V|。最后得到参数的似然估计为:



参考文献:

[1] cs229 Lecture notes 2 —— 《Generative Algorithms》

[2] Machine Learning on Coursera, Programming Exercise 8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: