朴素贝叶斯:使用条件概率进行分类
分类准则如下:
如果 P(c1|x, y) > P(c2|x, y), 那么属于类别 c1;
如果 P(c2|x, y) > P(c1|x, y), 那么属于类别 c2.
两个假设:假设特征之间相互独立,且每个特征同等重要。
应用:文档的自动分类
首先遍历并记录下文档中出现的词,并将每个词的出现或不出现作为一个特征;然后计算不同的独立特征所对应的条件概率,对测试数据计算错误率,得到最终的文档分类。
1、准备数据
将文本进行拆分,转化为词向量,若某个词存在则表示为1,不存在则表示为0。
从文本中构建词向量,考虑出现在所有文档中的所有单词,并将每一篇文档都转化为词汇表上的向量。
2、训练算法
从词向量(特征向量)计算每个类别下各个特征的概率,将之前的贝叶斯准则中的(x,y)
改为向量w
, 其长度为词向量的长度,公式如下:
使用上述公式,对每个类计算该值,比较两个概率值的大小。
已知某个类别c,计算w在类别ci
中的概率p(w|ci)
。由于朴素贝叶斯假设所有特征相互独立,故有:
p(w|ci) = p(w0,w1,...,wn|ci) = p(w0|ci)*p(w1|ci)*...*p(w0|ci)
计算每个词wj在已知类别i的概率,然后再相乘。
3、测试算法
为防止下溢出问题,将分母初始化为2,或对乘积p(w0|ci)*p(w1|ci)*...*p(w0|ci)
取自然对数,不影响最终结果。
修改后用待测文档进行测试。
词集模型中向量的元素内容表示词条是否在词汇表中出现过,即每个词只能出现一次;词袋模型中向量的元素内容表示词条出现在词汇表中的次数,即每个词可以出现多次。使用词袋模型的效果会相对好一些。
朴素贝叶斯还可以用于过滤垃圾邮件以及从个人广告中获取区域倾向等。