Можно ли использовать линейную регрессию для прогноза продаж с ограничением неотрицательности
Что проверяют
Понимаете ли вы, что обычная регрессия не знает про физический смысл цели и спокойно выдаёт минус пять продаж. И отличаете ли ограничение на прогноз от ограничения на коэффициенты. Следом часто спрашивают, что делать с большим числом нулевых продаж.
Как отвечать
Да, но в чистом виде линейная регрессия неотрицательность не гарантирует. Варианты по возрастанию аккуратности:
- обрезка прогноза:
np.maximum(pred, 0). Просто, но систематически завышает среднее на товарах с редкими продажами, а сама модель при этом учится без всякого ограничения; - преобразование цели: обучаться на
log1p(y), предсказывать черезexpm1. Нулиlog1pпереносит, но обратное преобразование даёт что-то близкое к медиане, а не к среднему, и прогноз занижен. Нужна поправка (например, smearing-оценка Дуана) или честная проверка на отложенных данных; - GLM с логарифмической связью: пуассоновская регрессия или Tweedie, в scikit-learn это
PoissonRegressorиTweedieRegressor. Модель остаётся линейной по признакам, а прогнозexp(Xβ)всегда положителен. Tweedie сpowerмежду 1 и 2 хорошо описывает много нулей плюс непрерывные объёмы; - бустинг: в LightGBM есть цели
poissonиtweedie, в XGBoostcount:poissonиreg:tweedie, это стандарт для прогнозов спроса.
Отдельно проговорите NNLS: scipy.optimize.nnls или LinearRegression(positive=True) запрещают отрицательные коэффициенты, а не отрицательные прогнозы. Это полезно, когда по смыслу каждый фактор может только добавлять продажи, но прогноз само по себе не спасает: знак зависит ещё от свободного члена и знаков признаков.
Для продаж ещё назовите временную валидацию (TimeSeriesSplit, без перемешивания) и признаки лагов и сезонности.
Где спотыкаются
Путают NNLS с неотрицательным прогнозом. Интервьюер почти всегда уточняет именно это.
Логарифмируют цель через log(y) и получают минус бесконечность на нулевых продажах, либо забывают про смещение при обратном преобразовании.
Предлагают Lasso или Ridge как решение. Регуляризация борется с переобучением, к знаку прогноза она отношения не имеет.