Точність тесту вища, ніж тренування. Як інтерпретувати?


23

У мене є набір даних, що містить щонайменше 150 прикладів (розділених на навчальні та тестові), з багатьма можливостями (вище 1000). Мені потрібно порівняти класифікатори та методи вибору функцій, які добре працюють на даних. Отже, я використовую три методи класифікації (J48, NB, SVM) та 2 методи вибору функції (CFS, WrapperSubset) з різними методами пошуку (Greedy, BestFirst).

Порівнюючи, я дивлюся на точність тренувань (5-кратне поперечне складання) та точність тесту.

Ось один із результатів J48 та CFS-BestFirst:

{"точність тренування": 95,83, "точність тесту": 98,21}

Багато результатів схожі на це, і на SVM є багато результатів, які вказують на те, що точність тесту набагато вище, ніж тренування (тренування: 60%, тест: 98%)

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

У мене 73 навчальні та 58 тестові екземпляри. Деякі відповіді не мали цієї інформації, коли вони були розміщені.

Відповіді:


20

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

  • Чи відбувається розщеплення під час 5-кратної перехресної перевірки таким чином, що дає статистично незалежні комплекти поїздів / тестів для відеоспостереження? Наприклад, якщо в даних є повторні вимірювання, чи завжди вони закінчуються в одному наборі?
  • Точність 95,83% у 5-кратному рейтингу з 150 зразків відповідає 5 неправильним зі 130 навчальних зразків для 5 сурогатних моделей, або 25 неправильних випадків для 5 * 130 навчальних зразків.
  • 98,21% точність тесту важче пояснити: під час одного запуску відеореєстратора кожен випадок повинен бути перевірений один раз. Таким чином, можливі цифри, про які повідомляється, мають бути кроками 100% / 150. 98,21% відповідає 2,68 неправильних випадків (2 та 3 неправильних із 150 тестових випадків дає 98,67 та 98,00% точності відповідно).

  • Якщо ви можете витягти свою модель, обчисліть повідомлені точності зовні.

  • Які точні відомості про випадкові дані?
  • Зробіть зовнішню перехресну перевірку: розділіть свої дані та передайте програмі лише навчальну частину. Прогнозуйте "зовнішні" дані випробувань та обчисліть точність. Це відповідає результатам програми?
  • Переконайтеся, що повідомлена "тестова точність" походить від незалежних даних (подвійне / вкладене перехресне підтвердження): якщо ваша програма робить оптимізацію, керовану даними (наприклад, вибираючи "найкращі" функції, порівнюючи багато моделей), це більше схоже на помилку тренувань (доброта придатності), ніж як помилка узагальнення.

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

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

Другий крок - це зрозуміти, чи є помітні відмінності для статистично незалежних розщеплень, як уже вказував @mbq.

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


тут є чудова інформація для перетравлення. по-перше, мені дуже шкода, що я не дав точних цифр, оскільки я не очікував, що ви ввійдете до таких цифр, і я також хотів зосередитись лише на одній темі. у будь-якому випадку у мене є 73 дані про тестування та 58. вони не є статистично відокремленими, їх просто брали мною в різні часи. Навчальні зразки спочатку беруться в алгоритм вибору функцій (метод обгортки fs також має внутрішній 5-кратний cv), а потім 5-кратний і береться найкраща точність і зберігається модель. а потім ця модель використовується для обчислення точності випробувань.
ercu

16

Точність на навчальному наборі не має сенсу в машинному навчанні. Ігноруйте це.


Спасибі! У мене є багато результатів з однаковою найкращою точністю тесту, тому я не можу зараз порівнювати результати (я б також подивився на точність тренування для порівняння, якщо ви цього не сказали :). тож замість того, щоб розбиватись на тестування та навчання, чи багаторазовий перехресний перевір у всіх наборах даних більш відповідний для мого випадку для порівняння результатів? чи мені потрібна інша метрика?
ercu

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

8
Корисно знати точність набору тренувань, щоб оцінити обсяг перевиконання вашого алгоритму прогнозування (шляхом обчислення різниці в точності між навчальними і тестовими наборами).
Френк Харрелл

Чи можете ви пояснити, чому?
інф

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

6

Є кілька серйозних проблем з тим, як ви пройшли цю справу. Перш за все, розподіл даних є недостовірним, якщо загальний розмір вибірки не є величезним. Ви отримали б різні результати, якщо знову поділитесь. Крім усього іншого, ви не враховуєте довірчих інтервалів для оцінки точності. По-друге, 5-кратна перехресна перевірка недостатньо точна. Для досягнення належної точності може знадобитися повторити його 100 разів. По-третє, ви вибрали в якості оцінки точності переривчасте правило неправильного балу (пропорційно класифіковано). Таке неправильне бальне правило призведе до вибору неправильної моделі.


3

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

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

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


1

У вас занадто багато функцій (1000) для кількості наявних у вас зразків (150). Вам потрібно збільшити зразки або зменшити кількість функцій.

Кажуть, зазвичай кількість особливостей ^ 2 = кількість необхідних зразків. Тож вам потрібно щонайменше мільйон зразків.


0

Це може статися за допомогою будь-якого алгоритму ML та навіть спеціальних класифікаторів. Спробуйте різні схеми перехресної перевірки k-кратного, тобто 2 або 10 разів. З більшим k очікується, що помилка тесту зменшиться.

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