Основы обучения моделей: метрики, переобучение и валидация
Связь с предыдущими темами
В первой статье мы разобрали, что модели (в том числе нейросети)
учатся по данным, настраивая параметры так, чтобы уменьшать ошибку. Во второй статье увидели, что качество данных и корректное разделение на выборки критично для результата.
Теперь соберём это в практическую основу обучения моделей:
как измерять качество (метрики)
как понять, что модель переобучилась или недообучилась
как правильно проверять качество через валидацию и не обмануть себя утечкой данныхЗачем нужны метрики
Во время обучения модель оптимизирует некоторую
функцию потерь (то, что минимизирует алгоритм). Но бизнесу и пользователям обычно важны метрики, которые отвечают на вопрос:
насколько хорошо модель решает задачу.
Примеры различий:
модель может снижать потери, но при этом плохо ловить редкие события (например, мошенничество)
высокая общая точность может скрывать провал по важному классу (например, пропуск опасных медицинских случаев)Идея простая: сначала выбираем метрику под цель, затем под неё строим обучение, разметку и проверку.
Метрики для классификации
Классификация отвечает на вопрос:
к какому классу относится объект (например, спам/не спам).
Матрица ошибок
Для бинарной классификации удобно разложить ответы по четырём типам:
TP (true positive): модель сказала положительный класс, и это правда
FP (false positive): модель сказала положительный класс, но это ошибка
TN (true negative): модель сказала отрицательный класс, и это правда
FN (false negative): модель сказала отрицательный класс, но это ошибка!Матрица ошибок помогает понять, какие именно ошибки делает классификатор
Эта таблица нужна не ради формальностей: она показывает цену ошибок. Например, в антиспаме FP означает «хорошее письмо попало в спам», а FN означает «спам прошёл во входящие».
Accuracy
Accuracy (точность по доле верных ответов) показывает, какая часть предсказаний верна.
Обычно её считают так:
Где:
и это количество верных ответов
и это количество ошибок
знаменатель это общее число примеровКогда accuracy подходит:
классы более-менее сбалансированы
цена FP и FN примерно одинаковаКогда accuracy опасна:
один класс встречается очень редко (дисбаланс классов)Пример дисбаланса: если 99% писем не спам, модель, которая всегда говорит «не спам», даст accuracy 99%, но будет бесполезной.
Precision и recall
Если положительный класс важнее (например, «мошенничество», «болезнь», «дефект»), часто смотрят две метрики:
Precision: среди тех, кого модель назвала положительным классом, сколько действительно положительные
Recall: среди всех действительно положительных, сколько модель нашлаИнтуитивно:
precision отвечает за качество срабатываний (меньше ложных тревог)
recall отвечает за полноту поиска (меньше пропусков)F1-score
F1-score помогает сбалансировать precision и recall одним числом. Его часто используют, когда важны оба типа ошибок.
Формула:
Где:
это значение precision
это значение recall
множитель означает, что это гармоническое среднее, которое сильно штрафует перекос (например, высокий precision при низком recall)ROC AUC и PR AUC
Если модель выдаёт не только класс, но и
оценку уверенности (скор), можно менять порог решения и смотреть качество по кривым.
ROC AUC часто используют как общую характеристику разделимости классов
PR AUC обычно информативнее при сильном дисбалансе, потому что фокусируется на precision и recallЕсли вы только начинаете, практическое правило такое:
при дисбалансе и важности редкого класса чаще выбирают precision, recall, F1, PR AUC
при более равных классах и равной цене ошибок можно начинать с accuracy и ROC AUCПолезные справки:
Документация scikit-learn по метрикам классификации
Документация scikit-learn по матрице ошибокМетрики для регрессии
Регрессия предсказывает число (например, цену, время доставки, спрос).
MAE
MAE (mean absolute error) это средняя абсолютная ошибка: насколько в среднем модель ошибается по модулю.
Когда удобно:
нужно понятное в единицах измерения число (например, «в среднем ошибаемся на 1200 рублей»)
хочется, чтобы выбросы не доминировали слишком сильноMSE и RMSE
MSE (mean squared error) возводит ошибки в квадрат, поэтому сильнее штрафует большие промахи.
RMSE это корень из MSE, чтобы вернуться к единицам измерения исходной величины.
Когда удобно:
большие ошибки особенно нежелательны, и их нужно штрафовать сильнее
показывает, какую долю вариации целевой переменной объясняет модель по сравнению с простой базовой стратегией.
Важно:
удобно для сравнения, но его стоит использовать вместе с MAE или RMSE, чтобы понимать абсолютный масштаб ошибокПолезная справка:
Документация scikit-learn по метрикам регрессииОбучающая, валидационная и тестовая выборки
Чтобы честно оценивать качество, данные делят на части:
train: на ней модель учится
validation: на ней выбирают настройки (гиперпараметры) и сравнивают варианты
test: итоговая независимая оценка, к которой обращаются в концеКлючевая идея:
любые решения по выбору модели и настроек нельзя принимать, глядя на test, иначе оценка перестаёт быть независимойЭто продолжение темы из статьи про данные: разделение выборок и отсутствие утечек напрямую влияет на честность метрик.
Переобучение и недообучение
Недообучение
Недообучение (underfitting) означает, что модель слишком простая или обучена недостаточно и плохо работает даже на train.
Типичные причины:
слабая модель для задачи
слишком сильные ограничения (например, чрезмерная регуляризация)
недостаточно информативные признакиПризнак:
качество плохое и на train, и на validationПереобучение
Переобучение (overfitting) означает, что модель подстроилась под особенности train (включая шум), но не переносит знания на новые данные.
Типичные причины:
слишком сложная модель для объёма данных
мало данных или они нерепрезентативны
много шума в разметке
утечка данных, создающая иллюзию качестваПризнак:
качество очень хорошее на train, но заметно хуже на validation!Иллюстрация того, как переобучение проявляется в динамике ошибки
Полезный материал для закрепления идеи:
Раздел про переобучение в Google Machine Learning Crash CourseКак бороться с переобучением
Ниже перечислены типовые приёмы. Они применимы и к классическим ML-моделям, и к нейросетям (с нюансами).
Улучшать данные
Самый сильный рычаг:
собрать больше данных
улучшить репрезентативность
исправить шум и ошибки разметки
добавить примеры редких, но важных случаевУпростить модель
Возможные варианты:
выбрать более простую модель
уменьшить число признаков или слоёв
ограничить сложность (например, глубину дерева)Регуляризация
Регуляризация это ограничения, которые мешают модели запоминать частные детали и стимулируют более устойчивые решения.
Примеры:
L2-регуляризация в линейных моделях
weight decay в нейросетях
dropout в нейросетяхПрактический смысл: модель «платит штраф» за чрезмерно сложные параметры.
Ранняя остановка
Ранняя остановка (early stopping) это прекращение обучения, когда качество на validation перестаёт улучшаться.
Почему это работает:
модель успевает выучить общие закономерности
но не успевает «дотачивать» себя под шум trainАугментации
Для изображений и иногда текста используют
аугментации как способ увеличить разнообразие примеров и снизить переобучение.
Примеры для изображений:
случайные повороты
обрезки
изменения яркостиВажно: аугментации должны сохранять смысл метки.
Валидация: как проверять качество правильно
Holdout-валидация
Самый простой подход: один раз разделить данные на train и validation.
Плюсы:
быстро и простоМинусы:
оценка зависит от конкретного разбиенияКросс-валидация
Кросс-валидация (k-fold) делит данные на частей, обучает модель раз, каждый раз оставляя одну часть для проверки, и усредняет результат.
Зачем:
получить более стабильную оценку качества на небольших данных
лучше сравнивать модели и настройкиСправка:
Документация scikit-learn по кросс-валидацииСтратификация
Если классы несбалансированы, важно делить данные так, чтобы доли классов сохранялись.
Это называется стратифицированное разбиение.
Временные ряды
Если данные идут во времени (прогноз спроса, нагрузки), нельзя случайно перемешивать прошлое и будущее.
Базовое правило:
обучаемся на прошлом, проверяем на будущемИначе появляется скрытая утечка: модель «видит будущее» через статистику разбиения.
Утечка данных как главная причина ложных метрик
Утечка данных (data leakage) это попадание в обучение информации, которой не будет в момент реального предсказания.
Частые источники утечки:
Признаки, которые формируются после события
Предобработка, сделанная на всём датасете до разделения (например, нормализация по всем данным, включая test)
Дубликаты или почти дубликаты объектов, попавшие и в train, и в testПрактический чек:
для каждого признака задайте вопрос: будет ли он известен в момент предсказания?Итог
Метрики, переобучение и валидация это три опоры обучения моделей:
метрики переводят качество в измеримые числа, связанные с целью
анализ переобучения показывает, обобщает ли модель знания или запоминает train
корректная валидация защищает от самообмана и помогает честно выбирать решенияВ следующих материалах курса эти идеи станут базой для практики: сравнения моделей, подбора гиперпараметров и построения устойчивых ML-конвейеров.