我正在研究需要分类为5类的几千份文件。我正在使用朴素贝叶斯分类器。当我在一些示例邮件上测试时,它工作正常,但是当我实际将它应用于原始数据集时,由于功能数量越来越多,计算变得非常复杂。在某一点上,这些值非常小,几乎为零。所以我的问题是如何避免获得非常小的值以及如何改进特征选择的问题?
答案 0 :(得分:2)
我们还观察到,当使用大量特征时,朴素贝叶斯倾向于给出较差的概率估计。所以功能选择确实是一个好主意。另外,特别是如果您的功能集非常大,那么查看功能选择总是一个好主意。如果做得好,它可以提高学习模型的泛化能力。
有多种方法可以为Naive Bayes执行特征选择:
显然,有更多方法可以执行特征选择,例如使用朴素贝叶斯分类器来评估不同的特征集。但是,在大规模数据集的背景下,我们发现这样的方法太慢了。
以上所有方法均可在Weka ML库中找到。请确保在选择功能时,只需考虑您的训练数据即可。您永远不应该使用部分测试数据进行特征选择。
答案 1 :(得分:1)
只是为了避免接近零的值的特征选择是不必要的 - 如果你的朴素贝叶斯分类器在日志空间中工作,那么\ prod_i p(f_i | c_j)变为\ sum_i log p(f_i | c_j),它赢了' t下溢。您可以通过以下方式计算后验概率:
p(c_j | f)= exp([log p(c_j)+ log p(f | c_j)] - sum_j'[log p(c_j')+ log p(f | c_j')])
至于是否出于其他原因需要进行特征选择......根据问题的不同,它可以是。维度降低通常更适用于文档分类,因为它可以发现类似/同义词。但最终你必须实现它们才能看到---首先尝试LSA / PCA,因为它们是最简单的。如果你有足够的数据,你可以直接使用Naive Bayes并直接进行多层神经网络(你将得到非线性和降低维度,直接有助于分类任务)。
答案 2 :(得分:0)
Weka通过搜索数据中所有可能的特征组合来支持特征选择,以找到最适合预测的子集(基于得分和排名)。查看example code以获取参考。