xgboost中基本分类器为logistic,其一阶导,二阶导推导问题

  老师,您好,在提升实践章节中,当自定义基本分类器为logistic回归,编写损失函数的其一阶导,二阶导。  
p = 1.0 / (1.0 + np.exp(-y_hat))
g = p - y.get_label()
h = p * (1.0-p)
这里没有为啥不是g =( p-y.get_label())xi,在回归章节中是损失函数的一阶导数有乘以样本的。

邹博 - 计算机科学博士,深谙机器学习算法原理

赞同来自:

这是《机器学习(升级版)》中“提升”章节的问题。 问的非常好,这里的p-y.label,其实只是梯度的“公共部分”,因为不同的样本要乘以各自的样本值,所以是无法提前算出来的,因此往往用p-y.label计算梯度的系数部分,实际拿到样本,再乘以各自的数据。

HotHeat

赞同来自:

分别对 logistic 回归的损失函数中 f^i 求导, 以及 对代码中 p - y.get_label() 展开,
 二者的结果是一样的,但不知道为啥可以写成这种形式?
为什么二阶导时会变成 p * (1.0-p)?

要回复问题请先登录注册