Чому б не тренувати кінцеву модель на всіх даних після проведення даних тестування на основі базової настройки гіперпараметрії та даних перевірки вибору моделі?


9

Під усіма даними я маю на увазі поїзд + тест + перевірка

Після того, як я зафіксував свій гіперпараметр за допомогою даних валідації та обрав модель за допомогою тестових даних, чи не краще буде модель тренуватися за всіма даними, щоб параметри були краще навчені, а не модель була навчена тільки дані поїздів


2
НІКОЛИ не слід фіксувати свої гіперпараметри за допомогою даних тесту. Ви просто зіпсували весь свій експеримент, видаливши сліпу контрольну групу (тестовий набір).
JahKnows

@JahKnows Після того, як я закінчив налаштування гіпер-параметрів для моделі, я не розумію шкоди, за винятком того, що я не буду знати, наскільки це добре узагальнюється для іншого набору даних. Як я зіпсував свій експеримент? я щось пропускаю?
Апоорва Абхішех

Відповіді:


8

Питання стоїть під неправильним припущенням. Багато людей роблять те, що ти кажеш, що "не можуть".

Насправді реалізація пошуку в сітці у широко розгорнутому пакеті sklearn робить саме це. Якщо тільки refit=Falseвона не перекваліфікує остаточну модель, використовуючи всі дані.

Я думаю, що для деяких гіперпараметрів це може бути не дуже бажаним, оскільки вони відносно обсягу даних. Наприклад, розглянемо min_samples_leafтактику попередньої обрізки дерева рішень . Якщо у вас є більше даних, попередня обрізка може не виконуватись так, як вам потрібно.

Але знову ж таки, більшість людей насправді перекваліфікуються, використовуючи всі дані після перехресної перевірки, щоб вони виявилися найкращою можливою моделлю.

Додаток: @NeilSlater вказує нижче, що деякі люди проводять перерви на резюме. Іншими словами, вони проходять тест поїздів і потім виконують вибір моделі на тренуванні. За його словами, вони перекваліфікуються, використовуючи оригінальний тренувальний набір розділений, але не тестовий набір. Потім тестовий набір використовується для оцінки остаточної оцінки моделі. Особисто я бачу три недоліки в цьому: (а) це не вирішує проблему, про яку я згадав, коли деякі гіперпараметри залежать від обсягу навчання, оскільки ви все одно перепідготовки, (б) під час тестування багатьох моделей я віддаю перевагу більш досконалим. такі методи, як вкладене перехресне підтвердження, щоб жодні дані не втрачали трату, і (c) затримка - це жахливий спосіб зробити висновок про те, як модель буде узагальнена, коли у вас мало даних.


Особливість стосується повторного використання перехресної перевірки, все-таки не доцільно повторно використовувати дані тестування, оскільки у вас є лише припущення щодо перехресної перевірки і ніяких показників продуктивності. Будь-який параметр помилки чи проблеми (наприклад, наведений приклад) може інакше зробити модель непомітно гіршою.
Ніл Слейтер

@NeilSlater Я не розумію, що ви тут сказали: "Особливість полягає у повторному використанні перехресної перевірки"
Рікардо Крус

"особливість" -> refitопція функції GridSearchCV. Він не підходить для включення витриманих даних тесту (він навіть не отримує цих даних).
Ніл Слейтер

@NeilSlater, ти можеш легко перевірити код на собі, якщо ти мені не повіриш (тут) . Якщо refit = True, то "підходить найкращий оцінювач, використовуючи весь набір даних".
Рікардо Крус

1
@NeilSlater, це не мій досвід, але я додав ваш досвід до свого коментаря, щоб інші могли отримати від нього користь. Дякую.
Рікардо Крус

1

Так, ти можеш.

Оскільки дані тесту, які повинні надходити від подібного розподілу для підготовки даних, ви не зламаєте свою модель. Якщо ви тренувались зразково, ви не помітите суттєвих змін (крім кращої метрики точності на даних попереднього тесту / перевірки)

Але рідко буває так, що дані тесту надходять із точно такого ж розподілу, як і дані поїздів, тому в реальному сценарії застосування ви можете отримати кращу узагальненість вашої моделі.


1
Проблема з включенням тестових даних відповідно до цієї пропозиції полягає в тому, що у вас немає виміру того, наскільки добре узагальнюється модель. Так, ви можете розраховувати, що він узагальнить краще. Однак ви не знаєте , тому що ви зняли свою здатність вимірювати це. Я пропоную додати цей застереження та пояснити, чому іноді це все-таки нормально (наприклад, отримуючи нові дані, ви можете трактувати це як новий тестовий набір і створювати нове вимірювання з часом, сподіваючись, скориставшись кращою моделлю - хоча це ризик)
Ніл Слейтер

@NeilSlater: Я розумію, що я усунув свою здатність вимірювати, наскільки добре це узагальнить для іншого набору даних. Але якщо у мене є як тест, так і затримка, навіть після налаштування гіперпараметрів я можу знову тренувати свою модель на поїзді + тесті, я все одно залишаюсь з триманням, щоб перевірити, як узагальнюється моя модель. Я знаю, це інше, ніж те, що я запитав. Але я просто хочу знати твій погляд.
Апоорва Абхішех

1
@ApoorvaAbhishekh: Якщо у вас був ще один набір даних, то так, ви можете використовувати це як новий тестовий набір проти нової моделі, що навчається на new_train = {старий поїзд, старий рейтинг, старий тест}. Тоді ви отримаєте міру узагальнення. Хоча вам слід бути обережними, щоб не використовувати їх надмірно - якщо виявиться, що є проблема з новим комбінованим набором (наприклад, дострокове припинення потрібно змінити через більше даних), ви також не можете використовувати його як новий набір резюме. . . за винятком випадків, коли у вас є ще один запас у резерві. . .
Ніл Слейтер

@NeilSlater Теоретично вам потрібен новий набір даних, щоб знати продуктивність. На практиці ви можете бути впевнені, що ваша модель працює добре, оскільки ви довго працювали з нею і знаєте, чого чекати. Але зазвичай у вас є й інші дані, щоб перевірити працездатність моделі, наприклад, у комп’ютерному зорі - немечені дані. Це не правильно, але це теж працює. Звичайно, це крайній випадок, але я хочу сказати, що це може спрацювати. Сам у мене завжди є тестовий набір, який я не змішую з тренуванням.
Ілья Женін

1

Відповідь на це питання залежить від алгоритму (технології) навчання, який ви використовуєте. Наприклад, я бачив деякі підходи в класифікації ансамблів, де набори для навчання та перевірки (але не тестування) поєднуються в кінці. Дуже важливо знати, що навіть валідація використовується в основному для визначення гіперпараметрів, деякі з цих параметрів можуть бути функцією використовуваних даних для тренувань. Наприклад, у DNN-валідації було відомо, коли зупинитись, оскільки переозброєння може статися в результаті збереження настройки параметрів (ваг) мережі, нам потрібен спосіб знати, коли зупинитись. Без валідації ви будете сліпо ходити в тренувальному процесі. З іншого боку, якщо ви використовуєте точно таку ж кількість ітерацій, як зазначено раніше, є велика проблема, яку ви не отримаєте з цих додаткових зразків. Набір тестування взагалі не слід чіпати, як зазначено вище, без набору тестування у вас не буде способу оцінити вашу модель. Це азартні ігри, ви НЕ МОЖЕТЕ доставляти будь-яку модель чи рішення без оцінки її точності на справжньому розподілі даних (який представлений даними тестування).


Я мав на увазі після тренування даних поїздів, налаштування гіперпараметрів на даних валідації та вибору моделі моделі тестових даних, чи можу я тренувати свою модель на основі всіх даних. Або, чи можу я поєднати дані тренувань та валідації після того, як я закінчу з налаштуванням гіперпараметра та оцінювати точність, використовуючи дані тесту. Вибачте за неправильне написання. Виправили це зараз.
Апоорва Абхішех
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.