В тази статия ще разберем необходимостта от разделяне на набора от данни.

Въведение

В тази статия ще се съсредоточим основно върху защотрябва да разделим набора от данни на три комплекта. Ако е така,какда го направим?. През всичките тези дни вие сляпо разделяте данните на два набора. Нека позная името на комплектите:

  1. Тренировъчен комплект
  2. Комплект за тестване

Бихте използвали данните от набора за обучение само за обучение или изграждане на вашия модел или алгоритъм за машинно обучение. По същия начин, наборът за тестване за оценка или оценка на ефективността на вашия модел.

Разделянето на данните на два набора не е погрешно. Но не мислите ли, че натоварвате твърде много комплекта за тестване. Тъй като във вашия случай ще използвате набора за тестване, за да:

  1. Оценете модела
  2. Фино настройване на параметрите (настройка) или избор на най-добрите параметри
  3. Оценете производителността на модела

Понякога претоварването на магарето няма да свърши работа. По-скоро инвестирайте в ново магаре и го натоварете малко. Това прави живота ви лесен. Така че следващата ви мисъл ще бъде какво е съотношението на разделяне. Е, отговорът се крие в следващия раздел.

Три комплекта

Да, прочетохте правилно „Три комплекта“. На практика анализаторите на данни работят с три различни набора, а именно:

  1. Тренировъчен комплект
  2. Комплект за тестване
  3. Набор за проверка

Нека обясня това с помощта на измислена диаграма (блок диаграма). Да приемем, че имате „Набор от данни за автомобил“, който включва главно характеристиките на автомобила като модел, марка, година, конски сили заедно с цената. Сега вашата работа е да предскажете цената на автомобила предвид характеристиките. Например, ако някой ви даде всички характеристики на автомобила, трябва да вземете тази информация, след това да направите малко магия (приложите алгоритми за машинно обучение) и след това да му кажете цената на тази конкретна кола.

Сега трябва да разделите набора от данни на три комплекта, както е показано по-горе. По-долу са някои от важните насоки:

  1. Първо трябва да разсместите пробите. Можете да използвате random_state = 42. Това просто ще разбърка пробите, ако стойността е 0, тогава пробите няма да бъдат разбъркани.
  2. Разделете наборите от данни на набори за обучение, валидиране и тестване. Обикновено комплектът за обучение трябва да бъде най-големият по отношение на размера на извадката. Наборът за валидиране и тестването също е известен като комплектите за задържане трябва да бъдат приблизително с същия размер. Като цяло комплектите за задържане трябва да са по-малки от размера на набора за обучение.

Защо се задава името holdout?

Това е така, защото алгоритъмът за обучение не може да използва извадките или примерите от тези две подмножества за изграждане или обучение на модела. Това означава, че за обучение на модела трябва да използвате само пробите от набора за обучение.

Каква е точната пропорция на разделяне?

Няма точна цифра за разделянето. Ако работите с големи набори от данни, имате над 500 000 извадки или повече, тогава във вашия случай използвате 95% от извадките за обучение, 2.5%за валидиране и последните 2.5% за тестване. Ако обаче нямате много проби, тогава можете да разделите набора от данни като 70+15+15.

Каква е основната причина зад трите комплекта?

Една от основните цели е, че когато изграждаме или обучаваме модела, няма смисъл да предвиждаме пробите, които моделът вече е видял. В този случай моделът се опитва да запомни всички проби и не прави грешки при прогнозирането на пробите. Така че независимо от алгоритъма за машинно обучение, който прилагате за прогнозиране на пробите за обучение, точността ще бъде по-висока (над 95%). Такива алгоритми ще бъдат безполезни на практика. Затова искаме модел, който е добър в прогнозирането на извадките, които моделът никога не е виждал преди. Това е, от което се нуждаем в реалния свят. Ето защо имаме нужда от три комплекта, а не от един.

Каква е целта на комплектите за съхранение?

Не забравяйте да следвате тези три основни правила по време на своето пътуване в науката за данните. От днес, моля, използвайте:

  1. Обучение, настроено за самообучение на модела.
  2. Проверката е зададена за избор на алгоритъм за обучение и избор или намиране на най-добрия хиперпараметър.
  3. Комплект за тестване за оценка или оценка на модела преди пускането му в производство.

Как да разделя набора от данни на три набора?

Е, в интернет има доста решения. Двете ми любими са:

Използване на библиотеката numpy за разделяне на данните в три комплекта:

Даденият по-долу код ще раздели данните на 60% от обучението, 20% от пробите за валидиране и останалите 20% в набора за тестване. Благодарение на метода на разделяне.

train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))]

Използване на метода на sklearn train test split за разделяне на данните в три комплекта:

Можем да използвамеsklearn.model_selection.train_test_split два пъти, за да разделим набора от данни на три набора. Първо за разделяне на обучение, тестване и след това отново разделяне на обучение на валидиране и обучение. Благодарение на sklearn библиотека. В този случай разделянето ще бъде 80+10+10.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=1)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.15, random_state=1) # 0.25 x 0.8 = 0.2

Това е всичко за днес, вие стигнахте до края на статията. Надявам се, че сте научили нещо ново днес. Използвах учебника, наречен Книгата за машинно обучение със сто страници от Андрий Бурков» като справка (Глава 5), за да напиша този урок. Можете да го разгледате. Ако имате някакви съмнения относно този урок, можете да използвате секцията за коментари по-долу. Ще се опитам да отговоря възможно най-скоро. Дотогава пазете се, довиждане.