Оценка регрессионной модели

В мире машинного обучения построение модели — лишь первый шаг. Как и при выпечке пирога, мы должны попробовать его, чтобы понять, удался ли он. Для регрессионных моделей (типа моделей, используемых для предсказания непрерывных числовых значений, таких как цены на жильё, температура или продажи),оценка модели— это нашдегустационныйэтап. Она говорит нам, насколько точны предсказания модели, где она хорошо работает и где есть возможности для улучшения.

Эта статья проведёт вас через систематическое изучение методов оценки регрессионных моделей: от основных понятий к конкретным метрикам, а затем к практике программирования, что позволит вам не только понимать отчёты об оценке, но и самостоятельно "оценить" свою модель.


Основные понятия регрессионных моделей и оценки

Прежде чем углубляться в метрики, нам нужно понять несколько фундаментальных понятий; они — краеугольный камень всех методов оценки.

Что такое задача регрессии?

Регрессия — это тип обучения с учителем, цель которого — предсказатьнепрерывное числовое значение。

  • Пример: Предсказать цену продажи (непрерывное числовое значение) на основе площади дома, возраста и местоположения (признаков).

Зачем нужна оценка?

  1. Выбор модели: Сравнить, какой из различных алгоритмов (например, линейная регрессия, регрессия решающего дерева) лучше работает на ваших данных.
  2. Настройка параметров: При корректировке параметров модели (например, силы регуляризации) нам нужен объективный критерий, чтобы судить, эффективна ли корректировка.
  3. Подтверждение эффективности: Убедиться, что модель обладает надежной предсказательной способностью на не встречавшихся ранее данных, избегая «кабинетной стратегии».

Ключевой термин: ошибка

Все метрики оценки вращаются вокруг «ошибки». Ошибка — это разница между предсказанным значением модели (ŷ) и истинным значением (y).

  • Ошибка в отдельной точке:误差 = y - ŷ
  • Суть оценки — этообобщение и анализ этих ошибок различными способами.。

Подробное объяснение основных метрик оценки

Мы познакомимся с наиболее часто используемыми и наиболее важными метриками оценки на простом примере, который будет использоваться на протяжении всего изложения.

Предположим, мы предсказали цены 5 домов:

Истинная цена (y) Предсказанная цена (ŷ) Ошибка (y - ŷ)
200 210 -10
150 145 5
300 310 -10
400 380 20
250 255 -5

1. Средняя абсолютная ошибка (MAE)

Интуитивное понимание: сложите абсолютные значения всех «ошибок» предсказания, а затем вычислите среднее. Оно напрямую показывает, «на сколько единиц в среднем предсказанное значение отклоняется от истинного».

Формула расчёта: MAE = (1/n) * Σ|y_i - ŷ_i|гдеn— это количество образцов,Σ— это символ суммирования.

Пример расчёта: MAE = (|-10| + |5| + |-10| + |20| + |-5|) / 5 = (10+5+10+20+5)/5 = 50/5 = 10

Интерпретация: в среднем наше предсказание цены дома отклоняется от истинной цены на100,000 yuan。

Характеристики:

  • Преимущества: интуитивность и простота понимания; не слишком сильное влияние экстремальных значений ошибок (выбросов).
  • Недостатки: функция абсолютного значения не является дифференцируемой всюду в математике, что неудобно в некоторых сценариях оптимизации.

2. Среднеквадратичная ошибка (MSE)

Интуитивное понимание: сначала «возвести в квадрат» каждую ошибку (чтобы убрать знак минус и усилить ошибки), затем взять среднее. Онаочень чувствительна к большим ошибкам.。

Формула расчёта: MSE = (1/n) * Σ(y_i - ŷ_i)^2

Пример расчёта: MSE = [(-10)^2 + (5)^2 + (-10)^2 + (20)^2 + (-5)^2] / 5 = (100+25+100+400+25)/5 = 650/5 = 130

Интерпретация: среднее квадратов ошибок равно 130. Само это значение не имеет прямого смысла в единицах измерения (это 10,000 yuan в квадрате), но оно очень эффективно для сравнения моделей.

Характеристики:

  • Преимущества: превосходные математические свойства (дифференцируема всюду); это целевая функция, минимизируемая при обучении многих моделей (например, линейной регрессии).
  • Недостатки: её размерность отличается от размерности исходных данных, из-за чего величину трудно интерпретировать; чувствительна к выбросам.

3. Корень из среднеквадратичной ошибки (RMSE)

Интуитивное понимание: это квадратный корень из MSE. Это эквивалентно «восстановлению» MSE к исходной форме, возвращая её к той же размерности, что и истинные значения и предсказанные значения.

Формула расчёта: RMSE = sqrt(MSE)

Пример расчёта: RMSE = sqrt(130) ≈ 11.4

Интерпретация: в среднем наши предсказания отклоняются от истинных значений примерно на114,000 yuan. Эта интерпретация аналогична MAE (100,000 yuan), но поскольку RMSE сначала возводит в квадрат, а затем извлекает квадратный корень, он придаёт большим ошибкам больший вес, поэтому обычно он больше, чем MAE.

Характеристики:

  • Преимущества: он имеет ту же размерность, что и исходные данные, и более сильную интерпретируемость, чем MSE; он сильнее штрафует большие ошибки и обычно используется в сценариях, где большие ошибки важны (например, прогнозирование финансовых рисков).
  • Недостатки: он также чувствителен к выбросам.

4. Показатель R² (коэффициент детерминации)

Интуитивное понимание: Насколько моя модель лучше, чем «слепое угадывание» (угадывание по среднему)? Этоотносительная величина, измеряющая способность модели объяснять вариацию в данных.

Формула расчёта: R² = 1 - (Σ(y_i - ŷ_i)^2 / Σ(y_i - y_mean)^2)гдеy_mean— это среднее истинных значений.

Модель «слепого угадывания»: Для любого дома я предсказываю среднюю цену дома (y_mean)。

  • рассчитывается какy_mean = (200+150+300+400+250)/5 = 260
  • Сумма квадратов ошибок модели «слепого угадывания»:Σ(y_i - 260)^2 = 1600+12100+1600+19600+100 = 35000

Пример расчёта: R² = 1 - (650 / 35000) = 1 - 0.01857 ≈ 0.9814

Интерпретация: Наша модель может объяснить98.14%колебания целевой переменной (цены дома). Это указывает на то, что модель очень хорошо соответствует данным.

Характеристики:

  • Диапазон: Теоретически диапазон R² составляет(-∞, 1]。
    • R² = 1: Идеальное предсказание.
    • R² = 0: Эффект модели такой же, как при прямом предсказании по среднему.
    • R² < 0: Модель даже хуже, чем прямое предсказание по среднему (это означает, что модель совершенно не подходит для данных).
  • Преимущества: Безразмерность, легко сравнивать производительность модели на разных наборах данных.
  • Недостатки: по мере увеличения числа признаков модели R² естественно растёт, даже если добавленные признаки бесполезны, что может привести к переобучению.

Сравнение метрик и как выбрать

Для более ясного понимания давайте обобщим в таблице:

Метрика Формула вычисления (упрощённая) Измерение Чувствительность к выбросам Характеристики и применимые сценарии
MAE Средняя абсолютная ошибка Совпадает с y Нечувствительна Наиболее интуитивная интерпретация. Ориентируется на "насколько велико среднее отклонение"; подходит для всех сценариев регрессии, особенно для данных с большим количеством выбросов.
MSE Среднеквадратичная ошибка Квадрат y Очень чувствительная Хорошие математические свойства. Это распространённая функция потерь для обучения модели. Само значение нелегко интерпретировать.
RMSE Квадратный корень из MSE Совпадает с y Очень чувствительная Наиболее часто используется. Она сочетает математические преимущества MSE с интерпретируемостью. Она сильно штрафует большие ошибки и популярна в финансах, прогнозировании и других областях.
R² 1 - (ошибка модели / ошибка базовой модели) Безразмерная Чувствительная Метрика относительной эффективности. Используется для сравнения улучшения модели относительно простой базовой модели. Легко сравнивать между наборами данных.

Рекомендации по выбору:

  1. Предпочтительно указывать RMSE и R²: RMSE даёт фактическую величину ошибки, а R² — относительную эффективность модели. Это наиболее универсальное сочетание.
  2. Когда в данных много выбросов, обратите внимание на MAE。
  3. Используйте MSE в качестве функции потерь при обучении и оптимизации модели.。
  4. Никогда не смотрите только на одну метрику! Объединяйте несколько метрик, чтобы всесторонне оценить модель.

Практика кода: Оценка с помощью Scikit-learn

Теперь давайте применим это на практике с помощью Python и библиотеки машинного обучения Scikit-learn.

Настройка окружения

Убедитесь, что необходимые библиотеки установлены:

Пример

pip install numpy scikit-learn matplotlib

Полный пример кода

Пример

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# 1. Создать имитационные данные
np.random.seed(42) # Обеспечьте одинаковые результаты при каждом запуске
X = 2 * np.random.rand(100, 1) # 100 образцов, 1 признак, диапазон [0,2)
y = 4 + 3 * X + np.random.randn(100, 1) # Истинная зависимость: y = 4 + 3x + шум

# 2. Разделение на обучающую и тестовую выборки (80% — обучение, 20% — тест)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. Обучение простой модели линейной регрессии
model = LinearRegression()
model.fit(X_train, y_train)

# 4. Сделать предсказания на тестовом наборе
y_pred = model.predict(X_test)

# 5. Вычисление всех метрик оценки
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse) # Или используйте mean_squared_error(y_test, y_pred, squared=False)
r2 = r2_score(y_test, y_pred)

# 6. Вывод результатов оценки
print("=== Отчёт об оценке модели регрессии ===")
print(f"Средняя абсолютная ошибка (MAE): {mae:.4f}")
print(f"Среднеквадратичная ошибка (MSE): {mse:.4f}")
print(f"Среднеквадратичная ошибка (RMSE): {rmse:.4f}")
print(f"Коэффициент детерминации (оценка R²): {r2:.4f}")
print("\nКоэффициенты модели:)
print(f" Свободный член: {model.intercept_)
print(f" Наклон (коэффициент для X): {model.coef_)

# 7. Визуализация результатов
plt.figure(figsize=(10, 5))

# Подграфик 1: Диаграмма рассеяния истинных значений против предсказанных значений
plt.subplot(1, 2, 1)
plt.scatter(y_test, y_pred, alpha=0.7, edgecolors='k')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=2, label='Линия идеального предсказания')
plt.xlabel('Истинные значения (y_test)')
plt.ylabel('Предсказанные значения (y_pred)')
plt.title('Истинные значения против предсказанных значений')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7)

# Подграфик 2: Гистограмма распределения ошибок
plt.subplot(1, 2, 2)
errors = y_test.flatten() - y_pred.flatten()
plt.hist(errors, bins=15, edgecolor='black', alpha=0.7)
plt.axvline(x=0, color='r', linestyle='--', label='Нулевая линия ошибки')
plt.xlabel('Ошибка предсказания')
plt.ylabel('Частота')
plt.title('Распределение ошибки предсказания')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.7, axis='y')

plt.tight_layout()
plt.show()

Построчное объяснение кода

  1. Создание данных: мы смоделировалиy = 4 + 3x + 噪声данные, которые представляют собой типичную линейную зависимость с добавлением случайного шума.
  2. Разделение набора данных:train_test_splitСлучайным образом разделите данные на две части. Используйте обучающий набор (X_train, y_train) для обучения модели, и используйте не участвовавший в обучении тестовый набор (X_test, y_test) чтобы оценить её способность к обобщению. Это важнейший шаг при оценке!
  3. Обучите модель: СоздайтеLinearRegressionобъект и вызовите.fit()метод для обучения.
  4. Сделайте предсказания: Вызовите.predict()метод на признаках тестового набораX_testчтобы сгенерировать предсказанные значенияy_pred。
  5. Вычислите метрики: Используйте Scikit-learnmetricsфункции в модуле, чтобы легко вычислить MAE, MSE, R². RMSE получается извлечением квадратного корня из MSE.
  6. Выведите результаты: Отформатируйте и выведите все метрики и параметры, изученные моделью.
  7. Визуализация:
    • Левый график: В идеале точки рассеяния должны плотно располагаться вокруг красной пунктирной линии (линии идеального предсказания).
    • Правый график: Гистограмма распределения ошибок должна быть примерно центрирована на 0 и приблизительно нормально распределена, что обычно является хорошим признаком.

Практические упражнения и резюме

Практическое упражнение

  1. Запустите код: Скопируйте приведённый выше код в вашу среду Python и запустите его. Понаблюдайте за выходными результатами и графиками.
  2. Измените данные: Попробуйте увеличитьnp.random.randn()масштаб шума в них, затем запустите снова. Посмотрите, как изменятся все метрики оценки. Чем отличаются графики?
  3. Измените модель: Попробуйте использоватьfrom sklearn.tree import DecisionTreeRegressorчтобы заменить модель линейной регрессии. Сравните метрики оценки двух моделей.
  4. Упражнение на вычисление: Вручную вычислите MAE, MSE, RMSE и R² для следующих трех примеров.
    • Истинные значения y: [10, 20, 30]
    • Предсказанные значения ŷ: [12, 18, 28]
Другие расширения