Чи настроювання гіперпараметра на вибірці набору даних є поганою ідеєю?


19

У мене є набір даних 140000 прикладів і 30 функцій, для яких я навчаю декілька класифікаторів для двійкової класифікації (SVM, Logistic Regression, Random Forest тощо)

У багатьох випадках налаштування гіперпараметрів у всьому наборі даних за допомогою Grid або Random пошуку занадто дорого за часом.

Я почав використовувати наступну техніку

  • Sub вибірки мого набору даних
  • Використовуйте отриману фракцію, щоб настроїти гіперпараметри
  • Використовуйте отримані параметри для підготовки моделі, використовуючи весь набір даних

Для оцінки кожного набору параметрів на другому кроці я використовую sklearns GridSearchCVcv = 10. Для оцінки кінцевої моделі, яку я створюю на третьому кроці, використовую sklearns cross_val_predict. У цьому сенсі я оцінюю свої моделі, залишаючи 10% відсотків даних, тренуюсь на решті і вимірюю точність прогнозування на 10%, ітеративно 10 разів, а потім беру в середньому бали.

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

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

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

Best parameters set found on development set:
{'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
Scores for all sets of parameters
0.851 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.5}
0.852 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.1}
0.829 (+/-0.006) for {'kernel': 'rbf', 'C': 3, 'gamma': 0.001}
0.853 (+/-0.006) for {'kernel': 'rbf', 'C': 9, 'gamma': 0.1}
...

А ось усереднені бали (від cross_val_predict), які я отримав під час тренінгу на цілому наборі даних, використовуючи найкращі параметри

precision    recall  f1-score   support

      0       0.86      0.85      0.86     15417
      1       0.86      0.87      0.87     16561

avg / total       0.86      0.86      0.86     31978

acc score: 0.863750078179
roc au score: 0.863370490059
[[13147  2270]
 [ 2087 14474]]

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

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

Мої проблеми:

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


Будь ласка, уточнюйте два методи, які призводять до близької точності прогнозування. Ви поділяєте дані на набір тренувань та набір валідації, де набір перевірки використовується лише для оптимізації гіпер параметрів, а не для навчання?
Іліян Бобев

Дивіться моє оновлене запитання. Я сподіваюся, що зараз зрозуміліше.
LetsPlayYahtzee

Відповіді:


15

На додаток до відповіді Джима (+1): Для деяких класифікаторів значення гіперпараметрів залежать від кількості навчальних прикладів, наприклад, для лінійного SVM, проблема первинної оптимізації полягає в

мiн12ш2+Сi=1ξi

на тему

уi(хiшб)1-ξi,ангξi0i

ξiС

Деякі реалізації SVM-репараметризації як

мiн12ш2+Сi=1ξi

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

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


11

Чи настроювання гіперпараметра на вибірці набору даних є поганою ідеєю?

Відповідь: Так, тому що ви ризикуєте переобладнати (гіперпараметри) на цьому конкретному тестовому наборі, що є результатом вибраного вами тесту на поїзд.

Чи слід обмежувати точність класифікації?

λ

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

A: див. Попередню відповідь.

Якщо така шкода ефективності відбувається, чи якимось чином обмежений якимось фактором?

A: ідем.

Я вимірюю свою точність, використовуючи 10-кратний хрест, оскільки я також використовую для оцінки параметрів

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

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

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

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

A: див. Попередню відповідь. Подивіться на графіки гіперпараметра: чи зменшується настройка помилок і на скільки? З того, що ви говорите, настройка мало що робить.

Ви можете перевірити це наступним чином. Візьміть 70% -30% випробування на поїзд. Порівняйте прогнозовану ефективність:

  1. невстановлена ​​модель, що навчається на поїзді,
  2. 10-кратна настроєна модель CV підготовлена ​​на поїзді.

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


1

Я відповім за штучні нейронні мережі (ANN).

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

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

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



0

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


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