文本分类——Naive Bayes
1 Naive Bayes算法介绍
说起贝叶斯算法,不得不先提到概率论与数理统计课程里面的条件概率公式,对于随机试验E有两个随机事件A,B,且P(B) > 0 那么在B事件发生的条件下A发生的概率为:
其中 为第i个文本类别出现的概率, 为文本类别为Ci时出现特征向量(w1,w2…wn)的概率,P(w1,w2…wn)为特征向量出现的概率。一般的会假设特征——词,在文本中出现的概率是独立的,也就是说词和词之间是不相关的(虽然这个不一定成立,但是为了简化计算往往又不得不这么做),那么这时候的联合概率就可以表示为乘积的形式,如下:
对于特定的训练集合来说,上式中P(w1)P(w2)…P(wn)是一个固定的常数,那么在进行分类计算的时候可以省略掉这个分母的计算,如是得到:
这样,只需要计算给定文本和各个类别之间的条件概率值,取最大的那个概率值所在的类别代表文本的类别就行了。
2 参数训练
在贝叶斯分类器训练的时候,依照前面的公式可以知道,需要训练的参数有:
1. P(Ci) : 各个类别在所有的文档中出现的概率,这个只需要统计各个文本类别的数量,然后除以所有文档数就是需要的参数了。
2. P(w|C): 各个词在各个类别中出现的概率,在类别C中出现了w的文档数除以C类文档总数
3 代码实现
https://github.com/zengkui/machine-learning/blob/master/Naive-Bayes/naive_bayes.py
在参数训练中,选定的特征——词,是事先从信息增益算法挑选出来的。
4 模型评价
选取搜狗实验室的分类语料:商务类新闻和娱乐类新闻各100篇作为分类样本,测试集中商务类新闻文章19926篇,娱乐类新闻文章11987篇。其中商务类标记为正样本,娱乐类标记为负样本。
分类结果:
Positive recall :94.817346%
Positive precision :95.778910%
Accuarcy : 94.044275%
这样的结果对于其他分类起来将都已经是非常好的结果了。
5 模型的优缺点
贝叶斯分类模型很大的一个优点就是训练过程非常简单,甚至是可以做到增量式训练,特征是对海量的训练集表现非常高效。
另外一个优点就是,模型的可读性也是比较强的,对于分类得到的结果可以进行解释。
最大的缺点,也就是一开始的假设,在现实世界中,特征属性之间往往是不独立的,所以在相关性很强的特征里使用此模型得到的分类结果会比较差。
原地址url:http://zengkui.blog.163.com/blog/static/21230008220121012102727140/