Наборы для обучения и тестирования: разделение данных

В предыдущем модуле была представлена ​​идея разделения набора данных на два подмножества:

  • обучающий набор — подмножество для обучения модели.
  • тестовый набор — подмножество для тестирования обученной модели.

Вы можете представить себе разбиение одного набора данных следующим образом:

Горизонтальная полоса, разделенная на две части: 80 % из которых составляет обучающий набор, а 20 % — тестовый.

Рисунок 1. Разделение одного набора данных на обучающий и тестовый набор.

Убедитесь, что ваш набор тестов соответствует следующим двум условиям:

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

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

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

Рисунок 2. Проверка обученной модели на соответствие тестовым данным.

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

Например, рассмотрим модель, которая прогнозирует, является ли электронное письмо спамом, используя в качестве признаков строку темы, тело письма и адрес электронной почты отправителя. Мы распределяем данные на обучающие и тестовые наборы с разделением 80-20. После обучения модель достигает точности 99% как на обучающем, так и на тестовом наборе. Мы ожидали более низкую точность тестового набора, поэтому еще раз взглянем на данные и обнаруживаем, что многие примеры в тестовом наборе являются дубликатами примеров в обучающем наборе (мы пренебрегали очисткой повторяющихся записей для одного и того же спама). электронное письмо из нашей входной базы данных перед разделением данных). Мы случайно провели обучение на некоторых тестовых данных и в результате больше не можем точно измерить, насколько хорошо наша модель обобщается на новые данные.