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

Dha*_*MEN 5 python multilabel-classification keras imbalanced-data

我的数据集形状是 (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
Run Code Online (Sandbox Code Playgroud)

模型结构:

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'])
Run Code Online (Sandbox Code Playgroud)

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

小智 2

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

您应该进一步计算混淆矩阵,以便可视化每个类单独执行的情况。可以在此博客此处找到解决不平衡数据问题的更详细方法。

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