朴素贝叶斯有偏见吗?

Is Naive Bayes biased?

我有一个用例,其中文本需要 class 化为三个类别之一。我从朴素贝叶斯 [Apache OpenNLP, Java] 开始,但我被告知该算法是有偏见的,这意味着如果我的训练数据有 60% 的数据为 classA 和 30% 的数据为 classB 和 10% 作为 classC 那么算法倾向于偏向 ClassA,因此预测其他 class 文本属于 classA。

如果这是真的,有没有办法解决这个问题?

我遇到了其他算法,如 SVM 分类器或逻辑回归(最大熵模型),但我不确定哪种更适合我的用例。请指教

there a way to overcome this issue?

是的,有。但首先你需要了解它为什么会发生?

基本上你的数据集是不平衡的。

不平衡的数据集意味着两个 classes 之一的实例比另一个高,换句话说,一个中所有 classes 的观察数量不相同class化数据集。

在这种情况下,您的模型会偏向于大多数样本的 class,因为您有更多 class 的训练数据。

解决方案

  1. 采样不足: 从多数 class 中随机删除样本以使数据集平衡。
  2. 过度采样: 添加更多少数 classes 样本以使数据集平衡。
  3. 更改性能指标 使用 F1-score、'recallorprecision` 来衡量模型的性能。

没有更多的解决方案,如果您想了解更多,请参阅此blog

There are other algorithm that i came across like SVM Classifier or logistic regression (maximum entropy model), however I am not sure which will be more suitable for my usecase

除非你尝试,否则你永远不会知道,我建议你对你的数据尝试 3-4 种不同的算法。