Цель разделения данных на разные категории - избежать переобучения

Это короткая 4-минутная статья, чтобы познакомить вас, ребята, с техникой разделения данных и ее важностью в практических проектах.

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

  1. Учебный набор (должен быть самым большим набором)
  2. Набор для перекрестной проверки, набор для разработки или набор для разработчиков
  3. Набор для тестирования

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

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

# Тренировочный набор:

Выборка данных, используемая для соответствия модели, то есть фактическое подмножество набора данных, которое мы используем для обучения модели (оценка весов и смещений в случае нейронной сети). Модель наблюдает и учится на этих данных и оптимизирует их параметры.

# Набор перекрестной проверки:

Мы выбираем подходящую модель или степень полинома (если используется только регрессионная модель), минимизируя ошибку на множестве перекрестной проверки.

# Тестовый набор:

Выборка данных, используемая для обеспечения объективной оценки соответствия окончательной модели обучающему набору данных. Он используется только после того, как модель полностью обучена с использованием наборов для обучения и проверки. Таким образом, набор тестов используется для репликации ситуации, которая может возникнуть после развертывания модели для использования в реальном времени.

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

# Как определить коэффициент разделения набора данных?

Обычно ответ кроется в самом наборе данных. Пропорции определяются в соответствии с размером и типом (для данных временных рядов методы разделения немного отличаются) имеющихся у нас данных.

Если размер нашего набора данных составляет от 100 до 10 000 000, мы разделяем его в соотношении 60:20:20. То есть 60% данных пойдут в обучающий набор, 20% - в набор для разработки, а остальные - в тестовый набор.

Если размер набора данных превышает 1 миллион, мы можем разделить его примерно так: 98: 1: 1 или 99: 0,5: 0,5

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

Используемые нами модели - это не что иное, как оценщики, изучающие статистические тенденции в данных. Следовательно, важно, чтобы данные, которые используются для обучения и которые используются для проверки или тестирования модели, следовали как можно более схожему статистическому распределению. Один из способов добиться этого как можно точнее - выбрать подмножества - здесь обучающий набор, набор разработчиков и / или набор тестов - случайным образом. Например, предположим, что вы работаете над проектом по обнаружению лиц, и изображения для обучения лиц взяты из Интернета, а изображения для разработки / тестирования взяты с мобильного телефона пользователя, тогда будет несоответствие между свойствами набора поездов и dev / test. установленный.

Один из способов разделить набор данных на train, test, cv с коэффициентами 0,6, 0,2, 0,2 - это дважды использовать метод train_test_split:

from sklearn.model_selection import train_test_split 
x, x_test, y, y_test = train_test_split (x_train,labels, test_size=0.2, train_size=0.8 )
x_train, x_cv, y_train, y_cv = train_test_split(x,y,test_size = 0.25, train_size =0.75)

Вот и все для этой статьи, ребята - если вы дошли до этого места, пожалуйста, прокомментируйте ниже свой опыт во время чтения и оставьте отзыв, а также добавьте меня в LinkedIn.

Аналогичная статья - Глубокое обучение стало проще: Часть 3: Функции активации, параметры, гиперпараметры и инициализация веса