0

我正在使用设置运行 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

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

4

1 回答 1

0

是的,这是正常行为。

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

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

于 2018-07-11T14:52:59.340 回答