Як вибрати ядро ​​для SVM?


95

Під час використання SVM нам потрібно вибрати ядро.

Цікаво, як вибрати ядро. Якісь критерії вибору ядра?


який розмір проблеми? (# змінні, спостереження)?
user603

Я просто прошу узагальненого рішення, конкретної проблеми не вказано
xiaohan2012

Відповіді:


54

Ядро фактично є мірою подібності, тому вибір ядра відповідно до попередніх знань про інваріації, як це запропонував Робін (+1) - хороша ідея.

За відсутності експертних знань ядро ​​Radial Basis Function створює хороше ядро ​​за замовчуванням (як тільки ви встановите, це проблема, що вимагає нелінійної моделі).

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

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

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

і

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


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

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

34

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

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

  • Інваріантність : якщо є сімейні перетворення, які принципово не змінюють вашу проблему, ядро ​​повинно це відображати. Інваріація за обертанням міститься в гауссовому ядрі, але ви можете придумати багато іншого: переклад, гомотетія, будь-яке представлення групи,….
  • Що таке хороший роздільник? якщо ви маєте уявлення про те, що таке хороший сепаратор (тобто хороше правило класифікації) у вашій проблемі класифікації, це повинно бути включено у вибір ядра. Згадайте, що SVM надасть вам класифікатори форми

f^(x)=i=1nλiK(x,xi)

Якщо ви знаєте, що лінійний роздільник був би хорошим, тоді ви можете використовувати ядро, яке дає афіні функції (тобто ). Якщо ви вважаєте, що плавні межі набагато кращі в дусі гладкого KNN, тоді ви можете взяти ядро ​​гаусса ...K(x,xi)=x,Axi+c


У своїй відповіді ви згадали, що "Перевага" роботи з ядром полягає в тому, що ви змінюєте звичайну "евклідову" геометрію так, щоб вона відповідала вашій власній проблемі. Крім того, вам слід справді спробувати зрозуміти, в чому інтерес ядра. для вашої проблеми, що є особливим для геометрії вашої проблеми ". Ви можете дати кілька посилань для початку. Дякую.
Райхана

11

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


2
У мене таке ж відчуття
xiaohan2012

2
пошук сітки - це погана ідея, ви витрачаєте багато часу на пошук у тих районах, де продуктивність погана. Використовуйте алгоритми оптимізації без градієнтів, такі як симплексний метод Nelder-Mead, який набагато ефективніший на практиці (наприклад, fminsearch () в MATLAB).
Дікран Марсупіал

Ні, використовуйте графічні моделі або гауссові процеси для глобальної оптимізації в поєднанні з очікуваною інформацією. (Див. "Алгоритми оптимізації гіпер параметрів", Bergstra та ін., Майбутні NIPS)
bayerj

2

Загалом, ядро ​​RBF - це розумний перший вибір. Крім того, лінійне ядро ​​є особливим випадком RBF. Зокрема, коли кількість особливостей дуже велика, можна просто використовувати лінійне ядро.


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