【问题标题】:Document Classification using Naive Bayes classifier使用朴素贝叶斯分类器进行文档分类
【发布时间】:2013-06-21 13:16:10
【问题描述】:
我正在使用简单的朴素贝叶斯算法在 mahout 中制作文档分类器。目前,我拥有的 98% 的数据(文档)属于 A 类,只有 2% 属于 B 类。我的问题是,由于 A 类文档与 B 类文档的百分比差距如此之大,那么分类器还能准确训练吗?
我正在考虑做的是忽略一大堆 A 类文档并“操纵”我拥有的数据集,以便在文档的组成方面没有如此大的差距。因此,我最终将拥有的数据集将包含 30% 的 B 类和 70% 的 A 类。但是,这样做有什么我不知道的影响吗?
【问题讨论】:
标签:
machine-learning
mahout
bayesian-networks
document-classification
【解决方案1】:
您不一定要对数据集 A 进行采样以减少其实例。有几种方法可以有效地从不平衡的数据集中学习,例如 Majority Undersampling(正是您所做的)、Minority Oversampling、SMOTE 等。以下是这些方法的经验比较:http://machinelearning.org/proceedings/icml2007/papers/62.pdf
或者,您可以为分类器定义自定义成本矩阵。换句话说,假设 B=Positive 类,你可以定义 cost(False Positive) http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.164.4418&rep=rep1&type=pdf
【解决方案2】:
其中很多都涉及“准确性”作为性能衡量标准的好坏,这取决于您的问题。如果将“A”误分类为“B”与将“B”误分类为“A”一样糟糕/正常,那么除了将所有内容都标记为“A”之外,几乎没有理由做任何事情,因为您知道它会可靠地得到你有 98% 的准确率(只要不平衡的分布代表真实的分布)。
在不了解您的问题(如果准确性是您应该使用的衡量标准)的情况下,我能给出的最佳答案是“这取决于数据集”。使用标准朴素托架,您有可能获得超过 99% 的准确度,尽管这不太可能。特别是对于朴素贝叶斯,您可以做的一件事是禁用先验(先验本质上是每个类的比例)。尽管模型参数是从不均匀数量的数据中学习的,但这具有假装每个类别发生的可能性相同的效果。
您提出的解决方案是一种常见做法,有时效果很好。另一种做法是为较小的班级创建假数据(如何取决于您的数据,对于文本文档,我不知道有什么特别好的方法)。另一种做法是增加代表性不足的类中数据点的权重。
您可以搜索“不平衡分类”并找到有关这些类型问题的更多信息(它们是较难的问题之一)。
如果准确度实际上不是衡量您问题的好方法,您可以搜索有关“成本敏感分类”的更多信息,这应该会有所帮助。