Python 如何在Keras中使用CNN处理多标签分类的不平衡数据?

Python 如何在Keras中使用CNN处理多标签分类的不平衡数据?,python,keras,multilabel-classification,imbalanced-data,Python,Keras,Multilabel Classification,Imbalanced Data,我的数据集形状是(91149,12) 我使用CNN在文本分类任务中训练分类器 我发现训练精度:0.5923和测试精度:0.5780 我的班级有9个标签,如下所示: df['thematique'].value_counts() Corporate 42399 Economie collaborative 13272 Innovation 11360 Filiale 5990

我的数据集形状是
(91149,12)

我使用CNN在文本分类任务中训练分类器

我发现训练精度:
0.5923
和测试精度:
0.5780

我的班级有9个标签,如下所示:

df['thematique'].value_counts()
Corporate                   42399
Economie collaborative      13272
Innovation                  11360
Filiale                      5990
Richesses Humaines           4445
Relation sociétaire          4363
Communication                4141
Produits et services         2594
Sites Internet et applis     2585
模型结构:

model = Sequential()
embedding_layer = Embedding(vocab_size, 300, weights=[embedding_matrix],   input_length=maxlen   ,   trainable=False)
model.add(embedding_layer)
model.add(Conv1D(128, 7, activation='relu'))
model.add(GlobalMaxPooling1D())
model.add(Dense(9, activation='sigmoid'))
model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics= ['categorical_accuracy'])

我的多标签分类数据不平衡。我需要在Keras中使用CNN处理多标签分类的不平衡数据。

我不确定您是否需要使用特定Keras本身来处理不平衡问题,而不是使用某种直觉。一种简单的方法是每个类使用相同数量的数据。当然,这会导致另一个问题,即过滤大量样本。但这仍然是一件你可以检查的事情。当然,当您有不平衡的数据时,仅仅计算分类性能并不是一个好主意,因为它可以很好地处理每个类的性能

您应该进一步计算混淆矩阵,以便可视化每个类各自的性能。关于不平衡数据问题的更详细的方法可以在本文和中找到


最重要的是使用正确的工具来评估分类的性能,并按照我提到的链接中的建议处理输入数据。

准确度可能会误导您的问题,对于高等级不平衡,我将使用F1分数

至于损失,您可以使用it,它是分类交叉熵的一个变体,它关注表示最少的类。你可以找到一个例子,根据我的经验,它对NLP分类任务的小类帮助很大