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

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

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

最佳答案

有没有办法解决这个问题?


就在这里。但是首先,您需要了解为什么会发生这种情况?

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

不平衡的数据集意味着两个类别之一的实例高于另一个类别,以另一种方式,分类数据集中的所有类别的观察次数都不相同。

在这种情况下,由于您拥有更多样本的训练数据,因此您的模型会偏向具有大多数样本的类别。

解决方案


采样不足:
从多数类中随机删除样本以使数据集平衡。
过度采样:
添加更多少数类样本以使数据集平衡。
更改绩效指标
使用F1-score,“ recall or precision”来测量模型的性能。


其他解决方案很少,如果您想了解更多信息,请参阅此blog


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


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

08-25 21:03
查看更多