Estoy trabajando en las SVM e intento que todos los conceptos estén implicados. Por ejemplo, el mapeo del kernel. Me gustaría construir algunas partes del algoritmo por mí mismo, para entender lo que está sucediendo.
Mi objetivo es crear una cartografía como la de esta imagen (tomada de aquí )
No entiendo muy bien cuáles son los valores de entrada y salida del kernel; para mapear los puntos de datos a la 3ª dimensión, la salida deberían ser los valores Z, ¿no? ¿Y la entrada son (vectores de) los valores X e Y?
Mi código (matlab) para obtener los valores z es:
z = exp(-( (abs(x-y).^2)./ (2*gamma^2) ));
Pero los valores z son sólo una curva de campana, nosotros tal:
Realmente no sé qué estoy haciendo mal, pero creo que confundo los conceptos de núcleo y mapeo (implícito/explícito).
¿Cómo puedo construir una función (matlab) que mapee los datos 2D al espacio 3D, utilizando la Función de Base Radial Gaussiana?
-- Editar -- Gracias al usuario27840 he conseguido que funcione, con el siguiente código de matlab:
gamma = 2;
D = squareform( pdist(data, 'euclidean') );
D = exp(-(D .^ 2) ./ ( 2*gamma^2));
z = sum(D);
El resultado es el siguiente gráfico en 3D, a partir de los datos originales en 2D:
-- Edición 2: -- Para aquellos que estén interesados en las máquinas de vectores de soporte de una clase; escribí una entrada en el blog sobre ello, utilizando la respuesta de este hilo: Introducción a la máquina de vectores de apoyo de una clase