朴素贝叶斯(naive bayes)模型主要用于文本分类,比如要将邮件分类为正常邮件和带侮辱性词汇邮件
对于一封邮件来说其特征可以表示为该邮件中单词出现的情况。
比如我们有一个5000个词的词典表,那么邮件的特征可表示成一个特征向量,特征向量的维数等于词典表的单词个数,特征向量每一维的取值空间为0或1(即这个单词是否出现)
对于p(x|y),在某一组样本中:
p(x1x2...x5000|y)=p(x1|y)p(x2|y,x1).....p(x5000|y,x1,x2...x4999)
这个问题是很复杂的,因此我们需要做朴素贝叶斯假设(这就是为什么这个算法朴素的原因):
我们假设样本中的特征(即每个词出现的情况)相互独立
该假设不符合常理,因为很多词的出现概率之间是有联系的。例如,邮件中如果出现了‘Obama’,那么邮件中出现‘USA’的概率将会大大提高。
但是我们做了这个假设后,能够简化我们的问题,且分类器的效果还不错
因此上式可改为:
p(x1x2...x5000|y)=p(x1|y)p(x2|y,x1).....p(x5000|y,x1,x2...x4999)
=p(x1|y)p(x2|y)..p(x5000|y)
之后求解极大似然估计啥的就不写了,最终通过训练样本我们需要得到的是:y=0时第j个词出现的概率,y=1时第j个词出现的概率,以及样本中y=1的概率
因此,对于一组输入,我们要确定它属于0类还是1类,我们只需要比较:
y=1时输入中所有出现的词在样本中出现的概率之积*样本中y=1的概率 与

本文介绍了如何使用朴素贝叶斯模型进行文本分类,特别是电子邮件的正常与侮辱性分类。通过假设特征间的独立性,简化了计算,虽然这并不完全符合实际情况,但分类效果良好。文中提到了极大似然估计,并给出了Python实现代码,参考了《机器学习实战》一书,用于处理如'welcome to my blog!'和'fuck you bitch!!'等样例。
最低0.47元/天 解锁文章
676

被折叠的 条评论
为什么被折叠?



