Валидационные данные (Validation Data, Holdout Data – "удержанные" данные) – это часть Датасета (Dataset), основа для проверки работоспособности Модели (Model) Машинного обучения (ML). Является одной из составляющих разделенного набора данных наряду с Тренировочными (Train Data) и Тестовыми (Test Data) данными.
Пример. Мы создаем модель, предсказывающую потребление электроэнергии в городе. Если на тренировочных данных она, подобно человеческому мозгу, учится видеть скачки потребления электричества, то на тестовой Дата-сайентист (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-блочная кросс-валидация
Чтобы свести к минимуму систематическую ошибку выборки, мы изменим формат разделения данных Вместо того, чтобы делать одно разбиение на тренировочную и тестовую части, мы сделаем их много и проверим модель на каждой комбинации:
Преимущество заключается в том, что все наблюдения используются как для обучения, так и для проверки, а это улучшает предсказательную способность модели. Обычно мы разбиваем датасет на 5 или 10 частей: это обеспечивает баланс между вычислительной сложностью и точностью.
k-блочная кросс-валидация и Scikit-learn
Продемонстрируем, как реализована такая валидация в библиотеке Scikit-learn. Для начала импортируем необходимые библиотеки:
Создадим игрушечный размеченный датасет, где X – матрица 4 х 2, состоящая из Переменных-предикторов (Predictor Variable), а y – Целевая переменная (Target Variable) – классы, к которым принадлежит то или иное наблюдение:
Применим k-блочную кросс-валидацию в две итерации:
Выведем индексы тренировочных и тестовых данных для каждой из двух итераций:
Поскольку датасет скромный, то вариантов разбиений немного: то в тестовую часть попадают 2-й и 3-й наблюдения, то 0-й и 1-й.
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь .
Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал . И попробуйте наши курсы по Машинному обучению на Udemy .