Support Vector Machine (SVM)

Hiperplanos óptimos como límites de decisión

Support vector machine (SVM) es un algoritmo de aprendizaje supervisado que se utiliza en muchos problemas de clasificación y regresión, incluidas aplicaciones médicas de procesamiento de señales, procesamiento del lenguaje natural y reconocimiento de imágenes y voz.

El objetivo del algoritmo SVM es encontrar un hiperplano que separe de la mejor forma posible dos clases diferentes de puntos de datos. “De la mejor forma posible” implica el hiperplano con el margen más amplio entre las dos clases, representado por los signos más y menos en la siguiente figura. El margen se define como la anchura máxima de la región paralela al hiperplano que no tiene puntos de datos interiores. El algoritmo solo puede encontrar este hiperplano en problemas que permiten separación lineal; en la mayoría de los problemas prácticos, el algoritmo maximiza el margen flexible permitiendo un pequeño número de clasificaciones erróneas.

Figura 1: Definición del “margen” entre clases: el criterio que los SVM pretenden optimizar

Definición del “margen” entre clases: el criterio que los SVM intentan optimizar.

Los vectores de soporte hacen referencia a un subconjunto de las observaciones de entrenamiento que identifican la ubicación del hiperplano de separación. El algoritmo SVM estándar está formulado para problemas de clasificación binaria; los problemas multiclase normalmente se reducen a una serie de problemas binarios.

Específicamente, support vector machines pertenecen a una clase de algoritmos de Machine Learning denominados métodos kernel, donde se puede utilizar una función de kernel para transformar las características. Las funciones de kernel asignan los datos a un espacio dimensional diferente, que suele ser superior, con la expectativa de que resulte más fácil separar las clases después de esta transformación, simplificando potencialmente los límites de decisión complejos no lineales para hacerlos lineales en el espacio dimensional de características superior asignado. En este proceso, los datos no se tienen que transformar explícitamente, lo que supondría una alta carga computacional. Esto se conoce como truco de kernel.

MATLAB® admite varios kernels, entre ellos:

Tipo de SVM Kernel de Mercer Descripción
Función de base radial (RBF) o gaussiana \(K(x_1,x_2) = \exp\left(-\frac{\|x_1 - x_2\|^2}{2\sigma^2}\right)\) Aprendizaje de una clase. \(\sigma\) representa la anchura del kernel.
Lineal \(K(x_1,x_2) = x_1^{\mathsf{T}}x_2\)
Aprendizaje de dos clases.
Polinómica \(K(x_1,x_2) = \left( x_1^{\mathsf{T}}x_2 + 1 \right)^{\rho}\)
\(\rho\) representa el orden del polinomio.
Sigmoide \(K(x_1,x_2) = \tanh\left( \beta_{0}x_1^{\mathsf{T}}x_2 + \beta_{1} \right)\)
Representa un kernel de Mercer solo para determinados valores \(\beta_{0}\) y \(\beta_{1}\).

El entrenamiento de support vector machine se asemeja a resolver un problema de optimización cuadrática para ajustar un hiperplano que minimice el margen flexible entre las clases. El número de características transformadas está determinado por el número de vectores de soporte.

Puntos clave:

  • Support vector machines son muy populares y logran un buen rendimiento en muchas tareas de clasificación y regresión.
  • Aunque los algoritmos SVM están formulados para la clasificación binaria, los algoritmos SVM multiclase se construyen combinando varios clasificadores binarios.
  • Los kernels hacen que los SVM sean más flexibles y capaces de gestionar problemas no lineales.
  • Para construir la superficie de decisión, solo se requieren los vectores de soporte seleccionados a partir de los datos de entrenamiento. Una vez terminado el entrenamiento, el resto de los datos de entrenamiento es irrelevante, produciendo una representación compacta del modelo que es adecuada para generar código de forma automatizada.

Ejemplo

Estos algoritmos también se pueden utilizar para detectar anomalías, creando un SVM de una clase cuyo límite de decisión determine si un objeto pertenece a la clase “normal” utilizando un umbral atípico. A continuación se muestra cómo MATLAB asigna todos los ejemplos a una sola clase en función de la fracción objetivo de valores atípicos como parámetro, de la siguiente forma: fitcsvm(sample,ones(…), ‘OutlierFraction’, …). La gráfica presenta los hiperplanos de separación para un rango de OutlierFractions para datos de una tarea de clasificación de actividad humana.

Detección de valores atípicos de HAR mediante un SVM de una clase

También puede consultar estos temas: Statistics and Machine Learning Toolbox, Modelos de Machine Learning, Modelos de Machine Learning, biomedical signal processing