Найти в Дзене

Validation Data в Машинном обучении простыми словами

Оглавление
Фото: @shotbycerqueira
Фото: @shotbycerqueira

Валидационные данные (Validation Data, Holdout Data – "удержанные" данные) – это часть Датасета (Dataset), основа для проверки работоспособности Модели (Model) Машинного обучения (ML). Является одной из составляющих разделенного набора данных наряду с Тренировочными (Train Data) и Тестовыми (Test Data) данными.

-2

Пример. Мы создаем модель, предсказывающую потребление электроэнергии в городе. Если на тренировочных данных она, подобно человеческому мозгу, учится видеть скачки потребления электричества, то на тестовой Дата-сайентист (Data Scientist) проверяет качество обучения. Но зачем же нужна валидационная часть?

Когда модель пытается улучшиться, она подыскивает оптимальные значения Гиперпараметров (Hyperparameter). В этом случае существует вероятность Переобучения (Overfitting): модель слишком подробно учитывает особенности информации, на которой обучилась, и при переходе на другие реальные данные будет малоэффективна. Чтобы решить эту проблему, мы можем создать дополнительную валидационную часть датасета, и проверять качество модели на любом подходящем этапе разработки.

В основе всех методов проверки лежит разделение данных при обучении модели. Принцип прост: мы случайным образом разбиваем данные в пропорции 70 : 30, причем большая часть отводится тренировочным данным, а меньшая – тестовым. Но что если в одно подмножество тренировочных данных попали энергопотребители только определенного возраста или уровня дохода? Эта систематическая ошибка называется Смещением выборки (Sampling Bias). В результате неслучайной Выборки (Sampling) из Генеральной совокупности (Population) вероятность включения одних типов Наблюдений (Observation) в выборку ниже, чем у других, что приводит к искаженному восприятию реальности моделью.

Виды валидации

Выделяют следующие методы проверки:

  • Разделение данных (Train / Test Split)
  • k-блочная кросс-валидация (k-Fold Cross Validation)
  • Кросс-валидация по отдельным группам (Leave-One-Group-Out Cross-Validation)
  • Кросс-валидация Временных рядов (Time Series)
  • Тест знаковых рангов Уилкоксона (Wilcoxon Signed-Rank Test)
  • Тест Макнемара (McNemar’s Test)
  • Парный T-тест 5x2CV (5x2CV Paired T-Test)
  • Комбинированный F-тест 5x2CV (5x2CV Combined F-Test)

Посмотрим, как работает одна из этих техник.

k-блочная кросс-валидация

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

-3

Преимущество заключается в том, что все наблюдения используются как для обучения, так и для проверки, а это улучшает предсказательную способность модели. Обычно мы разбиваем датасет на 5 или 10 частей: это обеспечивает баланс между вычислительной сложностью и точностью.

k-блочная кросс-валидация и Scikit-learn

Продемонстрируем, как реализована такая валидация в библиотеке Scikit-learn. Для начала импортируем необходимые библиотеки:

-4

Создадим игрушечный размеченный датасет, где X – матрица 4 х 2, состоящая из Переменных-предикторов (Predictor Variable), а y – Целевая переменная (Target Variable) – классы, к которым принадлежит то или иное наблюдение:

-5

Применим k-блочную кросс-валидацию в две итерации:

-6

Выведем индексы тренировочных и тестовых данных для каждой из двух итераций:

-7

Поскольку датасет скромный, то вариантов разбиений немного: то в тестовую часть попадают 2-й и 3-й наблюдения, то 0-й и 1-й.

-8

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь .

Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал . И попробуйте наши курсы по Машинному обучению на Udemy .