代码之家  ›  专栏  ›  技术社区  ›  adnanmuttaleb

当一个主题太宽而另一个主题太窄时,如何平衡主题、两个类数据集?

  •  0
  • adnanmuttaleb  · 技术社区  · 7 年前

    我有一个简单的预测,数据集由2300个样本组成,每个类e.i.总计=4600(二进制分类)。第一个类包含除另一个类之外的所有新闻类型,这是一个非常狭窄的主题。我用过 Naive-Bayes classifier 执行任务,其中分类器获取一个热编码的样本。尽管该分类器在数据集的测试部分表现良好(94%的准确率),但当它对爬行新闻(在生产中)进行分类时失败得很惨。 enter image description here 我认为这个问题是因为这两个类在实际中是不平衡的。如果这是原因,那么,如何克服这个问题呢?如何平衡我的数据集?假设我可以为广类(A)另外收集许多样本,但是对于窄类(B),只有非常少量的样本。

    0 回复  |  直到 7 年前
        1
  •  2
  •   razimbres    7 年前

    可以使用合成少数类过采样技术,SMOTE,增加少数类的大小。

    from imblearn.over_sampling import SMOTE
    sm = SMOTE()
    x1, y1 = sm.fit_sample(X_train, Y_train)
    

    另外,naive bayes对于不平衡类不是一个好的算法,尝试使用随机林(不带smote)或梯度增强树(带smote)。