使用朴素贝叶斯进行文本分类

时间:2011-11-30 00:30:34

标签: machine-learning naivebayes document-classification

我正在使用朴素贝叶斯进行文本分类机器学习问题。我把每个单词都作为一个功能。我已经能够实现它,并且我的准确性很高。

我可以使用单词元组作为功能吗?

例如,如果有两个类,政治和体育。政府这个词可能出现在他们两个人身上。然而,在政治上我可以有一个元组(政府,民主),而在课堂体育中我可以有一个元组(政府,运动员)。因此,如果一篇新的文章出现在政治中,那么元组(政府,民主)的可能性比元组(政府,运动员)更具概率。

我问这是因为这样做是因为我违反了朴素贝叶斯问题的独立性假设,因为我也在考虑单个词作为特征。

另外,我正在考虑为功能添加权重。例如,3元组功能的重量将小于4元组功能。

理论上,这两种方法是否都没有改变Naive Bayes分类器的独立性假设?此外,我还没有开始我提到的方法,但这会提高准确性吗?我认为准确性可能不会提高,但获得相同准确度所需的训练数据量会更少。

2 个答案:

答案 0 :(得分:5)

即使没有添加bigrams,真实文档也已经违反了独立性假设。以将奥巴马纳入文件为条件,总统更有可能出现。尽管如此,天真的贝叶斯在分类方面仍然做得不错,即使它给出的概率估计是绝望的。因此,我建议您继续为分类器添加更复杂的功能,看看它们是否能提高准确性。

如果使用较少的数据获得相同的准确度,那基本上相当于使用相同数量的数据获得更高的准确度。

另一方面,使用更简单,更常见的功能可以更好地减少数据量。如果您尝试将太多参数放在太少的数据上,那么您往往会过度配合。

但最重要的是尝试并看看。

答案 1 :(得分:2)

不,从理论的角度来看,你并没有改变独立性假设。您只是创建一个修改过的(或新的)样本空间。通常,一旦开始在样本空间中使用更高的n-gram作为事件,数据稀疏性就成了问题。我认为使用元组会导致同样的问题。您可能需要更多的培训数据,而不是更少。您可能还需要更多地考虑使用的平滑类型。简单的拉普拉斯平滑可能并不理想。

我认为最重要的一点是:无论您使用什么分类器,功能都高度依赖于域(有时甚至是数据集)。例如,如果您根据电影评论对文本情绪进行分类,那么仅使用unigrams似乎是违反直觉的,但它们的表现要好于仅使用形容词。另一方面,对于Twitter数据集,发现unigrams和bigrams的组合是好的,但是更高的n-gram没有用。根据这些报告(参考Pang和Lee,意见挖掘和情感分析),我认为使用更长的元组会显示类似的结果,因为毕竟,单词元组只是更高的点 - 维度空间。基本算法的行为方式相同。