martes, 23 de junio de 2009

Máquinas de Soporte Vectorial

Las Máquinas de Vectores Soporte son en la actualidad los algoritmos que más se están utilizando para todo tipo de tareas de inducción. Su sólido fundamento teórico y sus muchas y manejables implementaciones hacen que estén siendo muy utilizadas y constituyan el núcleo más numeroso de publicaciones en los foros más importantes del mundo sobre aprendizaje automático como el Journal of Machine Learning Research (JMLR), NIPS, ICML, ECML.



Sus orígenes...

Las SVM son clasificadores derivados de la teoría de aprendizaje estadístico postulada por Vapnik y Chervonenkis.

Fueron presentadas en 1992 y adquirieron fama cuando dieron resultados muy superiores a las redes neuronales en el reconocimiento de letra manuscrita, usando como entrada pixeles.

"Pretenden predecir a partir de lo ya conocido".

La máquina de vectores de soporte es un clasificador lineal que emplea la siguiente metodología:
  • Mapear los puntos de entrenamiento a un espacio vectorial mayor.
  • Construir un hiperplano que separe los puntos en sus clases respectivas.
  • Clasificar un punto nuevo de acuerdo a su ubicación con respecto al hiperplano de separación.
De esta manera se construye un hiplano de separación:



Hiperplano de separación

Dado que varios vectores w pueden generar el mismo hiperplano de separación, entonces, por cuestiones de estandarización, dicho vector debe escalarse de manera que la distancia entre el hiperplano y el patrón má cercano a este sea 1. Esto es lo que ilustra en la próxima figura:


Forma canónica del hiperplano

El propósito del entrenamiento es maximizar la distancia entre los patrones y el hiperplano de separación (para obtener un clasificador más confiable). Pero dado que w es inversamente proporcional a dicha distancia, este mismo problema se puede expresar como la minimización de w. Para esta operación se usan los multiplicadores de Lagrange:

Multiplicadores de Lagrange
El método más usado para entrenar SVM solucionando el problema dual es utilizando SMO (Sequential Minimum Optimization).

En el siguiente link se puede hallar una implementación en Java de SMO:
http://dm.hwanjoyu.org/svm-java/

No hay comentarios:

Publicar un comentario