Как делается прогноз по регрессии?

«Как делается прогноз по регрессии?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Прогноз по регрессии — это процесс применения обученной модели для предсказания непрерывного числового значения (например, цены, температуры, спроса) на основе новых входных данных. Вот как я это делаю на практике:

1. Подготовка модели и данных:

  • Модель должна быть предварительно обучена на исторических данных. Важно, что новые данные для прогноза должны обрабатываться точно так же, как и тренировочные: применяется то же масштабирование (например, StandardScaler), кодирование категориальных переменных и обработка пропусков.
    
    # Обучение scaler на тренировочных данных
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    X_train_scaled = scaler.fit_transform(X_train)

Масштабирование новых данных с использованием ТОГО ЖЕ scaler

X_new_scaled = scaler.transform(X_new) # Важно: transform, НЕ fit_transform!


**2. Непосредственно прогноз:**
*   Прогноз выполняется вызовом метода `.predict()` у обученного объекта модели. На вход подается подготовленный массив признаков.
```python
from sklearn.ensemble import RandomForestRegressor

# Обучение модели (делается один раз)
model = RandomForestRegressor(n_estimators=200, max_depth=10, random_state=42)
model.fit(X_train_scaled, y_train)

# Прогноз для новых данных
predictions = model.predict(X_new_scaled)
print(f"Прогнозируемые значения: {predictions}")

3. Интерпретация и оценка (если есть истинные значения):

  • После получения прогнозов я оцениваю их качество на тестовой выборке, если истинные значения (y_test) известны. Для этого использую метрики:
    • MAE (Mean Absolute Error): Средняя абсолютная ошибка. Легко интерпретируется (ошибка в тех же единицах, что и целевая переменная).
    • RMSE (Root Mean Squared Error): Корень из средней квадратичной ошибки. Сильнее штрафует за большие выбросы в ошибках.
    • R² (Коэффициент детерминации): Доля дисперсии целевой переменной, объясненная моделью. Значение 1 — идеальная модель, 0 — модель не лучше среднего.
      
      from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
      import numpy as np

mae = mean_absolute_error(y_test, predictions) rmse = np.sqrt(mean_squared_error(y_test, predictions)) r2 = r2_score(y_test, predictions) print(f"MAE: {mae:.2f}, RMSE: {rmse:.2f}, R²: {r2:.2f}")



**Ключевой момент:** Качество прогноза напрямую зависит от репрезентативности тренировочных данных и корректности предположений модели (например, линейная регрессия предполагает линейную связь и нормальность остатков). Всегда нужно проводить анализ остатков после обучения.