5

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

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

我发现训练准确性:0.5923和测试准确性:0.5780

My Class 有 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 处理多标签分类的不平衡数据。

4

2 回答 2

1

准确性可能会误导您作为衡量问题的指标,在​​高度不平衡的情况下,我会使用F1分数。

至于损失,您可以使用焦点损失,它是分类交叉熵的变体,专注于代表最少的类别。你可以在这里找到一个例子,根据我的经验,它对 NLP 分类任务的小类有很大帮助。

于 2020-04-21T20:50:46.640 回答
1

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

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

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

于 2019-12-27T14:25:23.010 回答