Как рассчитывается качество xgboost?

может кто-нибудь объяснить, как Quality столбец в пакете xgboost R вычисляется в

1 ответов


хорошо, я думаю, я понял. Значение reg_lambda по умолчанию не 0, как указано в документации, а фактически 1 (из param.h)

enter image description here

кроме того, похоже, что коэффициент половины не применяется при расчете коэффициента усиления, поэтому столбец качества вдвое больше, чем вы ожидаете. Наконец, я также не думаю gamma (также называемый min_split_loss) применяется к этому вычислению либо (от update_hitmaker-inl.hpp)

enter image description here

вместо этого гамма используется для определения того, следует ли вызывать обрезку, но не отражается в самом расчете усиления, как предполагает документация.

enter image description here

если вы примените эти изменения, вы действительно получите 4000.53 как Quality для узла 0 дерева 0, как и в исходном вопросе. Я подниму это как проблему для парней xgboost, поэтому документация может быть соответственно изменились.