Ответ
Да, модель регрессии может выдавать предсказания за пределами диапазона целевой переменной (y), наблюдавшегося при обучении. Чаще всего это происходит при экстраполяции — когда модель применяется к входным данным (X), которые выходят за границы пространства признаков обучающей выборки.
Пример с линейной регрессией:
import numpy as np
from sklearn.linear_model import LinearRegression
# Обучаем на простой линейной зависимости
X_train = np.array([1, 2, 3]).reshape(-1, 1) # Признак от 1 до 3
y_train = np.array([10, 20, 30]) # Таргет от 10 до 30
model = LinearRegression()
model.fit(X_train, y_train)
# Предсказание в пределах интервала X (интерполяция)
print(model.predict([[2.5]])) # ~25.0 - внутри диапазона y
# Предсказание за пределами интервала X (экстраполяция)
print(model.predict([[5]])) # ~50.0 - ВЫШЕ максимального y_train (30)
print(model.predict([[0]])) # ~0.0 - НИЖЕ минимального y_train (10)
Когда это происходит и какие риски:
- Линейные модели (LinearRegression, Ridge, Lasso): Легко экстраполируют, продолжая найденный тренд. Это может быть опасно, если зависимость нелинейна.
- Древовидные модели (DecisionTree, RandomForest, Gradient Boosting): Как правило, не умеют экстраполировать. Их предсказание для точек вне обучающего диапазона будет равно значению в ближайшей «граничной» области обучения (например, максимальному или минимальному
y_train). - Нейронные сети: Способны к экстраполяции, но их поведение вне обучающего распределения непредсказуемо и часто ненадежно.
Вывод из практики: Всегда нужно понимать, как ваша модель ведет себя на краях и за пределами обучающих данных. Перед развертыванием важно проводить анализ и, возможно, добавлять ограничивающую постобработку.