Kernelised k Найближчий сусід


12

Я новачок у ядрах і потрапив у корч, намагаючись ядро ​​kNN.

Прелімінарії

Я використовую поліноміальне ядро:
K(x,y)=(1+x,y)d

Ваш типовий евклідовий kNN використовує таку метрику відстані:
d(x,y)=||xy||

Нехай відображає у деякому просторі більш високих розмірів. Тоді квадрат вищевказаної метрики відстані в просторі Гільберта може бути виражений внутрішніми добутками: x d 2 ( f ( x ) , f ( y ) ) = K ( x , x ) - 2 K ( x , y ) + K ( y , y )f(x)xd2(f(x),f(y))=K(x,x)2K(x,y)+K(y,y)

Зауважте, що якщо дозволити вищенаведене буде вироджуватися до вашої стандартної евклідової відстані.d=1


Питання

Основна проблема, яку я маю, полягає в тому, що я не бачу, як кернелізація kNN дає кращі результати, як експериментально показано, наприклад, цією роботою (попередження, пряме посилання у форматі PDF!).

Відповіді:


25

Теорема обкладинки: Грубо сказано, вона говорить про будь-яку випадкову множину кінцевих точок (з довільними мітками), то з високою ймовірністю ці точки можна зробити лінійно відокремленими [1], відобразивши їх у більш високий вимір [2].

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

Хитрість ядра: Нехай - вихідний розмір точок даних, а - карта, яка відображає ці точки в простір розмірності . Тепер, якщо є функція яка бере входи і з вихідного простору і обчислює , то я можу обчислити крапковий добуток у просторі більш високого розміру, але за складністю замість .nfN(>>n)KxyК(х,у)=f(х),f(у)О(н)О(N)

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

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

То чому б kNN працював? Це не потрібно! Однак якщо це так, то це суто через ядро.

Що це означає? Розглянемо булева функція вектора . Коли ви використовуєте ядро ​​полінома другого ступеня, вектор особливості відображається у векторх=(х1,х2)х(х12,2х1х2,х22). З вектора булевих ознак, просто використовуючи поліном другого ступеня, ми отримали вектор особливості "сполучників". Таким чином, самі ядра виробляють кілька яскравих карт. Якщо ваші дані мають хороші оригінальні функції та якщо ваші дані можуть отримати користь від карт функцій, створених цими ядрами. Маючи на увазі, я маю на увазі, що функції, створені цими картами функцій, можуть наближати точки з одного класу ближче один до одного і відштовхувати точки від різних класів подалі, тоді kNN має перевагу від використання ядер. В іншому випадку результати не відрізнятимуться від результатів, отриманих від запуску kNN на вихідних даних.

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

Чи є якийсь документ, який вивчав, який клас даних може отримати користь від ядер в kNN? Наскільки я знаю, ні.

[1] http://en.wikipedia.org/wiki/Linear_separability
[2] http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=4038449&tag=1

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