MLU-Explain, часть 1: обучающая, валидационная и тестовая выборки
Перевод визуального эссе Amazon MLU-Explain «Train, Test, and Validation Sets»: зачем делить данные на три независимые части, что делает каждая и почему на тестовую выборку нельзя смотреть до выбора модели. В начале — карта всех статей MLU-Explain.
MLU-Explain — серия визуальных эссе Machine Learning University (MLU), учебного подразделения Amazon. Каждая статья объясняет одну идею классического машинного обучения через интерактивные картинки: точки можно перетаскивать, ползунки — двигать. Тексты распространяются по лицензии CC BY-SA 4.0, код — по MIT-0, поэтому мы переводим статьи полностью. Интерактив переводом не перенести: где в оригинале график или игра, мы описываем, что на нём видно, и даём ссылку — откройте оригинал рядом и двигайте точки сами.
Карта MLU-Explain
Заголовок раздела «Карта MLU-Explain»Статьи из README репозитория aws-samples/aws-mlu-explain (репозиторий в архиве, сайт mlu-explain.github.io работает):
| Статья | О чём | Урок курса | Перевод |
|---|---|---|---|
| Train, Test, and Validation Sets | Зачем три выборки | 2.1, 2.4 | эта страница |
| The Bias Variance Tradeoff | Недообучение, переобучение, разложение ошибки | 2.1 | часть 2 |
| Logistic Regression | Сигмоида, log-loss, градиентный спуск, шансы | 2.2 | — |
| Linear Regression | Линейная регрессия наглядно | 2.2 | — |
| ROC & AUC | ROC-кривая и площадь под ней | 2.2 | — |
| Precision & Recall | Точность и полнота | 2.2 | — |
| Decision Trees | Деревья решений | 2.3 | — |
| Random Forest | Случайный лес | 2.3 | — |
| Double Descent, Double Descent 2 | Двойной спуск: что происходит за пределами U-образной кривой | 2.1, 5.1 | — |
Почему данные нужно делить
Заголовок раздела «Почему данные нужно делить»Авторы: Джаред Уилбер и Брент Вернесс.
В большинстве задач обучения с учителем хорошей практикой считается делить данные на три независимых набора: обучающуюобучающая выборка (train)EN training set выборку (training set), тестовуютестовая выборка (test)EN test setСмотрим на неё один раз — в самом конце, чтобы честно оценить качество. (testing set) и валидационнуювалидационная выборка (val, dev)EN validation setНужна для выбора гиперпараметров и ранней остановки. Тест при этом не трогаем. (validation set).
Чтобы понять почему, представим, что у нас есть набор данных о домашних питомцах двух видов: кошках и собаках.
Для каждого питомца в наборе у нас есть два признака: вес и пушистость.
Наша цель — подобрать и оценить подходящие модели, которые по этим признакам определяют, кошка перед нами или собака. Для этого мы и воспользуемся разбиением на обучающую, валидационную и тестовую выборки!
(В оригинале на этом месте — поле с иконками кошек и собак. По исходным данным статьи в нём 62 питомца.)
Обучающая, валидационная и тестовая выборки
Заголовок раздела «Обучающая, валидационная и тестовая выборки»Первый шаг в нашей задаче классификации — случайно разбить питомцев на три независимых набора.
Сноска автора: случайное распределение по выборкам важно: так каждая независимая выборка будет как можно более представительной и свободной от искажающих факторов.
- Обучающая выборка — данные, которые мы даём модели, чтобы она выучила возможные скрытые закономерности и связи.
- Валидационная выборка — данные, по которым мы понимаем, как модель работает при разных типах моделей и разных значениях параметров.
- Тестовая выборка — данные, по которым мы оцениваем, какой будет точность модели «в дикой природе», то есть на реальных новых данных.
flowchart LR D["Все данные<br/>(перемешаны случайно)"] --> T["Обучающая<br/>≈60–80%"] D --> V["Валидационная"] D --> S["Тестовая"] T -->|"обучаем модели"| M["Кандидаты"] V -->|"сравниваем и выбираем"| M M -->|"один раз,<br/>в самом конце"| S
Обучающая выборка
Заголовок раздела «Обучающая выборка»Обучающая выборка — это набор данных, на котором мы обучаем модель. Именно на нём модель выучивает все возможные скрытые закономерности и связи, которые позже позволят ей делать предсказания.
Поскольку модель учится на обучающей выборке, очень важно, чтобы та была как можно более представительной для той совокупности, которую мы пытаемся моделировать.
Сноска автора: о важности разнообразных и представительных обучающих данных для качества машинного обучения — статья.
Кроме того, нужно позаботиться, чтобы обучающая выборка была как можно менее смещённой: любое смещение на этом этапе перейдёт дальше — в предсказания модели при её применении (инференсе).
Чтобы у модели было как можно больше информации для обучения, в обучающую выборку обычно отдают большую часть (например, 60–80%) исходных данных.
Строим модель
Заголовок раздела «Строим модель»Наша цель — определить, кошка перед нами или собака. Это задача бинарной классификации, поэтому возьмём простую, но эффективную модель, подходящую для такой задачи, — логистическую регрессию.
Для выбранного набора признаков (никаких, только вес, только пушистость или вес и пушистость вместе) классификатор на основе логистической регрессии строит границу решений (decision boundary), которая делит питомцев на кошек и собак. Каждый питомец классифицируется по тому, с какой стороны границы он оказался: с одной стороны — собаки, с другой — кошки.
Выберите набор признаков, чтобы увидеть границу решений соответствующей модели логистической регрессии.
Перетащите любое животное из обучающей выборки на новое место и посмотрите, как сдвинется граница!
(Интерактив в оригинале: переключатель признаков «None / Weight / Fluffiness / Both» и поле, где граница решений перерисовывается, когда вы двигаете животных обучающей выборки.)
Валидационная выборка
Заголовок раздела «Валидационная выборка»Для логистической регрессии мы можем построить четыре разных классификатора — по одному на каждый выбор признаков: без признаков (то есть просто голосование большинством), только вес, только пушистость или и вес, и пушистость.
Как решить, какую модель выбрать?
Можно было бы сравнить точность каждой модели на обучающей выборке, но результат получится смещённым: если использовать одни и те же данные и для обучения, и для настройки, модель переобучится и плохо обобщится за пределы этого набора данных.
Вот здесь и нужна валидационная выборка: она служит независимым, несмещённым набором данных, на котором мы сравниваем качество разных алгоритмов и значений гиперпараметров, обученных на обучающей выборке.
В нашем случае мы рассматриваем только один алгоритм (логистическую регрессию), но число используемых признаков можно считать гиперпараметромгиперпараметрEN hyperparameterНастройка, которую не учат градиентом, а выбирают по валидации — степень полинома, λ, learning rate, число слоёв., который мы хотим настроить.
Сноска автора: для простоты изложения мы не рассматриваем другие настройки логистической регрессии — например, конкретный метод оптимизации (solver) или штрафы регуляризации.
Выберите признак, чтобы увидеть качество модели на валидационной выборке в таблице ниже.
Перетащите признак через линию и посмотрите, как изменится качество!
(Интерактив в оригинале: таблица со столбцами «выборка», «признак», «кошек угадано», «кошек ошибочно», «собак угадано», «собак ошибочно», «точность» — строки добавляются по мере того, как вы перебираете наборы признаков.)
Тестовая выборка
Заголовок раздела «Тестовая выборка»Итак, если вы не слишком увлеклись перетаскиванием питомцев, лучшая модель (по валидационной выборке) — та, что учитывает оба признака.
Когда с помощью валидационной выборки мы определили алгоритм и параметры, которые хотим использовать в работе, тестовая выборка нужна, чтобы оценить истинное качество модели в реальных условиях.
Повторим ещё раз: тестовая выборка — последний шаг в оценке качества модели на данных, которых она не видела.
Ни при каких обстоятельствах нельзя смотреть на качество на тестовой выборке до того, как выбрана модель.
Выбор модели и настройка параметров — исключительно задача валидационной выборки.
Подглядывание в результаты на тестовой выборке заранее — это форма переобучения, и оно, скорее всего, приведёт к ненадёжным ожиданиям от модели в реальной работе. Тестовую выборку нужно проверять только как последнюю форму оценки — после того как лучшая модель определена с помощью валидационной выборки.
Возможно, вы заметили, что на тестовой выборке модель «только пушистость» показала точность выше, чем модель «оба признака», хотя валидационная выборка выбрала вторую как лучшую. Такое расхождение между качеством на валидации и на тесте вполне может случиться, и в этом нет ничего плохого. Помните: качество на тесте — не число, которое нужно оптимизировать, а метрика, по которой мы оцениваем будущее качество. Она позволяет нам уверенно оценить, что наша модель отличает кошек от собак с точностью 87,5%.
Главное
Заголовок раздела «Главное»В машинном обучении хорошей практикой считается делить данные на три группы:
- Обучающая выборка — для обучения модели.
- Валидационная выборка — для несмещённой оценки модели (при выборе).
- Тестовая выборка — для окончательной оценки модели.
Такая схема помогает получить реалистичное представление о качестве модели и (надеемся) построить модель, которая хорошо обобщается на новые данные.
🐾
Спасибо, что дочитали! Чтобы узнать о машинном обучении больше, загляните на наш сайт, посмотрите наши видео или почитайте учебник D2L.
Словарик
Заголовок раздела «Словарик»| EN | RU |
|---|---|
| supervised learning | обучение с учителем |
| training / validation / test set | обучающая / валидационная / тестовая выборка |
| split | разбиение |
| feature | признак |
| representative | представительный (репрезентативный) |
| bias (в данных) | смещение |
| binary classification | бинарная классификация |
| decision boundary | граница решений |
| majority vote | голосование большинством |
| hyperparameter tuning | настройка гиперпараметров |
| overfitting | переобучение |
| generalize | обобщаться |