需要帮助来了解xgboost的近似拆分点建议


12

背景:

xgboost中,迭代尝试将树到所有示例上,这将最小化以下目标:˚F Ñtftn

i=1n[gift(xi)+12hift2(xi)]

其中gi,hi是我们先前最佳估计\ hat {y}的一阶和二阶导数y^(来自迭代t1):

  • gi=dy^l(yi,y^)
  • hi=dy^2l(yi,y^)

l是我们的损失函数。


问题(最终):

在构建ft并考虑特定拆分中的特定特征k时,他们使用以下启发式方法仅评估某些拆分候选者:他们按其x_k对所有示例进行排序xk,通过排序后的列表并将其二阶导数hi。他们仅在总和变化超过\ epsilon时才考虑拆分候选ϵ。这是为什么???

他们给的解释使我难以理解:

他们声称我们可以像这样重写以前的公式:

i=1n12hi[ft(xi)gi/hi]2+constant

而且我没有遵循代数-您能证明为什么相等吗?

然后他们声称“这恰好是带有标签和权重加权平方损失”-我同意这一说法,但我不知道它与他们使用的拆分候选算法有什么关系...ħ gi/hihi

感谢和抱歉,如果这个论坛时间太长。

Answers:


8

我不会详细介绍,但是以下内容可以帮助您理解这个想法。

他们使用分位数(Wikipedia)来确定拆分位置。如果您有100个可能的分割点(已排序),则可以尝试个分位数的分割点并且已经有了很好的近似值。这就是参数正在执行的操作。当拆分下的比最后拆分点多个点时,他们将其视为拆分点。如果,您将得到分割点,大于其他点的。当“总和变化超过{x1,,x100}10{x10,x20,,x90}ϵϵNϵ=0.01100{1%,2%,...,99%}ϵ ”,但是当当前点下的点数比最后一个点大。ϵ

现在,如果您有很多连续点已经很好地分类了,那么在它们之间进行拆分可能就没用了。您想拆分数据集中非常错误的部分,这些部分很难学习。为此,他们使用加权分位数。这是权重起作用的地方。第一个位数不是大于点数的的第一个点,而是大于权重的的第一个点。10 10 1010%10%


我登录只是为了给你投票。感谢您易于掌握的说明。
Pakpoom Tiwakornkit,

3

只需将代数部分添加到@Winks答案:

第二个方程式的符号应颠倒,如:

i=1n12hi[ft(xi)(gi/hi)]2+constant=i=1n12hi[ft2(xi)+2ft(xi)gihi+(gi/hi)2]=i=1n[gift(xi)+12hift2(xi)+gi22hi]

最后一项确实是常数:请记住,h i由上一次迭代确定,因此在尝试设置f t时它们是常数。gihift

因此,现在我们可以宣称“这是带有标签和权重h i的加权加权平方损失”gi/hihi

我的团队将Yaron和Avi归功于我的解释。


0

然后他们声称“这恰恰是带有标签gi / higi / hi和weights hihi的加权平方损失”-我同意这一说法,但我不知道它与他们使用的拆分候选算法有什么关系。 。

  1. 如果只有一个样品,并且您正在优化wtth迭代中,很容易看出,值将是w=gi/hi,说明(ft(gi/hi))2

  2. 现在您有了一个完整的数据集。另外,在损失函数具有相同的第二导数的情况下,w将成为avg(gi)/const,而不是sigma(gi)/sigma(hi)。我这样写是因为在那种情况下wh i的差无关hi在样本之间,因为没有差异。然而,实际上,当保持gi不变时,whi分布而波动。

我认为它解释了为什么它会起作用,因为它由hi加权。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.