朴素贝叶斯算法其实原理很简单,要理解朴素贝叶斯算法我们首先得知道贝叶斯公式:
其中
是在A发生的情况下B发生的可能性。
公式就不在这推导了,理解起来也很简单的,画个venn图就行,我们接下来通过例子来看贝叶斯公式是如何应用在分类问题中的。 假如我们现在有如下样本:
颜色 | 水果 |
|---|---|
红 | 水果A |
黄 | 水果B |
红 | 水果A |
黄 | 水果B |
黄 | 水果B |
红 | 水果B |
现在我们已知一个水果颜色为红色,那么他是水果A还是水果B呢? 根据贝叶斯公式我们有如下:
我们需要判断的就是
和
谁大一些,谁的概率大我们预测谁。 由于分母都一样,我们只需计算:
那么我们判断这个红色的水果是水果A。 通俗点理解,当我们已知一个条件的时候,我们去看当这个条件发生的时候哪个类别的概率大,我们就预测为该类别。
我们刚刚的例子中只有一个特征条件,但当特征条件多的时候(一个简单的文本分类都会上万维),上述方法就行不通了,那该怎么办? Be Naive!!!
但当
是两个相互独立的条件的时候,我们就会有如下公式:
所以朴素贝叶斯算法的前提条件就是假设各个条件都是相互独立的,这也是朴素贝叶斯算法的朴素之处。 整个逻辑与上面的一致,分别计算当条件发生时各个类别的概率,哪个最大选哪个,在此就不赘述了。
,
不宜过大,当
的时候我们称之为拉普拉斯平滑。
对于朴素贝叶斯算法,其实就是一个简简单单的公式,所以在算法上优化的空间几乎没有,为了提升准确率,更多的时候我们需要在特征处理上下功夫。