我一直在使用烂番茄电影评论数据集进行情绪分析预测。数据集有 5 个类 {0,1,2,3,4},其中 0 表示非常负,4 表示非常正数据集高度不平衡,
total samples = 156061
'0': 7072 (4.5%),
'1': 27273 (17.4%),
'2': 79583 (50.9%),
'3': 32927 (21%),
'4': 9206 (5.8%)
如您所见,类 2
具有近 50% 的样本和0
,5
贡献了 ~10% 的训练集
因此,对类2
存在非常强烈的偏见,从而降低了类0
和4
分类的准确性。
如何平衡数据集?一种解决方案是通过将每个类的样本减少到只有 7072 个来获得相同数量的样本,但它大大减少了数据集!如何在不影响整体分类准确性的情况下优化和平衡数据集?
你不应该平衡数据集,你应该以平衡的方式训练分类器。几乎所有现有的分类器都可以使用一些成本敏感目标进行训练。例如 - SVM 可让您"加权"样品,只需对较小类别的样品进行更多加权即可。同样,朴素贝叶斯也有类先验 - 改变它们!随机森林、神经网络、逻辑回归,它们都可以让您以某种方式"加权"样本,这是获得更平衡结果的核心技术。
对于分类问题,您可以尝试估算器中的class_weight='balanced'
选项,例如逻辑、SVM 等。例如:
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression