Яка різниця між тестовим набором і набором валідації?


431

Я вважав це заплутаним, коли використовую панель інструментів нейронної мережі в Matlab.
Він розділив набір необроблених даних на три частини:

  1. навчальний набір
  2. набір перевірки
  3. тестовий набір

Я помічаю в багатьох алгоритмах навчання або навчання, дані часто діляться на 2 частини, навчальний набір і тестовий набір.

Мої запитання:

  1. Яка різниця між набором валідації та тестовим набором?
  2. Чи дійсно набір перевірки специфічний для нейронної мережі? Або це необов’язково.
  3. Щоб піти далі, чи існує різниця між валідацією та тестуванням у контексті машинного навчання?

56
На запитання відповідає у книзі Елементи статистичного навчання на сторінці 222. Набір перевірки використовується для вибору моделі, тестового набору для кінцевої моделі (моделі, яка була обрана шляхом відбору), помилки прогнозування.
mpiktas

@mpiktas Ви посилаєтесь на розділ "Оцінка та вибір моделі"?
Celdor

2
Так. Номер сторінки був з 5-го друкованого видання.
mpiktas

13
@mpiktas знаходиться на місці. Ось власне текст:The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
arun

Відповіді:


254

Зазвичай для здійснення контрольованого навчання потрібні два типи наборів даних:

  1. В одному наборі даних (ваш "золотий стандарт") ви маєте вхідні дані разом з правильним / очікуваним результатом. Цей набір даних зазвичай належним чином підготовлений або людьми, або шляхом збору деяких даних напівавтоматизованим способом. Але важливо, щоб у вас був очікуваний вихід для кожного ряду даних тут, тому що це потрібно для контролю під контролем.

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

Виконуючи машинне навчання, ви робите наступне:

  1. Навчальний етап: ви представляєте свої дані зі свого «золотого стандарту» і тренуєте свою модель, поєднуючи вхід із очікуваним результатом.
  2. Фаза валідації / тестування: для того, щоб оцінити, наскільки підготовлена ​​ваша модель (що залежить від розміру ваших даних, значення, яке ви хотіли б передбачити, ввести тощо) та оцінити властивості моделі (середня помилка для числових прогнокторів, помилки класифікації класифікаторів, відкликання та точність ІР-моделей тощо)
  3. Етап подання заявки: тепер ви застосовуєте свіжо розроблену модель до реальних даних і отримуєте результати. Оскільки у вас зазвичай немає жодного еталонного значення для даного типу даних (інакше навіщо вам потрібна ваша модель?), Ви можете лише міркувати про якість виводу вашої моделі, використовуючи результати вашої фази перевірки.

Фаза перевірки часто розділяється на дві частини :

  1. У першій частині ви просто переглядаєте ваші моделі та вибираєте найбільш підходящий підхід, використовуючи дані перевірки (= валідація)
  2. Потім ви оцінюєте точність обраного підходу (= тест).

Звідси поділ до 50/25/25.

У випадку, якщо вам не потрібно вибрати відповідну модель з декількох конкуруючих підходів, ви можете просто перерозподілити свій набір, який у вас, як правило, має лише навчальний набір і тестовий набір, не виконуючи перевірку вашої навченої моделі. Я їх особисто розділяв тоді 70/30.

Дивіться також це питання .


21
Чому б я не обрав найкращу модель на основі тестового набору, повністю позбувшись набору перевірок?
Себастьян Граф

4
Це через перевитрату? Або тому, що ми хочемо отримати незалежну статистику на основі результату тесту, лише для оцінки помилок?
Себастьян Граф

12
@Sebastian [Якщо ви використовуєте лише тестовий набір:] "Помилка тестового набору остаточної обраної моделі недооцінить справжню помилку тесту, іноді істотно" [Hastie et al]
користувач695652

23
Набір перевірки часто використовується для налаштування гіпер-параметрів. Наприклад, у спільноті глибокого навчання налаштування розміру мережевого шару, прихованого номера одиниці, терміну регуляризації (від L1 або L2) залежить від набору перевірок
xiaohan2012

2
Який правильний спосіб розділити множини? Чи має бути вибір випадковим? Що робити, якщо у вас є схожі фотографії? Чи не шкодить це вашій здатності до узагальнення? Якщо у вас є два набори в різних місцях, чи не було б краще взяти один як навчальний набір, а другий як тестовий набір?
Йонатан Сімсон

263

Навчальний набір: набір прикладів, які використовуються для навчання: для відповідності параметрам класифікатора У випадку багатошарового перцептрону (MLP) ми використовуємо навчальний набір для пошуку «оптимальних» ваг з правилом зворотного опору.

Набір валідації: набір прикладів, які використовуються для настройки параметрів класифікатора У випадку MLP ми використовуємо набір перевірки для пошуку «оптимальної» кількості прихованих одиниць або для визначення точки зупинки для алгоритму зворотного поширення

Тестовий набір: набір прикладів, які використовуються лише для оцінки працездатності повністю підготовленого класифікатора У випадку MLP ми використовували б тест для оцінки рівня помилок після того, як ми обрали остаточну модель (розмір MLP та фактичні ваги) Після оцінки остаточну модель на тестовому наборі, ВАМ НЕ МОЖЕ ДАЄМО далі налаштовувати модель!

Чому окремі набори тестів та валідації? Оцінка рівня помилок кінцевої моделі на даних валідації буде упередженою (меншою, ніж справжня швидкість помилок), оскільки набір перевірки використовується для вибору кінцевої моделі. Після оцінки кінцевої моделі на тестовому наборі, ВАМ НЕ МОЖЕ НЕ налаштовувати модель далі!

Джерело: Вступ до аналізу шаблонів, Університет Рікардо Гутьеррес-ОсунаТексас A&M, Техаський університет A&M


42
+1 для "ВИ НЕ МОЖЕТЕ більше налаштовувати модель!"
stmax

6
Яка різниця між "підходити до параметрів" та "настроювати параметри"?
Менаріат

18
@stmax Не бути педантичним, але, як тільки ми отримаємо остаточну помилку тесту, і ми НЕ задоволені результатом, що робити, якщо ми не можемо далі настроювати нашу модель? ... Я часто замислювався про цей випадок.
Спейсі

5
@Tarantula ви можете продовжити налаштування моделі, але вам доведеться зібрати новий тестовий набір. Звичайно, ніхто цього не робить;), але порушення цього (особливо коли ви повторите це кілька разів) може призвести до того, що ваша модель помістить тестовий набір - що призводить до нереальних / занадто оптимістичних балів.
stmax

4
Я думаю, що ця номенклатура заплутує. Ви правильно сказали, "ВАМ НЕ МОЖЕ НЕ налаштовувати модель далі" після використання тестового набору, але ... яку область ви мали намір зробити? Перестати працювати над цим? Насправді вам потрібна ціла ієрархія тестових наборів. 1: Валідаційний набір - використовується для налаштування моделі, 2: Тестовий набір, який використовується для оцінки моделі та перевірки, чи варто повертатися до чертежної дошки, 3: Супертестовий набір, який використовується на алгоритмі фіналу-фіналу, щоб побачити, як добре, 4: набір гіпертестів, який використовується після того, як дослідники розробляли алгоритми MNIST протягом 10 років, щоб побачити, наскільки шалено вони переповнюють ... тощо. тощо.
Timmmm

66

Мій 5-річний досвід роботи з інформатики навчив мене, що нічого кращого, ніж простота.

Концепція наборів даних "Навчання / перехресне підтвердження / тест" така ж проста. Якщо у вас є великий набір даних, рекомендується розділити його на 3 частини:

++ Набір тренувань (60% від початкового набору даних): використовується для створення нашого алгоритму прогнозування. Наш алгоритм намагається налаштувати себе на вигадки набору навчальних даних. У цій фазі ми зазвичай створюємо декілька алгоритмів, щоб порівняти їх продуктивність під час фази перехресної валідації.

Набір перехресної валідації ++ (20% від початкового набору даних): Цей набір даних використовується для порівняння продуктивності алгоритмів прогнозування, створених на основі навчального набору. Ми вибираємо алгоритм, який має найкращі показники.

++ Тестовий набір (20% від початкового набору даних): зараз ми вибрали наш бажаний алгоритм прогнозування, але ми ще не знаємо, як це буде виконувати на абсолютно небачених реальних даних. Отже, ми застосовуємо вибраний алгоритм передбачення на нашому тестовому наборі, щоб побачити, як це буде виконувати, щоб ми могли мати уявлення про ефективність нашого алгоритму на небачених даних.

Примітки:

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

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


1
Легко і заплутано називати множини фазами і навпаки.
Метт О'Брайен

2
@innovIsmail Що робити, якщо я пропускаю етап перевірки? Скажімо, у мене багато алгоритмів, і я навчав їх на наборі поїздів, тоді я просто застосовую їх до тестового набору, тоді я вибираю той, який найкраще працює на тестовому наборі
KevinKim

3
Мені це здається, що ти просто пропускаєш крок тесту.
Михай Даніла

1
> порівняйте ефективність алгоритмів прогнозування - що таке "алгоритм" у цьому контексті? чи не ваша модель - це алгоритм? чи потрібно будувати кілька моделей і тренувати їх окремо, щоб отримати кілька етапів для перевірки?
Boppity Bop

2
Ця простота є ілюзією, оскільки в ситуації з величезним розміром вибірки можна отримати істотно різні алгоритми прогнозування і результати валідації, якщо випадкові розбиття повторилися.
Френк Харрелл

33

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

введіть тут опис зображення

Крок 1) Навчання: у кожного типу алгоритму є свої параметри параметрів (кількість шарів у нейронній мережі, кількість дерев у випадковому лісі тощо). Для кожного свого алгоритму потрібно вибрати один варіант. Ось чому у вас є навчальний набір.

Крок 2) Перевірка: тепер у вас є колекція алгоритмів. Ви повинні вибрати один алгоритм. Ось чому у вас є тестовий набір. Більшість людей вибирають алгоритм, який найкраще працює у наборі перевірки (і це нормально). Але якщо ви не вимірюєте показник помилок вашого найефективнішого алгоритму на тестовому наборі, а просто переходите з його коефіцієнтом помилок на набір перевірки, то ви сліпо помилилися з "найкращим можливим сценарієм" для "найбільш ймовірного сценарію". Ось рецепт катастрофи.

Крок 3) Тестування: я припускаю, що якщо у ваших алгоритмів не було б жодних параметрів, вам не знадобиться третій крок. У цьому випадку ваш крок перевірки буде вашим тестовим кроком. Можливо, Matlab не запитує у вас параметрів або ви вирішили не використовувати їх, і це джерело вашої плутанини.

1 Часто корисно переходити до кожного кроку з припущенням (нульова гіпотеза), що всі параметри однакові (наприклад, всі параметри однакові або всі алгоритми однакові), отже, моє посилання на розподіл.

2 Це зображення не моє власне. Я взяв це з цього веб-сайту: http://www.teamten.com/lawrence/writings/bell-curve.png


3
Я думаю, що перше речення краще зафіксує фундаментальну відповідь на це питання, ніж будь-яка з інших відповідей. "На кожному кроці, який вам пропонують прийняти рішення (тобто вибрати один варіант з декількох варіантів), ви повинні мати додатковий набір / розділ, щоб оцінити точність на ваш вибір ..."
kobejohn

На питання: Якщо я хочу знайти найкращий RandomForest (RF) і роблю вигляд, що існує лише один гіперпараметр RF, це кількість дерев (N), то на кроці 1 я запускаю багато РФ з різними N для побудови лісу ; на кроці 2 застосуйте їх до тесту валідації та виберіть РФ з N *, що дає найменшу помилку над тестом перевірки, тоді в step3 я застосую РФ з N * до тестового набору і отримаю неупереджену оцінку справжньої помилки тесту цього ВЧ за допомогою N *. Але я міг застосувати всі мої радіочастоти на тестовому наборі і вибрати той, з найменшою помилкою тесту, який може бути N *. Тоді в чому сенс робити етап перевірки2?
KevinKim

1
@KevinKim: Якщо ви застосували тестовий набір до всіх радіочастотних джерел і використовуєте результати для подальшого вибору (виберіть іншу модель), ви просто повторили крок перевірки. Ви поставили свою думку на тему "Мені потрібно отримати найменшу помилку з моделлю!". Це сенс навчання та перевірки, а не тестування. Тестування стосується лише того: я тренував і вибирав модель, тепер давайте подивимось, як вона працює "загалом". Очевидно, що "загальний" тестовий набір - це лише черговий фрагмент даних, який може бути, а може і не бути надмірним, але справа в тому, що ви свідомо не переповнювали свою модель на вибір.
Honeybear

Триразовий розкол - це лише дуже поширений підхід (A), який дає вам уявлення про те, як модель узагальнює (B) з обмеженими зусиллями та (C) обмеженими спостережуваними даними. Якщо ви хочете зробити краще з точки зору (B), ви можете робити те, що ви пропонуєте: Використовуйте різні набори перевірки для фінатування для узагальнення. З обмеженими даними, які називаються перехресною валідацією: Повторіть тренування та валідацію з різними навчальними і тестовими наборами (для нейронних мереж, де навчання може зайняти тижні, це не річ).
Медовий ведмідь

1
АЛЕ: Як модель буде працювати «в реальному світі», поки невідомо. Це просто підтверджене і перевірене припущення, що воно буде добре працювати на небачених даних, і для наукових цілей це зазвичай вважається досить. Якщо ви знову перейдете і генеруєте та вибираєте моделі, доки ідеально не підійде набір перевірки І тестовий набір, тоді ви виродили свій тестовий набір до валідаційного набору. Краще зробіть для цього перехресну перевірку. У випадку, якщо продуктивність на тестовому наборі постійно значно погіршується, завжди є варіант, коли ваші дані просто погано розділені, і ви хочете перезапустити з повторно перетасованими наборами.
Honeybear

21

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


1
Отже, ви не виступаєте за перехресну перевірку шляхом розщеплення великих наборів даних для тестування / перевірки прогнозних моделей?
ОФіш

9
Ні, якщо тільки набір даних величезний або коефіцієнт сигнал / шум високий. Перехресне підтвердження не є настільки точним, як завантажувальний досвід у моєму досвіді, і воно не використовує весь розмір вибірки. У багатьох випадках для досягнення належної точності вам доведеться повторити перехресну перевірку 50-100 разів. Але у ваших наборах даних є> 20000 суб'єктів, прості підходи, такі як перевірка розділеної вибірки, часто добре.
Френк Харрелл

2
Це дійсно добре знати! Дякую. І виходячи від вас, це чудове "джерело" інформації. Ура!
OFish

1
Валідація розділеного зразка часто працює гірше, ніж суворе завантаження. Створіть зовнішній вигляд завантажувальної програми, який повторює всі контрольовані кроки навчання (усі кроки, у яких використовується Y). Завантажувальний механізм оптимізму Efron-Gong оцінює, наскільки прогнозована модель розпадається на дані, не бачені алгоритмом, без стримування даних.
Френк Харрелл

1
Так, з акцентом на повторення . Це єдиний розкол є проблематичним.
Френк Харрелл

13

Типове завдання машинного навчання можна візуалізувати у вигляді наступного вкладеного циклу:

while (error in validation set > X) {
    tune hyper-parameters
    while (error in training set > Y) {
        tune parameters
    }
}

Зазвичай зовнішній цикл виконується людиною на наборі перевірки , а внутрішній цикл - машиною , на навчальному наборі . Тоді вам потрібен 3-й тестовий набір для оцінки кінцевих характеристик моделі.

Іншими словами, валідаційний набір - це навчальний набір для людини.


9

Один із способів думати про ці три множини - це те, що два з них ( trainingі validation) походять із минулого, тоді як testнабір походить із "майбутнього". Модель має бути побудована та налаштована, використовуючи дані "минулого" ( training/ validationдані), але ніколи не testдані, які походять від "майбутнього".

Щоб навести практичний приклад, скажімо, що ми будуємо модель для прогнозування того, наскільки добре працюватимуть бейсболісти в майбутньому. Ми будемо використовувати дані 1899-2014 для створення testта validationвстановлення. Після того, як модель буде побудована та налаштована на цих даних, ми будемо використовувати дані 2015 року (фактично в минулому!) Як тестовий набір, який з точки зору моделі виглядає як "майбутні" дані і жодним чином не впливав на створення моделі . (Очевидно, що теоретично ми могли б чекати даних 2016 року, якщо дійсно хочемо!)

Очевидно, я використовую цитати скрізь, тому що фактичний тимчасовий порядок даних може не збігатися з реальним майбутнім (за визначенням, все генерування даних, мабуть, відбулося в фактичному минулому). Насправді testнабір може бути просто даними з того самого періоду часу, що і training/ validationнабори, які ви «тримаєте». Таким чином, це не мало впливу на настройку моделі, але ті, що тримають дані, насправді не надходять з майбутнього.


4
Прочитавши всі інші відповіді, ця відповідь змусила мене "натиснути"! Ви тренуєтесь із набором поїздів, переконайтеся, що ви не наближаєтесь до набору валідацій (і що модель та гіперпараметри працюють з "невідомими даними"), а потім ви оцінюєте за допомогою тестового набору - "нових даних" - чи є ви зараз мати якісь передбачувальні повноваження ..!
stolsvik

Це справедливий спосіб поглянути на це в тому сенсі, що testдані ніколи не повинні бути частиною навчального процесу: і якщо ми трактуємо їх як "майбутні" дані, то це стає неможливою помилкою.
javadba

7

Більшість керованих алгоритмів вилучення даних виконують наступні три кроки:

  1. Набір для навчання використовується для побудови моделі. Він містить набір даних, які мають попередньо класифіковані цільові та прогнозні змінні.
  2. Зазвичай використовується набір даних для витримки або тестовий набір , щоб оцінити, наскільки добре працює модель з даними поза навчальним набором. Тестовий набір містить попередньо класифіковані дані результатів, але вони не використовуються, коли дані тестового набору проводяться через модель до кінця, коли попередньо класифіковані дані порівнюються з результатами моделі. Модель налаштована для мінімізації помилок на тестовому наборі.
  3. Інший набір даних про витримку або набір перевірки використовується для оцінки коригуваної моделі на кроці №2, де, знову ж таки, дані набору валідації запускаються на коригувану модель та результати порівняно з невикористаними попередньо класифікованими даними.

4

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

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

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


2

Я хотів би додати тут інші дуже хороші відповіді, вказуючи на відносно новий підхід до машинного навчання під назвою "диференціальна конфіденційність" (див. Статті Dwork; Блог Win Vector для отримання додаткової інформації). Ідея дозволяє фактично використовувати тестовий набір без шкоди для остаточної продуктивності моделі. У типових умовах тестовий набір використовується лише для оцінки кінцевих показників; в ідеалі не можна навіть дивитися на це.

Як це добре описано в цьому блозі Win Vector (див. Також інші записи), можна використати тестовий набір, не змінюючи продуктивність моделі. Це робиться за допомогою спеціальної процедури під назвою "диференціальна конфіденційність". Учень не матиме прямого доступу до тестового набору.


-1

Моя ідея полягає в тому, що ця опція в панелі інструментів нейронної мережі - це уникнути перевитрати. У цій ситуації ваги визначаються лише для даних тренувань і не показують світової тенденції. Маючи набір валідації, ітерації адаптуються до того, де зменшення помилок у навчальних даних викликає зменшення даних перевірки та збільшення помилки даних перевірки; Поряд зі зменшенням похибки даних у навчанні, це свідчить про явище надмірного пристосування.


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