Лінійне ядро ​​та нелінійне ядро ​​для підтримуючої векторної машини?


45

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


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

Відповіді:


66

Зазвичай рішення полягає в тому, щоб використовувати лінійне або ядро ​​RBF (він же Гауссова). Слід враховувати два основні фактори:

  1. Розв’язання проблеми оптимізації для лінійного ядра відбувається набагато швидше, див., Наприклад, LIBLINEAR.
  2. Як правило, найкраща прогнозована ефективність краща для нелінійного ядра (або принаймні настільки ж хорошого, як лінійне).

Було показано, що лінійне ядро ​​є виродженою версією RBF , отже, лінійне ядро ​​ніколи не є більш точним, ніж правильно налаштоване ядро ​​RBF. Цитуючи конспект із статті, яку я зв'язав:

Аналіз також вказує на те, що якщо був проведений повний вибір моделі за допомогою ядра Гаусса, немає необхідності враховувати лінійну SVM.

Основне правило роботи коротко висвітлено в практичному посібнику НТУ щодо підтримки векторної класифікації (додаток C).

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

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

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

TL; DR

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


1
У мене є таке пояснення хитрості ядра: stats.stackexchange.com/questions/131138/…

37

Ендрю Нг дає чудове правило пояснення у цьому відео, починаючи з 14:46, хоча все відео варто переглянути.

Ключові моменти

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

домовились ................
datmannz

1
посилання мертве: я думаю, що це те саме відео: youtube.com/watch?v=hDh7jmEGoY0
ihebiheb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.