Чи слід використовувати тест ядра, коли це можливо для нелінійних даних?


13

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

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

Відповіді:


8

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

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

Існують щонайменше три хороших, загальних альтернативи для розмежування моделі:

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

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


10

Ціна, яку ви платите за трюк ядра в цілому, за лінійні методи, має гірші межі узагальнення. Для лінійної моделі його розмір VC також лінійний за кількістю розмірів (наприклад, розмір VC для Perceptron є d + 1).

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

Підтримка векторних машин використовує трюк ядра найефективніше, роблячи дві речі:


1
"також є лінійним щодо кількості ваг" з точки зору простору, а не кількості ваг. Ви можете мати лінійний класифікатор, параметризований на стільки ваг, скільки ви хочете, але його розмір VC все ще d + 1 (де d - розмірність простору). "розмірність VC для моделей SVM пов'язана з кількістю векторів підтримки" Як саме розмір VC реалізований на кількість SV? Мені відомо про обмеження жорсткої маржі, але афаїк у випадку м'якої маржі такого відношення не існує. Навіть у межах складності Радамачера ви не знайдете кількість СВ як змінну.
лейлот

Крім того, "наскільки я не має значення, наскільки" великим "є цільовий простір ядра, ви нічого не втрачаєте з точки зору зв'язаного узагальнення", наскільки я знаю, абсолютно помилково. Простіри з високими розмірами призведуть до втрати можливостей узагальнення навіть при такій сильно регульованій моделі, як SVM.
lejlot

1
@lejlot Спасибі, виправили перші дві помилки. Мені потрібен певний час, щоб познайомитися з вашими останніми двома зауваженнями - я спробую вдосконалити відповідь та надати деякі джерела, після того як я перевірте свою інформацію :)
BartoszKP

1
Зараз це майже правильно, але в чому причина припущення, що розмір простору ядра не має значення? Візьміть будь-який набір даних, запустіть SVM з ядром RBF та C-> inf, і ви будете сильно переробляти. Це не так просто. Кількість розмірів у просторі зображень є релевантною , але вона може бути керована C (як верхня межа множників лагранжу). Зокрема - розмір VC для SVM з RBF є нескінченним, а зв'язане узагальнення (Vapnik) марне (Radamacher міг би працювати, але це зовсім інша історія).
лейлот

1
@lejlot Я дав ще одне посилання - вони забезпечують чітке обмеження для випадку з обмеженою границею явно, і це не залежить від кількості вимірів.
BartoszKP

6

Я спробую надати нетехнічну відповідь на ваше запитання.

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

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

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

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