转 https://www.cnblogs.com/pinard/p/6069267.html 刘建平老师讲解非常好
在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数,要么是条件分布
。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布
1. 朴素贝叶斯相关的统计学知识
在了解朴素贝叶斯的算法之前,我们需要对相关必须的统计学知识做一个回顾。
贝叶斯学派很古老,但是从诞生到一百年前一直不是主流。主流是频率学派。频率学派的权威皮尔逊和费歇尔都对贝叶斯学派不屑一顾,但是贝叶斯学派硬是凭借在现代特定领域的出色应用表现为自己赢得了半壁江山。
贝叶斯学派的思想可以概括为先验概率+数据=后验概率。也就是说我们在实际问题中需要得到的后验概率,可以通过先验概率和数据一起综合得到。数据大家好理解,被频率学派攻击的是先验概率,一般来说先验概率就是我们对于数据所在领域的历史经验,但是这个经验常常难以量化或者模型化,于是贝叶斯学派大胆的假设先验分布的模型,比如正态分布,beta分布等。这个假设一般没有特定的依据,因此一直被频率学派认为很荒谬。虽然难以从严密的数学逻辑里推出贝叶斯学派的逻辑,但是在很多实际应用中,贝叶斯理论很好用,比如垃圾邮件分类,文本分类。
我们先看看条件独立公式,如果X和Y相互独立,则有:
我们接着看看条件概率公式:
或者说:
接着看看全概率公式:
从上面的公式很容易得出贝叶斯公式:
2. 朴素贝叶斯的模型
从统计学知识回到我们的数据分析。假如我们的分类模型样本是:<br /><br /> 即我们有m个样本,每个样本有n个特征,特征输出有K个类别,定义为<br /> 从样本我们可以学习得到朴素贝叶斯的先验分布,接着学习到条件概率分布,然后我们就可以用贝叶斯公式得到X和Y的联合分布P(X,Y)了。联合分布P(X,Y)定义为:<br />
从上面的式子可以看出比较容易通过最大似然法求出得到的
就是类别
在训练集里面出现的频数。 但是
很难求出, 这是一个超级复杂的有n个维度的条件分布。朴素贝叶斯模型在这里做了一个大胆的假设,即X的n个维度之间相互独立,这样就可以得出:
从上式可以看出,这个很难的条件分布大大的简化了,但是这也可能带来预测的不准确性。你会说如果我的特征之间非常不独立怎么办?如果真是非常不独立的话,那就尽量不要使用朴素贝叶斯模型了,考虑使用其他的分类方法比较好。但是一般情况下,样本的特征之间独立这个条件的确是弱成立的,尤其是数据量非常大的时候。虽然我们牺牲了准确性,但是得到的好处是模型的条件分布的计算大大简化了,这就是贝叶斯模型的选择。
最后回到我们要解决的问题,我们的问题是给定测试集的一个新样本特征(x(test)1,x(test)2,…x(test)n,\我们如何判断它属于哪个类型?
既然是贝叶斯模型,当然是后验概率最大化来判断分类了。 我们只要计算出所有的K个条件概率,然后找出最大的条件概率对应的类别,这就是朴素贝叶斯的预测了。