【发布时间】:2021-04-06 18:19:30
【问题描述】:
我需要知道在高斯、二项式和多项式分布的 h2o gbm 和 xgboost 函数中使用了哪些损失函数。不幸的是,我对 Java 的了解非常有限,我无法真正破译源代码,而且似乎没有任何文档说明哪个发行版与哪个功能相关联。我想我从here 收集到它是二项式的对数损失和高斯的 MSE,但我找不到多项式的任何东西。这里有人可能知道答案吗?
【问题讨论】:
标签: h2o loss-function
我需要知道在高斯、二项式和多项式分布的 h2o gbm 和 xgboost 函数中使用了哪些损失函数。不幸的是,我对 Java 的了解非常有限,我无法真正破译源代码,而且似乎没有任何文档说明哪个发行版与哪个功能相关联。我想我从here 收集到它是二项式的对数损失和高斯的 MSE,但我找不到多项式的任何东西。这里有人可能知道答案吗?
【问题讨论】:
标签: h2o loss-function
感谢您的提问。我们绝对应该在documentation 中提供这些信息。我们正在努力改进文档。回答你的问题:
多项分类的损失函数是 H2O GBM 和 XGBoost 的 softmax。 H2O GBM 是基于此paper 实现的:贪婪函数逼近:梯度提升机,Jerome H. Friedman 2001。在第 4.6 章。作者很好地解释了它是如何计算的以及为什么。
基于损失函数定义了negHalfGradient 方法,每个分布都单独实现它。对于多项分布 (here),实现如下:
@Override
public double negHalfGradient(double y, double f, int l) {
return ((int) y == l ? 1f : 0f) - f;
}
地点:
y 是实际回复f 是链接空间中的预测响应l 是一个类标签(按字典顺序从原始标签转换为 0 类的编号 - 1)如果您还有其他问题,请告诉我。
【讨论】: