我必须使用哪种损失交叉熵?

数据挖掘 深度学习 喀拉斯 多类分类 多标签分类 准确性
2021-09-22 07:25:05

我正在使用这个数据集https://www.kaggle.com/c/sf-crime来预测使用 keras 的犯罪事件。我已经使用 pd.get_dummies 对类别进行了编码,然后将其用作验证数据。起初,我尝试使用 categorical_crossentropy 和 adam 作为损失函数,但结果返回的 acc 非常差,接近 0.3 和大约 2.7 的损失。所以我尝试通过使用 binary_crossentropy 来尝试不同的熵。结果似乎被夸大了,acc 高于 0.97,而损失在第一个 epoch 时小于 0.1。我还为每一层提供了 0.3 的 dropout。那么哪种交叉熵更准确或更好地用于这种情况,哪种分类是多标签或多类?

1个回答

哪种分类是多标签或多类?

如果我们看一下kaggle 比赛页面上的数据面板:

类别 - 犯罪事件的类别(仅在 train.csv 中)。这是您要预测的目标变量。

我们试图预测的目标是犯罪的类别(可以取多个值),所以这回答了你的问题:问题是多类的

那么对于这种情况,哪种交叉熵更准确或更好用呢?

keras 中有三种主要类型的交叉熵:

根据您的问题,我假设您认为不同类型的交叉熵是可以互换的。事实并非如此。您应该根据您的问题和数据编码方式来选择交叉熵。

在您的情况下,由于您有一个多类问题并且您声明您已经使用pandas.get_dummies(),它对您的数据进行实时编码,您应该使用分类交叉熵而不是别的!