Почему бустинг плохо понимает линейные зависимости?



Я подумал-подумал и решил прямо в канале отвечать на хорошие вопросы из комментариев) Начнем с вопроса про линейные зависимости в градиентном бустинге над деревьями



Условному LightGBM непросто выучить зависимость y = x по 2 причинам:



1. Нужно довольно много сплитов дерева (большая глубина / мнго деревьев), чтобы это выучить

if x < 10 then y = 9

if x > 10 then y = 11

if x > 12 then y = 13

…. (N раз)

if x > 1000 then y = 1001



2. Сложно прогнозировать out-of-distribution

Вторая проблема хорошо видна из “крайних” условий на х:

if x <10 then y = 9

if x > 1000 then y = 1001



Бустинг довольно плох для значений Х, которых не было в трейне (out-of-distribution). И если у вас, например, продажи с растущим трендом, то прогнозировать больше, чем было раньше - очень проблемно



Можно конечно для продаж прогнозировать не сами продажи, а их прирост. Но и это не всегда решает проблему: представьте, что на товар была скидка не более 10%, а сейчас стала 30%. Можно неаккуратно переобучиться на историю скидок именно этого товара и не прогнозировать бОльший рост, даже если на всех товарах (где бывают любые скидки) есть около-линейная зависимость от скидки



Рубрика “Ответы на вопросы из комментариев” #answers