Как дерево и линейная регрессия предсказывают для объекта с признаком вне обучающего диапазона
Что проверяют
Понимаете ли вы, как модель устроена внутри, а не только как вызвать fit. Правильный ответ показывает, что дерево не умеет экстраполировать вообще, а линейная модель экстраполирует всегда, нужно это или нет. Следом спрашивают про случайный лес и бустинг и про тренд во временном ряду.
Как отвечать
- дерево: каждое разбиение сравнивает признак с порогом, найденным на обучении. Объект с признаком больше обучающего максимума уходит в ту же крайнюю ветку, что и самые большие обучающие объекты, и получает среднее таргета в этом листе. За границей диапазона прогноз плоский, это константа;
- лес и бустинг: среднее или сумма деревьев, то есть тоже кусочно-постоянная функция. За пределами обучающих данных она не растёт;
- линейная регрессия: продолжает прямую
w·x + bсколь угодно далеко. Если зависимость действительно линейная, это хорошо, если нет, получаются отрицательные цены или спрос без предела. С полиномиальными признаками разлёт ещё сильнее.
Проверить легко на игрушке: обучите DecisionTreeRegressor и LinearRegression на x от 0 до 10 и y = 2x, затем предскажите для x = 20. Линейная модель даст около 40, дерево около 20, то есть значение крайнего листа.
Что с этим делают: убирают тренд и учат дерево на разностях или отношениях, добавляют в листья линейную часть (в LightGBM это параметр linear_tree), комбинируют линейную модель для тренда с бустингом для остатков. И отдельно мониторят, не уходят ли признаки в проде за обучающий диапазон.
Где спотыкаются
Говорят, что дерево «найдёт ближайшую ветку и ошибётся». Механизм конкретный: крайний лист и постоянный прогноз, его и нужно назвать.
Считают, что ансамбль из тысячи деревьев экстраполирует лучше одного. Не лучше, ограничение то же самое.
Проверяют выход за диапазон по каждому признаку отдельно. В многомерном случае объект может лежать внутри всех диапазонов по отдельности, но в области, где обучающих точек не было вовсе.