Kernelised k Vecino más cercano


12

Soy nuevo en kernels y he encontrado un inconveniente al intentar kernelise kNN.

Preliminares

Estoy usando un polinomio núcleo:
K(x,y)=(1+x,y)d

Su kNN euclidiano típico utiliza la siguiente métrica de distancia:
d(x,y)=||xy||

Deje que mapee x en algún espacio de características de dimensiones superiores. Entonces, el cuadrado de la métrica de distancia anterior en el espacio de Hilbert se puede expresar por productos internos: 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)

Tenga en cuenta que si dejamos lo anterior degenerará a su distancia euclidiana estándar.d=1


La pregunta

El principal problema que tengo es que no puedo ver cómo kernelising kNN produce mejores resultados como se muestra experimentalmente en, por ejemplo, este documento (¡advertencia, enlace pdf directo!).

Respuestas:


24

Teorema de la portada: En términos generales, dice que dado cualquier conjunto aleatorio de puntos finitos (con etiquetas arbitrarias), con alta probabilidad estos puntos pueden hacerse linealmente separables [1] asignándolos a una dimensión más alta [2].

Implicación: Genial, lo que este teorema me dice es que si tomo mi conjunto de datos y mapeo estos puntos a una dimensión superior, entonces puedo encontrar fácilmente un clasificador lineal. Sin embargo, la mayoría de los clasificadores necesitan calcular algún tipo de similitud como el producto de punto y esto significa que la complejidad temporal de un algoritmo de clasificación es proporcional a la dimensión del punto de datos. Entonces, una dimensión más alta significa una mayor complejidad de tiempo (sin mencionar la complejidad del espacio para almacenar esos puntos dimensionales grandes).

nfN(>>n)KxyK(x,y)=f(x),f(y)O(n)O(N)

f

¿La separabilidad lineal implica que los puntos de la misma clase se acercarán más que los puntos de diferentes clases? No, no existe tal garantía como tal. La separabilidad lineal no implica realmente que el punto de la misma clase se haya acercado o que los puntos de dos clases diferentes hayan llegado más lejos.

Entonces, ¿por qué funcionaría kNN? No necesita! Sin embargo, si lo hace, entonces se debe únicamente al núcleo.

x=(x1,x2)x(x12,2x1x2,x22)

Entonces, ¿por qué usar kernel kNN? Demostramos que la complejidad de cálculo del uso de núcleos es solo un poco más que el kNN habitual y si los datos se benefician del uso de núcleos, ¿por qué no usarlos de todos modos?

¿Hay algún documento que haya estudiado qué clase de datos pueden beneficiarse de los núcleos en kNN? Que yo sepa, no.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.