我正在使用带有 lightGBM 的 Tweedie 目标函数并且有一些问题:
- lightGBM 用于 Tweedie 的损失函数是什么?
- 它如何处理值为 0 的预测,因为 sklearn 中的 mean_tweedie_deviance 断言严格肯定的事实和预测?
- mean_tweedie_deviance 是损失吗?
我查看了源代码,似乎损失只是偏差的两个术语。
有没有人有过使用 tweedie loss 进行超参数调整的经验?
我正在使用带有 lightGBM 的 Tweedie 目标函数并且有一些问题:
我查看了源代码,似乎损失只是偏差的两个术语。
有没有人有过使用 tweedie loss 进行超参数调整的经验?
回答永远不会太迟。
可以查看lightGBM源码中的tweedie损失函数实现: https ://github.com/microsoft/LightGBM/blob/1c27a15e42f0076492fcc966b9dbcf9da6042823/src/metric/regression_metric.hpp#L300-L318
正如您在上一个链接中看到的,如果将原始分数裁剪为 1e-10f 以确保严格的正面预测。真相可以为0。这在tweedie损失函数中不是问题
不完全是。tweedie 损失函数(因为它只是:损失最小化)忽略 mean_tweedie_deviance 的常数。如果您仔细观察 mean_tweedie_deviance 的定义(请参阅https://scikit-learn.org/stable/modules/model_evaluation.html#mean-tweedie-deviance中的官方文档) 你会注意到对于 p > 0(使用 tweedie 损失的典型情况,否则你只是假设目标的正态分布),那么有一个不依赖于预测 $\hat{y}$ 的常数. 试图最小化一个常数是没有意义的。这就是为什么我认为 lightGBM 开发人员刚刚忽略了这个术语。然而,应该注意的是,在 lightGBM 中实现的 tweedie 损失函数的导数应该与 mean_tweedie_deviance 的导数相匹配,这才是真正重要的 :)。