Catboost中的Mlogloss值开始为负值并增加

时间:2018-07-08 08:15:46

标签: loss-function multiclass-classification mlogit catboost

我正在使用设置使用catboost运行catboost分类器:

model = CatBoostClassifier(iterations=1000, learning_rate=0.05, depth=7, loss_function='MultiClass',calc_feature_importance=True)

我有5个类别,它从-ve值开始,并在拟合模型时按以下方式增加:

0:      learn: -1.5036342       test: -1.5039740        best: -1.5039740 (0)    total: 18s      remaining: 4h 59m 46s
1:      learn: -1.4185548       test: -1.4191364        best: -1.4191364 (1)    total: 37.8s    remaining: 5h 14m 24s
2:      learn: -1.3475387       test: -1.3482641        best: -1.3482641 (2)    total: 56.3s    remaining: 5h 12m 1s
3:      learn: -1.2868831       test: -1.2877465        best: -1.2877465 (3)    total: 1m 15s   remaining: 5h 12m 32s
4:      learn: -1.2342138       test: -1.2351585        best: -1.2351585 (4)    total: 1m 34s   remaining: 5h 13m 56s

这是正常行为吗?在大多数机器学习算法中,对数损失为正,并随着训练而减少。我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

是的,这是正常的行为。

在模型参数中指定loss_function='MultiClass'时,它会使用另一个损失函数(而不是LogLoss)进行优化。可以在here中找到定义。

要了解该功能的含义,可以考虑最佳情况和最坏情况。在最佳情况下,对象 a i 的目标函数的值都集中在正确的类 t 中,因此, log (在链接页面上的公式中)将等于1,而 log 将为0。但是,当您偏离最佳情况时, log 会减少到0,而 log 本身会越来越负。