根据文档,http://xgboost.readthedocs.io/en/latest/python/python_api.html如果我们想要定义自定义目标函数,它应该有签名
objective(y_true, y_pred) -> grad, hess
哪里
hess: array_like of shape [n_samples]
The value of the second derivative for each sample point
但是,如果我们有损失函数,依赖于N个变量,我们应该有二阶导数的NxN矩阵,但是我们的hess的形状只有Nx1。我们应该排除“交叉变量”的衍生工具吗?还有别的吗?
发布于 2018-05-04 10:54:19
我认为,你必须取的导数是关于Booster
返回的分数。因此,它导致每个训练示例(=sample)有一个值,从而导致n_samples数组。得分是进入目标函数的值,即在MSE中的(x-m)**2
中的x或逻辑函数中的1/(1+exp(-x))
。
https://stackoverflow.com/questions/50164303
复制相似问题