Как описать архитектуру модели случайного леса с добавленной линейной моделью для экстраполяции
Что проверяют
Знаете ли вы, почему случайный лес не умеет экстраполировать, и можете ли собрать гибрид так, чтобы линейная часть действительно отвечала за тренд. Следом обычно спрашивают, как вы проверите экстраполяцию на валидации, если обычная кросс-валидация её не видит.
Как отвечать
Начните с причины. Предсказание дерева это среднее таргета в листе, поэтому лес никогда не выйдет за диапазон значений, которые видел при обучении. За границей обучающих данных прогноз становится горизонтальной линией: цена, спрос или нагрузка растут, а модель показывает последний уровень.
Рабочая архитектура строится на остатках:
- шаг 1, линейная модель: обучается на признаках с понятным трендом (время, объём, площадь) и забирает глобальную зависимость. Обычно это
Ridge, чтобы коэффициенты не разносило; - шаг 2, лес на остатках:
RandomForestRegressorучится на разнице междуyиlinear.predict(X)и ловит нелинейности и взаимодействия признаков; - предсказание: сумма двух частей. Внутри диапазона работает вся модель, снаружи тренд продолжает линейная часть, а лес добавляет ограниченную поправку.
Оформите это как свой эстиматор с fit и predict на базе BaseEstimator и RegressorMixin, тогда он встраивается в Pipeline и GridSearchCV.
Альтернативы, которые стоит назвать: деревья с линейными моделями в листьях (в LightGBM это параметр linear_tree) и перевод таргета в стационарный вид, когда модель предсказывает прирост или отношение к тренду, а не абсолютное значение.
Валидация должна проверять именно выход за диапазон: разбиение по времени или отложенный хвост по ключевому признаку, а не случайный KFold.
Где спотыкаются
Предлагают просто усреднить прогнозы леса и регрессии. Вне диапазона лес по-прежнему выдаёт константу, и усреднение даёт половину тренда вместо тренда.
Отдают в линейную часть все признаки подряд. Она начинает экстраполировать шум, и за границей данных прогноз уезжает быстрее, чем без неё.
Проверяют качество на случайном разбиении. Метрика отличная, потому что тест лежит внутри обучающего диапазона, а на реальном будущем модель ведёт себя совсем иначе.