1. 程式人生 > >理解GBDT演算法(二)——基於殘差的版本

理解GBDT演算法(二)——基於殘差的版本

GBDT演算法有兩種描述思路,一個是基於殘差的版本,一個是基於梯度gradient的版本。這篇我們先說說基於殘差的版本。

這篇我們再總結一個幾個注意點:

  • 這個版本的核心思路:每個迴歸樹學習前面樹的殘差,並且用shrinkage把學習到的結果大步變小步,不斷迭代學習。其中的代價函式是常見的均方差。
  • 其基本做法就是:先學習一個迴歸樹,然後“真實值-預測值*shrinkage”求此時的殘差,把這個殘差作為目標值,學習下一個迴歸樹,繼續求殘差……直到建立的迴歸樹的數目達到一定要求或者殘差能夠容忍,停止學習。
  • 我們知道,殘差是預測值和目標值的差值,這個版本是把殘差作為全域性最優的絕對方向來學習。
  • 這個版本更加適用於迴歸問題,線性和非線性的均可,而且在設定了閾值之後還可以有分類的功能。
  • 當時該版本使用殘差,很難處理純迴歸以外的問題。版本二中使用梯度,只要建立的代價函式能夠求導,那麼就可以使用版本二的GBDT演算法,例如LambdaMART學習排序演算法。
  • Shrinkage和梯度下降法中學習步長alpha的關係。shrinkage設小了只會讓學習更慢,設大了就等於沒設,它適用於所有增量迭代求解問題;而Gradient的步長設小了容易陷入區域性最優點,設大了容易不收斂。它僅用於用梯度下降求解。這兩者其實沒太大關係。