Як вибрати класифікатор після перехресної перевірки?


13

Коли ми робимо k-кратну перехресну перевірку, чи слід просто використовувати класифікатор, який має найвищу точність тесту? Який, як правило, найкращий підхід для отримання класифікатора від перехресної перевірки?


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

@NathanMcCoy добре припускаючи, що ми вибираємо точність, ми обираємо класифікатор з найвищою точністю тесту?
Армон Сафай

Звичайно! Просто намагаюся згадати щось інше, щоб подумати :)
Натан Маккой

Відповіді:


15

Ви робите перехресну перевірку, коли хочете виконати будь-яку з цих двох речей:

  • Вибір моделі
  • Оцінка помилки моделі

Вибір моделі може здійснюватися в різних сценаріях:

  • Вибір одного алгоритму проти інших для певної проблеми / набору даних
  • Вибір гіперпараметрів певного алгоритму для певної проблеми / набору даних

(зауважте, що якщо ви обираєте алгоритм - краще називати його моделлю - а також здійснюєте пошук гіперпараметрів, вам потрібно зробити вкладену перехресну перевірку. Чи дійсно потрібен Nested-CV? )

Перехресна перевірка певною мірою гарантує, що оцінка помилки є найближчою можливою, оскільки помилка узагальнення для цієї моделі (хоча це дуже важко наблизити). Під час спостереження за середньою помилкою серед складок ви можете добре прогнозувати очікувану помилку для моделі, побудованої за повним набором даних. Також важливо спостерігати дисперсію прогнозу, це те, наскільки похибка варіюється від складки до кратності. Якщо варіація занадто велика (значно різні значення), модель, як правило, нестабільна. Інший метод, що забезпечує гарне наближення в цьому сенсі. Я пропоную уважно прочитати розділ 7 про "Елементи статистичного навчання", що є у вільному доступі за адресою: ELS-Standford

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

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

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

Ось остаточне приємне пояснення щодо теми: резюме та вибір моделі


Я бачу, чи справді вам потрібно мати окремі дані тесту чи ви можете просто навчити свій класифікатор на 100% усіх даних, які ви маєте, оскільки ми вже зробили перехресну перевірку та отримали приблизну помилку тесту для моделі?
Армон Сафай

+1 для "вибрав ту, яка виявилася кращою щодо помилок та її відмінності між складками ". Здається, всі ігнорують розбіжність між складками при виборі моделей.
stmax

Чому я повинен піклуватися про помилку тесту, якщо те, що мене хвилює, лише помилка CV? Я запитав, тому що ви написали "справді на оціночну помилку, подану процедурою резюме".
HelloWorld

Інше питання. Що робити, якщо найкраща модель із CV не є найкращою моделлю при створенні для всього набору даних?
HelloWorld

1
Ви будуєте модель на 100% даних, це означає на 100% даних, використовуваних для перехресної перевірки. Якщо ви попередньо розділили вихідні дані на 80% -20% для тренувань та подальших тестів, то ви зробите резюме на 80%, виберіть модель та перепідготовку на цілих 80%. Маючи тестовий набір у цьому випадку (20%), просто ви можете побачити, як себе веде з новими небаченими даними (ви можете вважати це даними, які стали доступними в майбутньому), але оцінка помилки, яку ви використовуєте, є тією, що складається з CV . Будемо сподіватися, що це призведе до подібної помилки з новими даними, якщо це хороша модель (що 20%, або фактично нові дані). @ArmonSafai
Javierfdr

8

Ні. Ви не вибираєте жодного з k класифікаторів, побудованих під час перехресної перевірки k-кратного. Перш за все, метою перехресної валідації є не придумати прогнозну модель, а оцінити, наскільки точно прогнозована модель буде працювати на практиці. По-друге, заради аргументації скажімо, що ви мали використовувати перехресну валідацію k-кратну з k = 10, щоб з’ясувати, який із трьох різних алгоритмів класифікації був би найбільш підходящим для вирішення заданої класифікаційної задачі. У цьому випадку дані випадковим чином діляться на k частини однакової величини. Одна з частин зарезервована для тестування, а решта частини k-1 будуть використані для навчання. Процес перехресної перевірки повторюється k (кратно) разів, так що для кожної ітерації для тестування використовується інша частина. Після запуску перехресної перевірки ви дивитесь на результати кожної складки та дивуєтесь, який алгоритм класифікації (не будь-яка з навчених моделей!) Є найбільш підходящим. Ви не хочете вибирати алгоритм, який має найвищу точність тесту на одній з 10 ітерацій, тому що, можливо, просто випадково трапилось, що дані тесту на цій конкретній ітерації містили дуже прості приклади, які потім призводять до високої точності тесту. Що ви хочете зробити, це вибрати алгоритм, який дав би найкращу точність які потім призводять до високої точності випробувань. Що ви хочете зробити, це вибрати алгоритм, який дав би найкращу точність які потім призводять до високої точності випробувань. Що ви хочете зробити, це вибрати алгоритм, який дав би найкращу точністьусереднено по всіх k складках . Тепер, коли ви вибрали алгоритм, ви можете тренувати його, використовуючи цілі дані тренувань, і починати робити прогнози в дикій природі.

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


Я подумав, що перехресне підтвердження k-кратного результату створює k різних моделей, оскільки існує 10 різних наборів даних про навчання.
Armon Safai

Перевірте мою оновлену відповідь. Я уточнив це, щоб вирішити це питання більш прямо та краще пояснити на прикладі.
tuomastik

я бачу, тому, коли ви нарешті тренуєте свій класифікатор, чи використовуєте ВСІ свої дані для підготовки класифікатора після того, як ви вибрали свій алгоритм з перехресної перевірки
Armon Safai

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

1

Тож припустимо, що у вас є навчання, з яких ви використовуєте 80% як навчання, а відпочинок 20% - як дані валідації. Ми можемо тренуватися на 80% і тестувати на решті 20%, але можливо, що 20%, які ми взяли, не співпадають з фактичними даними тестування і можуть виявитись поганими. Отже, щоб запобігти цьому, ми можемо використовувати перехресну перевірку k-кратної.

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

Перейшовши до однієї моделі і якщо ви перевіряєте перехресну перевірку k-кратною можливістю, ви можете отримати приблизну помилку тестових даних, але when you are actually training it finally, you can use the complete training data. (Оскільки тут передбачається, що всі дані разом будуть краще, ніж частина її . Іноді це може бути не так, але це загальне припущення.)


Отже, коли ми робимо перехресну перевірку, ми просто вибираємо модель, яка має найвищу точність тесту?
Armon Safai

коли ви говорите тест, ви маєте на увазі тест перевірки набору даних?
Хіма Варша

так, що я маю на увазі
Армон Сафай

як тільки ми використали перехресну валідацію для вибору моделі, що працює більш ефективно (наприклад, у вас є 2 моделі - лінійна регресія або нейронна мережа), ми тренуємо цю модель (будь то лінійна регресія чи нейронна мережа) для всіх даних
Hima Варша

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