SVM: hiperplano, margen, kernel y multiclase (OVO vs OVR) explicado de forma intuitiva


SVM: hiperplano, margen y kernel

El modelo obsesionado con encontrar la frontera perfecta

Ya hemos visto modelos que clasifican por vecindad, como K‑NN, preguntándose «¿a quién me parezco?». Otros lo hacen por probabilidad, como Naive Bayes, preguntándose «¿qué es lo más probable?». Y otros lo hacen por preguntas encadenadas, como los árboles de decisión.

Las SVM hacen algo distinto: dibujan fronteras.

Pero ojo, no cualquier frontera. Imagina que tienes que pintar una raya en el suelo para separar dos grupos de niños en un patio. Podrías pintarla pegada a un grupo, o torcida, o a ojo. Una SVM no: una SVM buscaría la raya que deje el mayor espacio libre posible a ambos lados, para que nadie la pise sin querer. Es, en esencia, un arquitecto obsesionado con la geometría, incapaz de conformarse con una frontera «que más o menos vale».

Diagrama comparando margen, hiperplano y kernels en SVM, junto con OVO vs OVR

Vamos al grano.


¿Qué es una SVM?

Una SVM (Support Vector Machine, o máquina de vectores de soporte) intenta encontrar un hiperplano que separe dos clases.

La palabra «hiperplano» asusta más de lo que debería. En realidad es solo el nombre elegante de «la frontera», y cambia de forma según cuántas dimensiones tengas:

  • En 2D es una simple línea.
  • En 3D es un plano (como una hoja de papel flotando en el aire).
  • En más dimensiones es una superficie que ya no podemos dibujar, pero que funciona igual.

Ahora bien, lo importante no es solo separar. Cualquiera separa dos grupos con una raya. Lo que hace especial a la SVM es esto:

La SVM busca el hiperplano que deje el mayor margen posible entre las clases.

Ese margen es la distancia entre la frontera y los puntos más cercanos de cada bando. Y aquí va la regla de oro: cuanto mayor es el margen, más robusta es la frontera.


La intuición: separar con el máximo margen

Imagina dos grupos de puntos en un plano, unos azules y otros rojos, claramente apartados. Hay infinitas líneas que podrían separarlos: una inclinada, una casi pegada a los rojos, una casi pegada a los azules… todas «funcionan» sobre el papel.

Pero solo una deja el mayor espacio posible entre ambos grupos, como un pasillo ancho por el que cabría un coche. Esa es la línea que quiere la SVM.

¿Por qué se obsesiona con el pasillo ancho? Piénsalo así: si mañana llega un punto nuevo, un poco desplazado por el ruido o el azar, una frontera con margen amplio aguanta el empujón sin equivocarse. Una frontera pegadita a un grupo, en cambio, se cruza a la primera de cambio. Por eso el margen grande generaliza mejor y es menos sensible al ruido: deja un colchón de seguridad.


Los «support vectors»: los puntos que mandan

Aquí viene un detalle precioso y muy poco intuitivo.

De todos tus datos, ¿sabes cuáles usa realmente la SVM para decidir dónde va la frontera? Solo un puñado. Los puntos que están justo al borde del pasillo, los que «tocan» el margen, son los llamados support vectors (vectores de soporte).

Y son los únicos que importan de verdad:

  • Si quitas un support vector, la frontera se mueve.
  • Si quitas cualquier otro punto (uno del montón, lejos de la frontera), no pasa absolutamente nada.

Es como cuando montas una tienda de campaña: la forma la sostienen las estacas del borde, no la tela del centro. Quita una estaca y toda la tienda se deforma; arruga la tela del medio y no cambia nada. La SVM es un modelo que solo aprende de los puntos críticos, e ignora al resto. Por eso es tan eficiente.


¿Y si los datos no se pueden separar con una línea?

Hasta ahora todo bonito… pero el mundo real casi nunca se deja separar con una raya recta. Aquí es donde entra la parte más ingeniosa de las SVM: el kernel.

El kernel es una función que permite a la SVM trabajar en un espacio de más dimensiones sin tener que calcularlo explícitamente (esto último se conoce como el kernel trick, y es lo que lo hace viable). Dicho en cristiano, es como si la SVM dijera:

«En este plano, tal como están las cosas, no consigo separar las clases. Pero si subo los datos a una dimensión más alta, de repente sí puedo.»

Los kernels más habituales son:

  • Lineal → cuando las clases ya están casi separadas de por sí. El más simple y rápido.
  • Polinómico → añade curvas a la frontera.
  • RBF (gaussiano) → crea fronteras suaves y muy flexibles.
  • Sigmoide → se comporta de forma parecida a una red neuronal.

De todos, el RBF es el más usado, porque funciona sorprendentemente bien en muchísimos problemas reales sin necesidad de pelearse demasiado con él. Si dudas por cuál empezar, empieza por ahí.


La intuición del kernel (sin una sola fórmula)

Este es el ejemplo que hace que todo encaje, así que léelo despacio.

Imagina dos círculos concéntricos, como una diana: los puntos rojos dentro, formando el círculo pequeño, y los azules fuera, rodeándolos. En 2D, sobre la mesa, no existe ninguna línea recta que separe el rojo del azul. Pruébalo mentalmente: cualquier raya que dibujes deja rojos y azules mezclados a ambos lados.

Ahora haz este truco: agarra el círculo rojo del centro y levántalo hacia arriba, como si tiraras del centro de un mantel y formaras una montaña. Los rojos suben, los azules se quedan abajo. Y de golpe, en ese espacio 3D, puedes separarlos con una simple hoja de papel horizontal deslizada entre la montaña y la base.

Eso es exactamente lo que hace un kernel: transforma el espacio para que una separación imposible se vuelva trivial. No cambia los datos; cambia el punto de vista.


SVM con más de dos clases: OVO vs OVR

Hay un pequeño problema: las SVM nacieron para separar solo dos clases (rojo o azul, sí o no). Entonces, ¿cómo se las apañan cuando tienes 4, 10 o 20 clases?

La respuesta es astuta: descomponen el problema grande en muchos duelos pequeños de dos en dos. Hay dos formas de organizar esos duelos.

1. One‑vs‑Rest (OVR): «yo contra el mundo»

Para cada clase, entrenas una SVM que la separa de todas las demás juntas. Con 4 clases (A, B, C, D) tendrías:

  • SVM A vs (B, C, D)
  • SVM B vs (A, C, D)
  • SVM C vs (A, B, D)
  • SVM D vs (A, B, C)

A la hora de predecir, cada SVM dice cuánta confianza tiene, y gana la que esté más segura.

Es como preguntar a cuatro especialistas, y cada uno solo sabe reconocer su clase: «¿esto es una A o no?», «¿esto es una B o no?»… Te quedas con el que responda con más rotundidad.

2. One‑vs‑One (OVO): «todos contra todos»

Aquí entrenas una SVM para cada par de clases. Con 4 clases salen 6 duelos:

  • A vs B, A vs C, A vs D
  • B vs C, B vs D
  • C vs D

En la predicción, cada modelo vota por una de las dos clases que le tocan, y gana la clase con más votos. Es un torneo de todos contra todos, como una liguilla en la que el equipo con más victorias se lleva el trofeo.

¿Cuál elegir?

One‑vs‑Rest (OVR) One‑vs‑One (OVO)
Nº de modelos K (uno por clase) K(K‑1)/2 (uno por pareja)
Cómo decide La SVM más confiada La clase más votada
Datos por modelo Desequilibrados (1 clase vs muchas) Más equilibrados (1 vs 1)
Ventaja Menos modelos, simple Fronteras más precisas
Inconveniente Se desequilibra si una clase es pequeña Muchos modelos si hay muchas clases

Para que se vea el salto de golpe: con 10 clases, OVR entrena 10 modelos, mientras que OVO entrena 45. Parece que OVR gana por goleada… pero cada modelo de OVO es más pequeño, más rápido de entrenar y ve datos más equilibrados, así que en la práctica OVO suele funcionar mejor. De hecho, es el enfoque por defecto en muchas librerías, como scikit‑learn.


El flujo completo de una SVM, de un vistazo

 


Ventajas de las SVM

  • Manejan fronteras complejas sin despeinarse, gracias a los kernels.
  • Son muy robustas al ruido, porque el margen amplio actúa de colchón.
  • Se concentran en lo que importa: solo los support vectors.
  • Funcionan bien en espacios de muchas dimensiones, donde otros modelos se pierden.
  • Son excelentes con datasets pequeños o medianos bien definidos.

Desventajas

  • No escalan bien a datasets enormes: con millones de ejemplos, el entrenamiento se vuelve pesado.
  • Elegir el kernel y sus parámetros puede ser delicado y requiere pruebas.
  • Son menos interpretables que un árbol o una regresión: cuesta más explicar por qué decidieron algo.
  • El entrenamiento puede ser lento.

Es justo por estas limitaciones (sobre todo la escala) por lo que hoy, en problemas masivos, se suele tirar de otros enfoques. Pero en su terreno (pocos datos, bien definidos, fronteras difíciles) siguen siendo imbatibles.


¿Cuándo usar una SVM?

  • Cuando las clases no se separan con una línea recta.
  • Cuando tienes pocos datos, pero bien definidos.
  • Cuando necesitas una frontera robusta que no se rompa con el ruido.
  • Cuando quieres un modelo potente sin meterte en redes neuronales.

En resumen

  • Una SVM busca el hiperplano con el máximo margen, el pasillo más ancho posible entre las clases.
  • Los support vectors son el puñado de puntos del borde que definen la frontera; el resto no cuenta.
  • El kernel permite separar clases imposibles cambiando el espacio, no los datos (recuerda la diana y la montaña).
  • Para varias clases: OVR es simple y usa pocos modelos; OVO es más preciso y suele ganar en la práctica.
  • Las SVM son potentes, robustas y brillantes en datasets pequeños o medianos.

Y si te quedas con una sola imagen: una SVM es ese arquitecto perfeccionista que, antes de trazar una raya, mide el espacio a ambos lados para dejar el pasillo más ancho posible. Esa manía por el margen es, precisamente, lo que la hace tan buena.