我有一个文本文档的高度不平衡的数据集(3%是,87%否(,包含标题和抽象功能。我已经将这些文档转换为具有填充批次的tf.data.Dataset
实体。现在,我正在尝试使用深度学习来训练这个数据集。对于TensorFlow中的model.fit()
,您有class_weights
参数来处理类不平衡,但是,我正在使用keras-tuner
库寻找最佳参数。在他们的超参数调谐器中,他们没有这样的选择。因此,我正在寻求解决阶级失衡问题的其他选择。
是否有在keras-tuner
中使用类权重的选项?此外,我已经在使用precision@recall
度量。我也可以尝试一种数据重采样方法,比如imblearn.over_sampling.SMOTE
,但正如Kaggle的这篇文章所提到的:
SMOTE似乎无助于改善结果。然而,它使网络学习更快。此外,还有一个大问题,这种方法不兼容更大的数据集。你必须在嵌入的句子上应用SMOTE,这会占用太多的内存。
如果您正在寻找其他方法来处理不平衡数据,您可以考虑使用SMOTE或ADASYN包生成合成数据。这通常是有效的。我知道你已经考虑过这是一个探索的选择。
您可以将评估度量更改为fbeta_scorer。(其加权fscore(
或者,如果数据集足够大,可以尝试欠采样。