【发布时间】:2014-08-13 13:33:47
【问题描述】:
我正在使用 scikit-learn Multinomial Naive Bayes 分类器进行二进制文本分类(分类器告诉我文档是否属于类别 X)。我使用平衡数据集来训练我的模型,并使用平衡测试集对其进行测试,结果非常有希望。
这个分类器需要实时运行并不断分析随机扔给它的文档。
但是,当我在生产环境中运行我的分类器时,误报的数量非常高,因此我的准确率非常低。原因很简单:分类器在实时场景中遇到的负样本更多(大约 90% 的时间),这与我用于测试和训练的理想平衡数据集不对应。
有没有办法可以在训练期间模拟这个实时案例,或者有什么技巧可以使用(包括对文档进行预处理以查看它们是否适合分类器)?
我计划使用与实时情况相同比例的不平衡数据集来训练我的分类器,但我担心这可能会使朴素贝叶斯偏向负类并失去我对正类的召回率。
感谢任何建议。
【问题讨论】:
-
我想你知道问题和解决方案。您需要提供真实场景的采样数据库。但是,您是否尝试过交叉验证技术?
-
我使用交叉验证来选择我的模型参数(例如平滑参数)。我读过一个不平衡的数据集不适合朴素贝叶斯,你还会推荐它吗?那么它不会将所有内容都归类为负面吗?
-
我认为所有的分类算法都不会在具有平衡训练采样的不平衡数据集中表现良好。数据集不平衡是数据挖掘中的一个常见问题。我建议您搜索改进数据集的方法。但是,我确信使用基于决策树的算法(如 Cart 或 J48)会获得更好的结果。你试过吗?
-
关于“一切负面”将取决于您的校准。你知道 WEKA 工具吗?
标签: python machine-learning classification scikit-learn text-classification