我正在使用设置使用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
这是正常行为吗?在大多数机器学习算法中,对数损失为正,并随着训练而减少。我在这里想念什么?
答案 0 :(得分:0)
是的,这是正常的行为。
在模型参数中指定loss_function='MultiClass'
时,它会使用另一个损失函数(而不是LogLoss)进行优化。可以在here中找到定义。
要了解该功能的含义,可以考虑最佳情况和最坏情况。在最佳情况下,对象 a i 的目标函数的值都集中在正确的类 t 中,因此, log (在链接页面上的公式中)将等于1,而 log 将为0。但是,当您偏离最佳情况时, log 会减少到0,而 log 本身会越来越负。