假设有两类分类问题。一个类具有超过95%的标记数据,另一个类具有5%的标记数据。这两个班级非常有偏见。
我正在进行类验证来评估不同的分类器,我发现分类器是否有意预测到具有多数(95%)标签的类,即使其他类的预测结果不准确,也不是精确/召回,很难区分,因为其他类只有5%标记数据。
以下是我正在使用的方法/指标(使用精确/召回)。我想知道是否有其他更好的指标或方法来评估考虑到5%的小班级?我为次要的5%课程分配了一个权重,但我在这里要求一个更系统的方法来衡量有偏见的数据集。
使用scikit learn + python 2.7。
scores = cross_validation.cross_val_score(bdt, X, Y, cv=10, scoring='recall_weighted')
print("Recall: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
scores = cross_validation.cross_val_score(bdt, X, Y, cv=10, scoring='precision_weighted')
print("Precision: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
答案 0 :(得分:4)
这是统计数据中的常见问题,因此您可以在互联网上找到大量资源。请检查,例如8 Tactics To Combat Imbalanced Training Data。
最简单的方法是重新采样数据。最简单的方法是复制少数类,直到两个类都被平等表示。 统计上更合理的方法是首先学习类的到达概率分布,然后为每个类绘制 n 样本。因此,您将拥有一个平衡的数据集。
当然,这取决于您的数据 - 或者只是仅了解数据的无偏差子集。 有关更多选项,请参阅文章。