У всіх хороших проектах із розробки програмного забезпечення передбачено багато часу на тестування додатків. Тому й ми наполегливо рекомендуємо протестувати вашу модель машинного навчання, щоб визначити, наскільки її прогнози правильні.
Набори даних для навчання, перевірки й тестування
Варто протестувати модель на наборі прикладів, відмінних від тих, що використовуються для її навчання. Трохи пізніше ви дізнаєтеся, що найкраще перевіряти придатність моделі, тестуючи її на різних прикладах, ніж на одному їх наборі.
Звідки взяти різні приклади? У машинному навчанні традиційно отримують різні приклади, розділяючи первинний набір даних. Тому можна припустити, що слід розділити первинний набір даних на дві підмножини:
Припустімо, що ви тренуєте модель на навчальному наборі й оцінюєте її на тестовому наборі кілька циклів. У кожному циклі ви використовуєте результати тестового набору, щоб зрозуміти, як оновити гіперпараметри й набір ознак. Чи є, на вашу думку, у цьому підході якісь недоліки? Виберіть лише одну відповідь.
Багато циклів цієї процедури може спричинити неявне пристосування моделі до особливостей конкретного набору для тестування.
Так. Що частіше ви використовуєте той самий тестовий набір, то більша ймовірність, що модель пристосується до нього.
Подібно до студента, який "готується до екзамену", модель ненавмисно пристосовується до набору даних для тестування, що може ускладнити її роботу з реальними даними.
Такий підхід є непоганим, адже ви тренуєте модель на наборі для навчання, а для оцінювання використовуєте окремий тестовий набір.
Власне, є маленький недолік. Подумайте, що може поступово піти не так.
Цей підхід неефективний із погляду обчислень. Не змінюйте гіперпараметри чи набори ознак після кожного циклу тестування.
Часто проводити тестування дорого, але необхідно. І це значно дешевше, ніж додаткове навчання. Оптимізація гіперпараметрів і набору ознак може значно покращити якість моделі, тому завжди плануйте час і обчислювальні ресурси на таку роботу.
Поділити набір даних на два набори є непоганою ідеєю, але краще розділити його на три підмножини.
На додаток до навчальної і тестової підмножини, третьою стане набір даних для перевірки.
Використовуйте набір для перевірки, щоб оцінити результати, отримані на основі набору для навчання.
Якщо після неодноразового використання набору для перевірки можна зробити висновок, що ваша модель робить хороші прогнози, скористайтеся набором для тестування, щоб іще раз переконатися в цьому.
На рисунку, наведеному нижче, показано цей робочий процес.
"Коригувати модель" означає вносити поправки в будь-які її частини, зокрема змінювати швидкість навчання, додавати чи видаляти ознаки й навіть розробляти зовсім нову модель із нуля.
Наприкінці цього робочого процесу ви виберете модель, яка показала найкращі результати на тестовому наборі даних.
Робочий процес, показаний на рисунку 10, є оптимальним, але навіть із його використанням набори даних для тестування й перевірки "зношуються", якщо застосовувати їх багато разів.
Тобто що більше ви використовуєте ті самі дані, щоб приймати рішення щодо налаштувань гіперпараметрів або інших удосконалень моделі, то менше впевненості в тому, що модель створюватиме хороші прогнози на основі нових даних.
Тому доцільно зібрати більше даних, щоб "оновлювати" ними набори для тестування й перевірки. Почати заново – чудовий спосіб змінити все докорінно.
Вправа. Перевірте свою інтуїцію
Ви перемішали всі приклади набору даних і розділили їх на підмножини для навчання, перевірки й тестування. Однак значення втрат у вашому тестовому наборі настільки низьке, що ви підозрюєте помилку. Що могло піти не так?
У тестовому й навчальному наборах багато однакових прикладів.
Так. Ця проблема може виникнути, якщо в наборі даних багато зайвих прикладів. Наполегливо рекомендуємо видаляти повторювані приклади з тестового набору перед тестуванням.
Навчання й тестування є недетермінованими. Іноді (випадково) втрати при тестуванні можуть бути неймовірно низькими. Перезапустіть тест, щоб підтвердити результат.
Хоча рівень втрат дещо змінюється з кожним запуском, він не має відрізнятися настільки, що ви думаєте, що виграли в лотерею машинного навчання.
Так сталося, що в тестовому наборі були приклади, на основі яких модель показала хороші результати.
Приклади було добре перемішано, тому це вкрай малоймовірно.
Інші проблеми з наборами даних для тестування
Як зазначено в попередньому запитанні, повторювані приклади можуть вплинути на оцінювання моделі.
Розділивши набір даних на підмножини для навчання, перевірки й тестування, видаліть із двох останніх ті приклади, які є в навчальній. Перевірка моделі об’єктивна, тільки якщо для неї використовуються нові, а не повторювані приклади.
Наприклад, розгляньмо модель, яка прогнозує, чи електронний лист є спамом, використовуючи рядок теми, текст листа й адресу відправника як ознаки.
Припустімо, ви розділили дані на навчальний і тестовий набори, використовуючи співвідношення 80:20.
Після навчання модель досягла 99% влучності на основі даних як із навчального, так і з тестового набору. Ви очікували нижчої влучності для тестового набору, тому ще раз перевірили дані й виявили, що в ньому й у навчальному наборі багато однакових прикладів. Проблема полягає в тому, що ви не видалили повторювані записи для одного й того самого електронного листа зі спамом із вхідної бази даних перед розділенням. Ви ненавмисно проводили навчання на частині тестових даних.
Якщо підбити підсумок, хороший набір для тестування або перевірки відповідає всім критеріям, перерахованим нижче.
Досить великий, щоб можна було отримати статистично значущі результати тестування.
Загалом репрезентує набір даних. Іншими словами, не слід вибирати тестовий набір з іншими характеристиками, ніж у навчальному.
Репрезентує реальні дані, які модель отримуватиме в рамках свого робочого призначення.
Не має прикладів, які є в навчальному наборі.
Вправи. Перевірте свої знання
Якщо є один набір даних із фіксованою кількістю прикладів, яке з тверджень, наведених нижче, правдиве?
З кожним прикладом, який додається в набір для тестування моделі, на один менше використовується для її навчання.
Розподіл прикладів на набори для навчання, тестування й перевірки як перетягування ковдри.
Це основна дилема.
У тестовому наборі має бути більше прикладів, ніж у наборі для перевірки.
Теоретично набори даних для перевірки й тестування мають містити однакову або майже однакову кількість прикладів.
У тестовому наборі має бути більше прикладів, ніж у наборі для перевірки або навчання.
У наборі для навчання зазвичай більше прикладів, ніж у наборі для перевірки або тестовому; однак вимог щодо процентного співвідношення між ними.
Припустімо, що ваш набір для тестування містить достатньо прикладів, щоб провести статистично значуще тестування. Ба більше, тестування на його основі показало низькі втрати. Однак результати моделі на реальних даних були погані. Що робити?
Визначити, чим первинний набір відрізняється від реальних даних.
Так. Навіть найкращі набори даних є лише відображенням реальних даних; еталонні дані мають тенденцію змінюватися із часом. Тестовий набір досить добре збігався з навчальним, через що здавалося, що якість моделі гарна, проте він, імовірно, недостатньо відповідає реальним даним.
Можливо, вам доведеться повторно провести навчання й тестування на новому наборі даних.
Повторно провести тестування, використовуючи той самий набір даних. Результати тестування могли бути аномалією.
Повторне тестування може дати дещо інші результати, проте тактика навряд чи буде корисною.
Скільки прикладів має містити набір даних для тестування?
Достатню кількість для проведення статистично значущого тестування.
Так. Але скільки це прикладів? Вам доведеться експериментувати.
Принаймні 15% від первинного набору даних.
Не можна сказати, що 15% прикладів точно буде достатньо.
[null,null,["Last updated 2025-01-05 UTC."],[[["Machine learning models should be tested against a separate dataset, called the test set, to ensure accurate predictions on unseen data."],["It's recommended to split the dataset into three subsets: training, validation, and test sets, with the validation set used for initial testing during training and the test set used for final evaluation."],["The validation and test sets can \"wear out\" with repeated use, requiring fresh data to maintain reliable evaluation results."],["A good test set is statistically significant, representative of the dataset and real-world data, and contains no duplicates from the training set."],["It's crucial to address discrepancies between the dataset used for training and testing and the real-world data the model will encounter to achieve satisfactory real-world performance."]]],[]]