如何为高度不平衡的数据集交叉验证深度学习模型?

数据挖掘 机器学习 神经网络 深度学习 喀拉斯 多类分类
2021-09-27 04:00:26

我正在处理一个多模态分类问题(使用Keras)。我有三个不同类别的 1000、5000 和 10000 个样本。我想做一个五折交叉验证来选择最好的预训练深度学习模型进行部署。我在模型训练期间包括了班级权重,以便为发音较少的班级提供更多权重。对于给定的折叠,我将使用来自这三个类的 200、1000 和 2000 个样本进行验证。在这种情况下,准确性是一个很好的预测指标吗?还是我也必须测量 F1 分数和 Matthews 相关系数?我做对了吗?

2个回答

准确性并不是衡量数据不平衡的良好指标。公认的答案是正确的:通常使用 F1 分数。其他选项包括roc_auc_score(see here ) 和average_precision_score(see here ),它们都是通过 scikit-learn 定义的。

如果您使用的是 Keras,我建议您使用class_weights(请注意,如果您遇到多标签问题,这将无法正常工作,尽管有一些解决方法,例如这里)。

你有不平衡的数据集,所以你应该使用F1分数。您也可以对稀有类使用权重,这样您的成本函数就会以一种非常关心稀有类并尝试正确分类它们的方式形成。您也可以使用混淆矩阵来获取详细信息,但F1就足够了。是的,使用F1而不是精确或召回。你也可以看看这里