Як ви вже спостерігали за собою, ваш вибір функцій (вибір функції) може впливати на те, які гіперпараметри для вашого алгоритму є оптимальними, а які гіперпараметри, які ви вибрали для свого алгоритму, можуть впливати на те, який вибір функцій буде оптимальним.
Так, так, якщо ви дійсно піклуєтесь про те, щоб витіснити кожен свій відсоток продуктивності з вашої моделі, і ви можете дозволити собі необхідну кількість обчислень, найкращим рішенням, мабуть, є вибір функцій та налаштування гіперпарамтера "одночасно". Це, мабуть, непросто (залежно від того, як ви робите вибір функції). Я вважаю, що це працює, як мати різні набори функцій як кандидатів, а трактування вибору одного набору функцій з усіх цих наборів кандидатів вважати додатковим гіперпараметром.
На практиці це може бути насправді неможливо. Загалом, якщо ви не можете дозволити оцінити всі можливі комбінації, рекомендую:
Дуже слабко оптимізуйте гіперпараметри, щоб переконатися, що ви не присвоюєте надзвичайно погані значення деяким гіперпараметрам. Це часто можна зробити вручну, якщо ви добре розумієте свої гіперпараметри, або ви робите дуже коротку процедуру оптимізації гіперпараметрів, використовуючи лише купу функцій, які, як ви знаєте, інакше пристойно хороші.
Вибір функцій із гіперпараметрами, які, можливо, не на 100% оптимізовані, але принаймні не надто жахливі. Якщо у вас є принаймні дещо пристойно налаштований алгоритм машинного навчання, наявність хороших функцій буде суттєво важливішою для вашої роботи, ніж мікрооптимізаційні гіперпараметри. Надзвичайні приклади: Якщо у вас немає особливостей, ви нічого не можете передбачити. Якщо у вас є функція обману, яка містить ярлик класу, ви можете ідеально класифікувати все.
Оптимізуйте гіперпараметри за допомогою функцій, вибраних на кроці вище. Це має бути хорошим набором функцій зараз, де насправді варто трохи оптимізувати гіперпарами.
Для вирішення додаткового питання, яке Ніколас розмістив у коментарях, пояснюючи, як усі ці речі (вибір функцій, оптимізація гіперпараметрів) взаємодіють з перехресною валідацією k-кратного: я б сказав, що це залежить.
Кожного разу, коли ви використовуєте дані в одній із складок для чого-небудь взагалі, а потім оцінюєте ефективність у цій самій складці, ви отримуєте необ’єктивну оцінку ефективності (ви завищуєте продуктивність). Отже, якщо ви використовуєте дані у всіх складках для кроку вибору функції, а потім оцінюєте ефективність кожної з цих складок, ви отримаєте необ’єктивні оцінки ефективності для кожної з них (що не добре). Точно так само, якщо ви маєте оптимізацію гіперпараметрів, керовану даними, і використовуєте дані з певних складок (або всіх складок), а потім оцінюєте ті самі складки, ви знову отримаєте необ’єктивні оцінки ефективності. Можливі рішення:
Повторіть повний трубопровід у кожному складі окремо (наприклад, в межах кожного згину, зробіть вибір функції + оптимізація гіперпараметрів та модель навчання). Це означає, що перехресне підтвердження k-кратного давання дає вам неупереджені оцінки ефективності цього повного трубопроводу .
Розділіть свій початковий набір даних на "набір даних попередньої обробки" та "набір даних поїздів / тестів". Ви можете зробити свій вибір функції + оптимізацію гіперпараметрів на "попередній обробці даних". Потім ви виправляєте вибрані функції та гіперпараметри та робите k-кратну перехресну перевірку на наборі даних "поїзд / тест". Це означає, що перехресне підтвердження k-кратного давання дає вам неупереджені оцінки ефективності вашого алгоритму ML з урахуванням фіксованих значень набору функцій та гіперпараметрів .
Зверніть увагу, як ці два рішення призводять до дещо різних оцінок ефективності. Хто з них цікавіший, залежить від вашого використання, залежить від того, як ви плануєте розгортати свої рішення машинного навчання на практиці. Якщо ви, наприклад, компанія, яка має намір здійснити повний перелік функцій вибору функцій + оптимізація гіперпараметра + навчання, що працює автоматично кожен день / тиждень / місяць / рік / що завгодно, вам також буде цікаво виконання цього комплекту трубопроводу, і ви хочете першого рішення.
Якщо, з іншого боку, ви можете дозволити собі лише зробити вибір функції + оптимізацію гіперпараметрів один раз у своєму житті, а потім лише дещо регулярно перевчити свій алгоритм (з фіксованими значеннями функції та значення гіперпарами), то продуктивність лише цей крок стане тим, що вас цікавить, і ви повинні піти на друге рішення