После сбора данных и выборки там, где это необходимо, следующим шагом будет разделение данных на наборы для обучения, наборы для проверки и наборы для тестирования .
Когда случайное разделение — не лучший подход
Хотя случайное разбиение является лучшим подходом для многих проблем машинного обучения, оно не всегда является правильным решением. Например, рассмотрим наборы данных, в которых примеры естественным образом сгруппированы в похожие примеры.
Предположим, вы хотите, чтобы ваша модель классифицировала тему из текста новостной статьи. Почему случайное разделение может быть проблематичным?
Рисунок 1. Новости группируются.
Новости появляются группами: несколько статей на одну и ту же тему публикуются примерно в одно и то же время. Таким образом, если мы разделим данные случайным образом, тестовый набор и обучающий набор, скорее всего, будут содержать одни и те же истории. На самом деле это не сработает, потому что все истории появятся одновременно, поэтому такое разделение приведет к перекосу.
Рисунок 2. Случайное разделение разделит кластер на наборы, что приведет к перекосу.
Простым подходом к устранению этой проблемы было бы разделение наших данных в зависимости от того, когда история была опубликована, возможно, по дням публикации истории. Это приводит к тому, что истории одного и того же дня помещаются в один и тот же сплит.
Рисунок 3. Разделение по времени позволяет кластерам в основном оказаться в одном наборе.
При наличии десятков тысяч или более новостей процент может делиться по дням. Это нормально, однако; на самом деле эти истории были разделены на два дня цикла новостей. В качестве альтернативы вы можете отбрасывать данные на определенном расстоянии от вашего отсечки, чтобы убедиться, что у вас нет перекрытий. Например, вы можете тренироваться на историях за апрель, а затем использовать вторую неделю мая в качестве тестового набора с недельным промежутком, предотвращающим наложение.