Máquinas de Vectores de Soporte (SVM)

En este artículo hablamos de las máquinas de de vectores de soporte. También son conocidas con el acrónimo SVM por sus siglas en inglés (Support Vector Machines). Se pueden usar tanto para regresión como para clasificación.

Conceptualmente, los SVM son más fáciles de explicar para problemas de clasificación. En este artículo vamos a dar una explicación intuitiva. La máquinas de vectores de soporte surgen para encontrar la manera óptima de clasificar.

Datos de ejemplo

Vamos a usar estos datos de ejemplo. Suponemos que los puntos azules corresponden a la clase «azul» y los puntos rojos a la clase «rojo». Ahora intentaremos dibujar una línea que separe los puntos azules de los rojos. De esta forma, cuando haya un punto nuevo, podemos decir qué color va a tener, dependiendo del lado de la línea en el que se encuentre.

Datos de ejemplo para clasificación

Formas equivocadas de clasificar

A continuación veremos algunos ejemplos de formas equivocadas de clasificar.

Ejemplo I

En la siguiente figura, podemos decir que lo que esté a la izquierda de la línea, es azul y lo que esté a la derecha, es rojo. Sin embargo, el punto nuevo abajo a la izquierda es clasificado como azul. Intuitivamente, está mal clasificar este punto nuevo como azul.

Mala clasificación

Ejemplo II

La siguiente figura muestra otra forma equivocada de clasificar estos puntos. Podemos decir que cualquier punto que esté por lo alto de la línea será azul. Cualquiera que esté por debajo será rojo. Sin embargo, el nuevo punto a la derecha, ha sido «incorrectamente» clasificado como azul. Intuitivamente, diríamos que debería haber sido clasificado como rojo.

Mala Clasificacion 2

Clasificación óptima con máquinas de vectores de soporte

La línea que mejor distingue las zona de los puntos azules de la zona de los puntos rojos es la línea que maximiza el margen entre ambos. Las máquinas de vectores de soporte son una técnica de machine learning que encuentra la mejor separación posible entre clases. Con dos dimensiones es fácil entender lo que está haciendo. Normalmente, los problemas de aprendizaje automático tienen muchísimas dimensiones. Así que en vez de encontrar la línea óptima, el SVM encuentra el hiperplano que maximiza el margen de separación entre clases.

Clasificación óptima con Máquinas de Vectores de Soporte (SVM)

¿Por qué se llaman Máquinas de Vectores de Soporte?

Se llama «máquina» en español por la parte de «machine» learning. Los vectores de soporte son los puntos que definen el margen máximo de separación del hiperplano que separa las clases. Se llaman vectores, en lugar de puntos, porque estos «puntos» tienen tantos elementos como dimensiones tenga nuestro espacio de entrada. Es decir, estos puntos multi-dimensionales se representan con con vector de n dimensiones.

Vectores de Soporte en SVM

Regularización

Es bastante frecuente que los datos tenga ruido, que no estén etiquetados perfectamente, o que el problema sea tan difícil que para unos pocos puntos, sea muy complicado clasificarlos correctamente. Para estos casos, podemos decirle al SVM (Support Vector Machine), que preferimos que generalice bien para la mayoría de los casos, aunque algunos pocos casos del conjunto de entrenamiento no estén perfectamente clasificados. Recuerda que lo que normalmente vamos buscando es la construcción de modelos de aprendizaje automático que generalicen bien. Para controlar la cantidad de regularización, podemos usar el hiper-parámetro C, que hace las veces del inverso del alfa que vimos en las regularizaciones Ridge, Lasso y ElasticNet.

Regularización en Máquinas de Vectores de Soporte

El truco del kernel en SVM

Hay veces en las que no hay forma de encontrar una hiperplano que permita separar dos clases. En estos casos decimos que las clases no son linealmente separables. Para resolver este problema podemos usar el truco del kernel.

El truco del kernel consiste en inventar una dimensión nueva en la que podamos encontrar un hiperplano para separar las clases. En la siguiente figura vemos cómo al añadir una dimensión nueva, podemos separar fácilmente las dos clases con una superficie de decisión.

SVM kernel

Algunas aplicaciones de las máquinas de vectores de soporte

Las máquinas de vectores de soporte eran muy utilizadas antes de la era del aprendizaje profundo. Para muchas aplicaciones se prefería el uso de SVM en lugar de redes neuronales. La razón era que las matemáticas de los SVM se entiende muy bien y la propiedad de obtener el margen de separación máximo era muy atractivo. Las redes neuronales podrían realizar clasificación de forma equivocada como hemos visto en los ejemplos anteriores.

Algunos casos de éxito de las máquinas de vectores de soporte son:

  • reconocimiento óptico de caracteres
  • detección de caras para que las cámaras digitales enfoquen correctamente
  • filtros de spam para correo electrónico
  • reconocimiento de imágenes a bordo de satélites (saber qué partes de una imagen tienen nubes, tierra, agua, hielo, etc.)

Actualmente, las redes neuronales profundas tienen una mayor capacidad de aprendizaje y generalización que los SVM.

Resumen

Las Máquinas de Vectores de Soporte (Support Vector Machines) permiten encontrar la forma óptima de clasificar entre varias clases. La clasificación óptima se realiza maximizando el margen de separación entre las clases. Los vectores que definen el borde de esta separación son los vectores de soporte. En el caso de que las clases no sean linealmente separables, podemos usar el truco del kernel para añadir una dimensión nueva donde sí lo sean.

Recursos y Créditos

2 comentarios en «Máquinas de Vectores de Soporte (SVM)»

  1. Clara la explicación, entendí el concepto, muchas gracias, felicitaciones
    Hernán Valencia
    Lima-Perú

    Responder

Deja un comentario