Ответ
R² (коэффициент детерминации) — это метрика для оценки регрессионных моделей, которая показывает, какая доля дисперсии зависимой переменной (целевого признака) объясняется моделью.
Формула: R² = 1 - (SS_res / SS_tot)
SS_res— сумма квадратов остатков (ошибок модели).SS_tot— общая сумма квадратов (дисперсия данных относительно среднего).
Интерпретация значений:
- R² = 1: Идеальная модель. Все точки данных лежат точно на линии/гиперплоскости регрессии. Ошибок нет (
SS_res = 0). - R² = 0: Модель работает не лучше, чем наивный прогноз средним значением целевой переменной. Модель объясняет 0% дисперсии.
- R² < 0: Модель работает хуже, чем предсказание константным средним. Такое случается, когда модель сильно переобучена на тестовых данных или некорректно построена.
- 0 < R² < 1: Модель объясняет соответствующую долю дисперсии. Например, R² = 0.85 означает, что 85% изменчивости целевой переменной учтено моделью.
Пример расчета в Python:
import numpy as np
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# Создаем синтетические данные
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1) # Линейная зависимость + шум
# Делим данные и обучаем модель
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
# Вычисляем R²
r2 = r2_score(y_test, y_pred)
print(f"R² на тестовой выборке: {r2:.4f}") # Например, 0.7421
# Что это значит? Наша линейная модель объяснила около 74% дисперсии y_test.
# Оставшиеся 26% — это необъясненная дисперсия (шум или влияние неучтенных факторов).
Важные ограничения R²:
- Не указывает на адекватность модели. Высокий R² не гарантирует, что модель корректно отражает взаимосвязи (может быть переобучение или пропущена нелинейность).
- Чувствителен к выбросам.
- Монотонно растет с добавлением признаков, даже бесполезных. Поэтому для моделей со многими признаками лучше смотреть на скорректированный R² (adjusted R²), который штрафует за сложность.