Навчання з повним набором даних після перехресної перевірки?


139

Чи завжди хороша ідея тренуватися з повним набором даних після перехресної перевірки ? Інакше кажучи, чи нормально тренуватися з усіма зразками в моєму наборі даних і не можете перевірити, чи відповідає саме цей примір ?


Деякі відомості про проблему:

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

Для вибору моделі я можу здійснити пошук (наприклад, пошук по сітці) на , наприклад, запустивши перехресну перевірку k-кратної для кожного кандидата. У кожній складці в перехресній валідації я закінчую вивчену модель β α .α βα

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

Nαbestβfull βfull на будь-які небачені дані. Який правильний спосіб обдумати цю проблему?


2
Майже точний дублікат: stats.stackexchange.com/questions/52274 з великою кількістю гідних відповідей. Можливо, ці нитки слід об'єднати, але я не впевнений, в якому напрямку. Обидва прийняли відповіді, які дуже добре.
амеба

Відповіді:


111

Спосіб думати про перехресну валідацію - це оцінювання результатів, отриманих за допомогою методу побудови моделі, а не для оцінки продуктивності моделі.

α

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

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

GC Cawley та NLC Talbot, Надмірна відповідність вибору моделі та подальша упередженість вибору в оцінці продуктивності, Journal of Machine Learning Research, 2010. Research, vol. 11, с. 2079-2107, липень 2010 р. ( Www , pdf )

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

GC Cawley та NLC Talbot, запобігання надмірному вбору у вибір моделі за допомогою байєсівської регуляризації гіперпараметрів, Journal of Machine Learning Research, том 8, сторінки 841-861, квітень 2007 р. ( Www , pdf )

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


3
+1: Відповідає на питання: "Якщо ви використовуєте перехресну валідацію для оцінки гіперпараметрів моделі (αs), а потім використовуєте ці гіперпараметри, щоб пристосувати модель до всього набору даних, то це нормально ..."
Ніл G

4
@soufanom, ні, використання "початкових експериментів" для вибору моделі стосовно цієї моделі, ймовірно, призведе до надмірної підгонки і майже напевно внесе оптимістичний ухил в аналіз продуктивності. Перехресне підтвердження, яке використовується для аналізу продуктивності, повинно повторювати ВСЕ КРАЙ, що застосовується для підгонки моделі незалежно у кожному складі. Експерименти в моєму документі показують, що моделі ядра можуть бути дуже чутливими до подібного зміщення, тому важливо виконувати вибір моделі та оцінку продуктивності з усією можливою суворістю.
Дікран Марсупіал

3
Для ядерних методів, таких як SVM, часто можна здійснити перехресну перевірку відпустки одноразово майже без обчислювальних витрат (див. Статті, наведені у моїй відповіді). Я використовую цю "віртуальну" перехресну валідацію залишків-одноразових для настройки гіпер-параметрів, вкладених у k-кратну перехресну перевірку для оцінки продуктивності. Вартість тоді цілком розумна. На мою думку, неприпустимо використовувати будь-яку процедуру, коли оцінка ефективності будь-яким чином упереджена налаштуванням гіпер-параметрів. Для отримання достовірної оцінки варто обчислити витрати.
Дікран Марсупіал

2
@DikranMarsupial. Я не зовсім отримую третій параграф у вашій відповіді. Якщо я роблю вкладену перехресну перевірку, я отримаю різний набір гіперпараметрів для кожної складки зовнішнього CV (тобто я отримую один набір гіперпараметрів від виконання внутрішнього CV по сітці параметрів). Як тоді вибрати найкращий набір гіперпараметрів?
Амеліо Васкес-Рейна

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

23

Просто для додання відповіді від @ mark999, caretпакет Макса Куна (Навчання класифікації та регресії) є найбільш всеосяжним джерелом R для вибору моделі на основі перехресної перевірки завантажувального коду чи N-кратного CV та деяких інших схем.

Не ігноруйте величини rmsпакету, але caretдозволяє вам підходити майже до кожного методу навчання, доступного в R, тоді як validateпрацює тільки з rmsметодами (я думаю).

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

Перегляньте віньєтки пакета, щоб розпочати роботу (це дуже просто у використанні)
Підготовка даних
Вибір змінних за допомогою каретки
Створення моделі з кареткою
Змінна важливість

Ви також можете переглянути веб-сайт caret для отримання додаткової інформації про упаковку та конкретних прикладів впровадження:
Офіційний веб-сайт карети


Дякую. Чи знаєте ви, чи після вибору моделі (що робиться за допомогою виклику train) є спосіб у тревозі пройти навчання з повним набором даних?
Амеліо Васкес-Рейна

Не впевнений, чи це гарна ідея, чи чому ви цього хотіли, але ви можете просто встановити остаточну модель, повернуту поїздом, до повного набору даних.
Момо

16

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

Докладнішу інформацію див. У книзі «Регресійне моделювання стратегій» Гаррелла та / або «Вступ до завантажувальної програми» Ефрона та Тібширані для отримання додаткової інформації.


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

1
mark999 або @mbq, ви не хотіли б розглянути питання про те, як завантажувальний сервіс дозволить перевірити модель, встановлену на повний набір даних?
Амеліо Васкес-Рейна

1
@ user27915816 Ну, в принципі, так; ідея перехресної перевірки полягає в тому, що ви перевіряєте, чи даний метод навчання надійно робить хороші моделі на наборах, дуже схожих на кінцевий, і, якщо так, узагальнюйте це спостереження до повного набору з мовчазними припущеннями, що нічого дивного не станеться і той метод CV, який ви використовували, не є якимось упередженим. Звичайно, це майже завжди досить добре, все ж ви ніколи не можете бути впевнені, що модель, побудована на всіх даних, які ви маєте, не переоснащена.

14

Я думаю, у вас тут є маса різних питань:

Проблема полягає в тому, що якщо я використовую всі пункти мого набору даних для тренінгу, я не можу перевірити, чи ця нова вивчена модель βповні накладки!

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

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

Тож ось запитання до цієї публікації: чи корисно тренуватись із повним набором даних після перехресної перевірки k-кратної? Або краще замість цього дотримуватися однієї з моделей, засвоєних в одному з схем перехресної перевірки для αbest?

Використання однієї з моделей перехресної перевірки, як правило, гірше, ніж навчання на повній множині (принаймні, якщо ваша крива навчання = f (nsamples) продовжує зростати. На практиці це так: якби цього не було, ви, ймовірно, встановили б убік незалежного тестового набору.)

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

Оновлення: Ця агрегація - це ідея пакетування, застосована до перекомпонування без заміни (перехресне підтвердження) замість перекомплектування із заміною (перевірка завантаження / поза завантаження).

Ось стаття, де ми використовували цю методику:
Beleites, C. & Salzer, R .: Оцінка та підвищення стабільності хіміометричних моделей у ситуаціях з невеликим розміром вибірки, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6

Мабуть, найголовніше, як я можу тренуватись з усіма точками в моєму наборі даних і все-таки боротися з надмірною обробкою?

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


...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...Чи можете ви пояснити це трохи більше? Наприклад, якщо я здійснюю логістичну регресію в 10-к перехресній валідированій установці і закінчую 10 наборами коефіцієнтів, чи рекомендуєте ви агрегувати оцінки коефіцієнтів, щоб сформувати остаточну модель? Якщо так, то як це зробити, просто взявши засіб?
Жубарб

@cbeleites ви можете детальніше розповісти If the d.f. are actually appropriate for the cross validation models. Наскільки я розумію, ви стверджуєте, що набори поїздів / валідацій не дуже великі в порівнянні з повним набором даних, я прав?
jpcgandre

1
1k

1
Що ще важливіше: ітеративні моделі сурогатної перехресної валідації мають однаковий набір гіперпараметрів. Тобто вони є рівнозначними у всіх, що ви вважаєте, важливими, але довільний вибір навчальних і тестових випадків. Вибір "хорошої" моделі таким чином насправді повинен в першу чергу вибирати гарну комбінацію тестових / тренувальних наборів - що принципово те, чого ми зазвичай не хочемо: ми хочемо вибір, який добре узагальнює і, таким чином, працює не лише для сприятливих випадків. З цієї точки зору, вибір сурогатної моделі з "нормальної" перехресної перевірки для мене не має сенсу.
cbeleites

1
11k

6

Те, що ви робите, - це не перехресне підтвердження, а якась стохастична оптимізація.

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

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

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


2
β

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