对于负样本与正样本比例极高的多标签分类,应使用哪种损失函数和评估指标?

我正在训练一个用于检测服装属性的多标签分类模型。我使用Keras进行迁移学习,重训了vgg-19模型的最后几层。

属性总数为1000个,其中约99%是0。像准确率、精确度、召回率等指标全部失效,因为模型可以预测所有都是0,仍能获得很高的分数。诸如二元交叉熵、汉明损失等损失函数在这种情况下也未能奏效。

我使用的是深度时尚数据集。

那么,我应该使用哪些指标和损失函数来正确评估我的模型呢?


回答:

分类交叉熵损失或Softmax损失是由Softmax激活函数和交叉熵损失组成。如果我们使用这种损失函数,我们将训练一个CNN来输出每张图像在C个类别上的概率分布。它用于多类分类

你需要的是多标签分类,因此你应该使用二元交叉熵损失或Sigmoid交叉熵损失。它是由Sigmoid激活函数和交叉熵损失组成。与Softmax损失不同,它对每个向量分量(类别)是独立的,这意味着为每个CNN输出向量分量计算的损失不受其他分量值的影响。这就是为什么它被用于多标签分类,其中一个元素属于某个类别的判断不应影响对另一个类别的决策。

现在,为了处理类别不平衡,你可以使用加权的Sigmoid交叉熵损失。这样,你将根据正样本的数量/比例来惩罚错误的预测。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注