我正在尝试使用朴素贝叶斯对样本进行分类。我的样本量是 280 万条记录,90% 的记录具有类标签(因变量)=“0”,其余记录为“1”。测试集中的分布也是相同的(90% - 10%)朴素贝叶斯分类器将整个测试集标记为“0”。我该如何处理这种情况?在这种情况下是否有任何其他算法可以实现。
问问题
970 次
3 回答
1
使用更好的分类器可能会或可能不会解决您的问题。这里的问题是你的问题是不平衡的。如果数据是不可分离的,那么 90% 的准确率可能代表良好的性能,分类器通过始终做出相同的预测来实现。如果这不是您想要的行为,您应该使用成本函数或从您的正面重新采样,以便您有更多的正面数量。
于 2013-12-01T10:28:37.333 回答
0
几乎所有分类方法实际上都不会返回二元结果,而是返回给定案例属于该类别的可能性的倾向得分(通常在 0 到 1 之间)。然后通过选择一个截止点(通常为 0.5)来创建二进制结果。
当您想使用弱预测变量来识别罕见案例时,任何分类方法都可能无法找到倾向得分高于 0.5 的案例,从而导致您的案例全为 0。
在这种情况下,您可以做 3 件事:
- 如果可能的话,我建议找到更强的预测因子
- 不同的统计方法可能更适合识别数据集中的模式
- 降低分界点会增加真阳性的数量,但会以更多的假阳性为代价
于 2013-11-27T07:40:08.907 回答
0
有几十个分类器,包括:
- 逻辑回归
- 支持向量机
- 决策树
- 神经网络
- 随机森林
- 很多很多...
其中大多数可以使用一些自定义技术来处理类不成比例,例如在 SVM 中它是“类权重”(在 scikit-learn 中可用)。
那么为什么NB会失败呢?朴素贝叶斯非常朴素,它假设每个特征都是独立的,这种情况很少发生,所以它只是一个简单的理解,但总的来说分类器非常弱。
于 2013-11-19T10:53:40.923 回答