1

假设有一个两类分类问题。一类有超过 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))
4

1 回答 1

4

这是统计中的一个常见问题,因此您会在互联网上找到大量资源。例如,检查8 Tactics To Combat Imbalanced Training Data

可能最简单的方法是重新采样您的数据。最简单的方法是复制少数类,直到两个类均等表示。一种统计上更合理的方法是首先学习您的班级范围的概率分布,然后为每个班级抽取n 个样本。因此,您就有了一个平衡的数据集。

当然,这取决于您的数据 - 或者仅根据您的数据的无偏子集进行学习。有关更多选项,请参阅文章。

于 2016-08-28T06:57:49.170 回答