Чи слід завжди робити резюме?


9

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

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

Оскільки мій ПК не швидкий, резюме (і пошук по сітці) займає часом занадто багато часу. Зокрема, SVM ніколи не закінчується через безліч параметрів настройки. Таким чином, якщо я роблю резюме, мені потрібно вибрати порівняно невеликі дані.

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

Тож у мене зараз принаймні два варіанти.

  1. робіть резюме на невеликому наборі даних.
  2. використовувати відносно великий набір тренувань та валідацію без резюме.
  3. інша ідея.

Яка найкраща ідея? Теоретичні чи практичні думки вітаються.


1
Це питання, очевидно, повинно бути CW.
Х. Шиндо

1
Що таке велике? Скільки спостережень? Скільки функцій / змінних / регресорів?
Джим

1
Це залежить від ПК. А саме я не замислююся про "великі дані", для яких потрібні кілька комп'ютерів.
Х. Шиндо

Відповіді:


3

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

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

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

Ось кілька речей, які ви можете розглянути, щоб прискорити роботу:

  1. Тренуйте його з меншою кількістю функцій. Використовуйте вибір функції та / або зменшення розмірності, щоб зменшити розмір вашої проблеми
  2. Використовуйте попередньо збережене ядро ​​для SVM
  3. Використовуйте алгоритми, яким не потрібно вибирати гіпер параметри в сітці. Особливо лінійні, як-от логістична регресія з штрафною / ласо / пружною сіткою або навіть лінійною SVM. Залежно від реалізації, ці класифікатори можуть підходити для моделей для всіх гіперпараметрів у вибраному контурі за вартість встановлення лише одного
  4. скористайтеся швидшою реалізацією для вашого типу проблеми (вам доведеться гугл)

і навіть з повільнішим комп'ютером ви можете:

  1. Використовуйте більше ядер
  2. Використовуйте GPU

2

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

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

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

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

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

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

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