Лекция 13. Оценка качества и валидация моделей

Цель лекции. Изучить способы объективной оценки моделей машинного обучения, назначение обучающей, валидационной и тестовой выборок, методы перекрёстной проверки, основные метрики классификации и регрессии. Научиться предотвращать утечку данных и корректно сравнивать модели.

Ключевые понятия: обобщающая способность, обучающая выборка, валидационная выборка, тестовая выборка, кросс-валидация, стратификация, утечка данных, Accuracy, Precision, Recall, F1, ROC-AUC, MAE, MSE, RMSE, R².

1. Назначение оценки качества модели

Качество модели машинного обучения определяется не только её результатами на обучающих примерах, но прежде всего способностью делать правильные прогнозы для новых данных. Это свойство называется обобщающей способностью (generalization).

Высокая точность на обучающей выборке не гарантирует успешную работу модели в реальных условиях. При переобучении алгоритм запоминает случайные особенности обучающих наблюдений, а при недообучении не улавливает важные закономерности.

Для объективного сравнения моделей необходимо заранее определить:

•             какую задачу решает модель — классификацию или регрессию;

•             какие ошибки наиболее существенны;

•             каким способом данные разделяются для обучения и проверки;

•             какие метрики будут использоваться для итоговой оценки.

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

2. Обучающая, валидационная и тестовая выборки

Для оценки обобщающей способности исходные данные обычно разделяют на три части.

Обучающая выборка (training set) используется для подбора параметров модели.

Валидационная выборка (validation set) помогает выбирать алгоритм, гиперпараметры и порог принятия решения.

Тестовая выборка (test set) предназначена для заключительной независимой оценки после завершения выбора модели.

Например, набор из 1000 наблюдений можно разделить в пропорции 70/15/15: 700 — для обучения, 150 — для валидации и 150 — для тестирования. Это лишь один из возможных вариантов; оптимальное разделение зависит от объёма и структуры данных.

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

При классификации часто применяется стратифицированное разделение, сохраняющее приблизительные доли классов в каждой выборке.

Если данные зависят от времени, случайное перемешивание может привести к использованию будущих наблюдений для прогнозирования прошлого. В таких задачах следует соблюдать временной порядок.

3. Перекрёстная проверка

Перекрёстная проверка (cross-validation) позволяет оценить устойчивость модели, используя несколько вариантов разбиения данных.

При k-блочной перекрёстной проверке (k-fold CV) обучающая часть данных разбивается на  непересекающихся блоков. На каждом шаге один блок служит валидационным, остальные используются для обучения.

Для каждого шага вычисляется метрика . Средняя оценка равна:

Разброс оценок можно описать стандартным отклонением:

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

При классификации удобно использовать StratifiedKFold, сохраняющий соотношение классов в блоках. Для временных рядов применяют TimeSeriesSplit, а при наличии нескольких наблюдений одного пользователя или пациента — групповую проверку, исключающую пересечение групп между обучением и валидацией.

Перекрёстную проверку проводят на обучающей части данных. Тестовую выборку сохраняют для финальной оценки.

4. Метрики качества классификации

Основой многих метрик классификации является матрица ошибок (confusion matrix).

Фактический класс

Прогноз 0

Прогноз 1

0

TN — верно отрицательные

FP — ложноположительные

1

FN — ложноотрицательные

TP — верно положительные

Accuracy — доля правильных ответов:

При сильном дисбалансе классов Accuracy может вводить в заблуждение.

Precision — доля верно обнаруженных положительных объектов среди всех предсказанных положительных:

Recall — доля обнаруженных положительных объектов среди всех фактически положительных:

F1-мера — гармоническое среднее Precision и Recall:

Здесь  обозначает Precision, а  — Recall. Формулы применяются при ненулевых знаменателях; в программных библиотеках предусмотрены правила обработки неопределённых случаев.

ROC-AUC и PR-AUC

ROC-кривая показывает зависимость доли истинно положительных прогнозов (TPR) от доли ложноположительных (FPR) при разных порогах:

ROC-AUC — площадь под ROC-кривой. Значение 1 соответствует идеальному ранжированию положительных и отрицательных объектов, а около 0,5 — ранжированию на уровне случайного для сбалансированной пары классов.

PR-кривая показывает зависимость Precision от Recall при изменении порога. При редком положительном классе PR-AUC (или Average Precision — близкая, но не тождественная сводная мера) часто оказывается информативнее ROC-AUC.

5. Метрики качества регрессии

В регрессии оценивают различие между истинными значениями  и прогнозами .

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

MAE выражается в тех же единицах, что и целевая переменная, и обычно менее чувствительна к крупным ошибкам, чем квадратичные метрики.

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

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

RMSE также выражается в единицах целевой переменной, но сильнее штрафует крупные отклонения.

Коэффициент детерминации (R²):

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

Метрика

Что измеряет

Особенность

MAE

Среднюю абсолютную ошибку

Удобна для интерпретации

MSE

Среднюю квадратичную ошибку

Сильно штрафует большие ошибки

RMSE

Корень из MSE

Измеряется в исходных единицах

R²

Качество относительно прогноза средним

Может быть отрицательной

6. Практическая реализация на Python

Рассмотрим классификацию с использованием перекрёстной проверки. Для предотвращения утечки данных стандартизация включена в Pipeline, поэтому её параметры вычисляются отдельно внутри каждого обучающего блока.

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import (
    train_test_split, StratifiedKFold, cross_val_score
)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import (
    accuracy_score, precision_score, recall_score,
    f1_score, roc_auc_score, confusion_matrix
)

X, y = load_breast_cancer(return_X_y=True)

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

model = make_pipeline(
    StandardScaler(),
    LogisticRegression(max_iter=1000)
)

cv = StratifiedKFold(
    n_splits=5, shuffle=True, random_state=42
)

scores = cross_val_score(
    model, X_train, y_train, cv=cv, scoring="f1"
)

print("Средняя F1 по CV:", scores.mean())
print("Стандартное отклонение:", scores.std())

model.fit(X_train, y_train)

pred = model.predict(X_test)
proba = model.predict_proba(X_test)[:, 1]

print("Accuracy:", accuracy_score(y_test, pred))
print("Precision:", precision_score(y_test, pred))
print("Recall:", recall_score(y_test, pred))
print("F1:", f1_score(y_test, pred))
print("ROC-AUC:", roc_auc_score(y_test, proba))
print("Матрица ошибок:")
print(confusion_matrix(y_test, pred))

Здесь cross_val_score() вычисляет F1 на пяти валидационных блоках обучающей выборки. После этого модель обучается на всей обучающей части и оценивается на независимой тестовой выборке.

Для регрессии используются другие метрики. Пример их вычисления:

from sklearn.metrics import (
    mean_absolute_error,
    mean_squared_error,
    r2_score
)
import numpy as np

y_true = [3.0, 5.0, 2.5, 7.0]
y_pred = [2.8, 5.4, 2.7, 6.5]

mae = mean_absolute_error(y_true, y_pred)
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_true, y_pred)

print("MAE:", mae)
print("MSE:", mse)
print("RMSE:", rmse)
print("R²:", r2)

Типичные ошибки при оценке

Особенно важно избегать утечки данных (data leakage) — ситуации, когда в процесс обучения попадает информация, которая не должна быть доступна на момент прогноза.

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

Чтобы уменьшить риск, преобразования признаков следует включать в Pipeline, а стратегию разделения выбирать с учётом времени, групп и особенностей задачи.

7. Практическое значение и выводы

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

Обучающая, валидационная и тестовая выборки выполняют разные функции. Перекрёстная проверка помогает получить более устойчивую оценку при выборе модели, а независимый тест — проверить итоговый результат.

Для классификации используются Accuracy, Precision, Recall, F1, ROC-AUC и PR-метрики; для регрессии — MAE, MSE, RMSE и R². Выбор метрики определяется задачей и стоимостью ошибок.

Главный результат лекции: умение организовать корректную валидацию, выбрать подходящие метрики и избежать утечки данных при оценке моделей машинного обучения.