Las máquinas vectoriales de soporte son un problema de optimización. Están intentando encontrar un hiperplano que divida las dos clases con el margen más grande. Los vectores de apoyo son los puntos que caen dentro de este margen. Es más fácil de entender si lo construye de simple a más complejo.
SVM lineal de margen duro
En un conjunto de entrenamiento donde los datos son linealmente separables y usted está usando un margen rígido (no se permite holgura), los vectores de apoyo son los puntos que se encuentran a lo largo de los hiperplanos de apoyo (los hiperplanos paralelos al hiperplano divisor en los bordes del margen )
Todos los vectores de soporte se encuentran exactamente en el margen. Independientemente del número de dimensiones o del tamaño del conjunto de datos, el número de vectores de soporte podría ser tan pequeño como 2.
SVM lineal de margen suave
Pero, ¿y si nuestro conjunto de datos no se puede separar linealmente? Introducimos SVM de margen suave. Ya no requerimos que nuestros puntos de datos estén fuera del margen, permitimos que una cierta cantidad de ellos se desvíen de la línea hacia el margen. Usamos el parámetro de holgura C para controlar esto. (nu in nu-SVM) Esto nos da un margen más amplio y un mayor error en el conjunto de datos de entrenamiento, pero mejora la generalización y / o nos permite encontrar una separación lineal de datos que no es linealmente separable.
Ahora, el número de vectores de soporte depende de la holgura que permitamos y de la distribución de los datos. Si permitimos una gran cantidad de holgura, tendremos una gran cantidad de vectores de soporte. Si permitimos muy poca holgura, tendremos muy pocos vectores de soporte. La precisión depende de encontrar el nivel adecuado de holgura para los datos que se analizan. Algunos datos no será posible obtener un alto nivel de precisión, simplemente debemos encontrar el mejor ajuste que podamos.
SVM no lineal
Esto nos lleva a SVM no lineal. Todavía estamos tratando de dividir linealmente los datos, pero ahora estamos tratando de hacerlo en un espacio dimensional superior. Esto se hace mediante una función del kernel, que por supuesto tiene su propio conjunto de parámetros. Cuando traducimos esto de nuevo al espacio de características original, el resultado es no lineal:
Ahora, la cantidad de vectores de soporte aún depende de la holgura que permitamos, pero también depende de la complejidad de nuestro modelo. Cada giro y giro en el modelo final en nuestro espacio de entrada requiere uno o más vectores de soporte para definir. En última instancia, la salida de un SVM son los vectores de soporte y un alfa, que en esencia define cuánta influencia tiene ese vector de soporte específico en la decisión final.
Aquí, la precisión depende de la compensación entre un modelo de alta complejidad que puede sobreajustar los datos y un margen grande que clasificará incorrectamente algunos de los datos de entrenamiento en aras de una mejor generalización. La cantidad de vectores de soporte puede variar desde muy pocos hasta cada punto de datos si sobreajusta completamente sus datos. Esta compensación se controla a través de C y mediante la elección de kernel y parámetros del kernel.
Supongo que cuando dijo rendimiento se refería a la precisión, pero pensé que también hablaría del rendimiento en términos de complejidad computacional. Para probar un punto de datos utilizando un modelo SVM, debe calcular el producto escalar de cada vector de soporte con el punto de prueba. Por lo tanto, la complejidad computacional del modelo es lineal en el número de vectores de soporte. Menos vectores de soporte significa una clasificación más rápida de los puntos de prueba.
Un buen recurso:
un tutorial sobre máquinas de vectores de soporte para el reconocimiento de patrones