我对用于文档分类的特定朴素贝叶斯算法有一些疑问。以下是我所理解的:
- 为每个已知分类构建训练集中每个单词的概率
- 给定一个文档,我们提取其中包含的所有单词
- 将单词在某个分类中出现的概率相乘
- 对每个分类执行步骤(3)
- 比较步骤(4)的结果,并选择后验概率最高的分类
我感到困惑的是在计算训练集中每个单词的概率时。例如,对于单词“香蕉”,它在分类A中出现在100个文档中,而A总共有200个文档,A中总共出现了1000个单词。要计算“香蕉”在分类A中出现的概率,我应该使用100/200=0.5还是100/1000=0.1?
回答:
我认为,如果你计算的是单词出现在文档中的数量,而不是单词总共出现的次数,你的模型会更准确地进行分类。换句话说
分类“提到水果”:
“我喜欢香蕉。”
应该与
“香蕉!香蕉!香蕉!我喜欢它们。”
的权重相同
所以你问题的答案应该是100/200 = 0.5。
维基百科上关于文档分类的描述也支持我的结论
那么,给定一个类C,一个给定文档D包含所有单词W的概率是
http://en.wikipedia.org/wiki/Naive_Bayes_classifier
换句话说,维基百科描述的文档分类算法测试的是给定文档包含的分类单词列表中的数量。
顺便说一下,更高级的分类算法会检查N个单词的序列,而不仅仅是每个单词,N可以根据你愿意用于计算的CPU资源量来设置。
更新
我的直接经验基于短文档。我想强调@***在评论中指出的研究表明我的答案对于较长的文档是无效的。具体来说
一个弱点是,通过只考虑术语的存在或不存在,BIM忽略了术语频率中固有的信息。例如,在其他条件相同的情况下,如果一个单词的一次出现是一个文档属于某个类的好线索,那么五次出现应该更具预测性。
一个相关的问题涉及文档长度。随着文档变长,使用到的不同单词的数量,以及在BIM中x(j)等于1的值的数量,通常会增加。
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1529