Maximal Margin Classifier
Intuición: Imagina dos grupos de puntos en un plano. Queremos dibujar una línea que los separe. Hay infinitas líneas posibles. El clasificador de margen máximo elige la línea que está lo más lejos posible de ambos grupos. Esa distancia se llama "margen".
Fórmula explicada: max M sujeto a yᵢ(β₀ + β'xᵢ) ≥ M para toda i. M es el margen. yᵢ es +1 o -1 (clase). La restricción asegura que cada punto esté al menos a distancia M del hiperplano. Maximizar M da el hiperplano que más separa las clases.
Caso real: En clasificación de correos spam/no-spam con dos variables (% de palabras gratis, % de mayúsculas), el margen máximo traza la línea que mejor separa ambos tipos, dejando el mayor espacio vacío posible entre ellos.
Error común: Pensar que el margen máximo funciona con datos no separables. En realidad, si las clases se mezclan, no existe solución y se necesita el SVC con margen suave.
Support Vector Classifier
Intuición: El SVC (o margen suave) permite que algunos puntos estén del lado incorrecto de la línea o dentro del margen. El parámetro C controla cuánto lo permitimos. C grande → margen estrecho, pocos errores. C pequeño → margen ancho, más tolerancia.
Fórmula explicada: C Σ εᵢ + (1/2)||β||². εᵢ son variables de holgura que miden cuánto viola cada punto el margen. C es el "costo" de las violaciones. C → ∞: margen duro (sin errores). C → 0: margen muy ancho, muchos errores permitidos.
Caso real: En datos financieros donde el 5% de las transacciones son fraudulentas pero hay ruido, C=1 permite que algunas normales se clasifiquen como fraude (y viceversa), dando un margen razonable que generaliza mejor que C=100 (margen estrecho que sobreajusta).
Error común: Elegir C sin validación cruzada. C debe seleccionarse como cualquier hiperparámetro. Valores típicos: 0.1, 1, 10, 100.
Kernel Trick (RBF, Polynomial)
Intuición: El kernel trick permite clasificar datos que no son linealmente separables proyectándolos a un espacio de mayor dimensión SIN calcular explícitamente esa proyección. Es como tener un atajo matemático: en lugar de ir a la dimensión superior y volver, el kernel calcula directamente el producto interno en ese espacio.
Fórmula explicada: K(x, x') = φ(x)·φ(x'). RBF: K(x,x') = exp(-γ||x-x'||²). Mide "similitud" entre puntos: vale 1 si x=x' y tiende a 0 si están lejos. Polinomial grado d: K(x,x') = (x·x' + 1)^d. Captura interacciones entre variables hasta orden d.
Caso real: Clasificar imágenes de dígitos escritos a mano (MNIST). Con kernel RBF, SVM separa clases que en 784 dimensiones originales no son separables linealmente. El γ controla la "suavidad" de la frontera.
Error común: Usar kernel polinomial de grado alto (d>3). Tiende a sobreajustar y es computacionalmente costoso. RBF suele ser mejor para datos sin estructura conocida.
SVM en Econometría
Intuición: SVM se usa en econometría para clasificación con fronteras no lineales: predicción de default, clustering de patrones de consumo, clasificación de textos. Es especialmente útil cuando el número de variables es grande respecto a observaciones.
Fórmula explicada: f(x) = sign(Σ αᵢ yᵢ K(x, xᵢ) + b). Solo los support vectors (con αᵢ > 0) contribuyen a la predicción. Esto hace que SVM sea eficiente: ignora la mayoría de los datos y solo usa los puntos críticos cerca de la frontera.
Caso real: Clasificar empresas como "en riesgo de quiebra" vs "saludables" usando 50 ratios financieros. SVM con kernel RBF puede capturar interacciones no lineales entre los ratios que un logit lineal no capturaría.
Error común: No escalar las variables antes de usar SVM. SVM es sensible a la escala porque el kernel RBF usa distancias. Las variables con escalas grandes dominarán el kernel.
Support Vectors
Intuición: Los support vectors son los puntos de datos más cercanos al hiperplano de separación. Son los únicos que realmente importan: si mueves cualquier otro punto, el hiperplano no cambia. Si mueves un support vector, el hiperplano se ajusta. Son como los pilares que sostienen el margen.
Fórmula explicada: Los support vectors son aquellos con αᵢ > 0 en la solución dual. La solución del SVM depende solo de estos puntos. En la práctica, suele haber pocos support vectors (digamos 10-30% de los datos), lo que hace a SVM computacionalmente eficiente en la predicción.
Caso real: Con 10,000 transacciones para clasificar fraude, SVM puede usar solo 500 support vectors para definir la frontera. El resto de los datos no afectan la frontera. Esto hace que la predicción sea rápida.
Error común: Pensar que más support vectors es mejor. En realidad, si todos los puntos son support vectors, el SVM está sobreajustando. Un buen SVM tiene relativamente pocos support vectors.
Ventajas y Limitaciones de SVM
Intuición: SVM funciona muy bien en espacios de alta dimensión (p grande) y cuando hay una separación clara entre clases. Sin embargo, no da probabilidades directamente (necesita calibrarse), es sensible a la escala, y puede ser lento en datasets muy grandes (n > 100,000).
Fórmula explicada: SVM resuelve un problema de optimización cuadrática con restricciones lineales. La complejidad computacional es O(n²·p) en el peor caso, aunque implementaciones modernas (LIBSVM) usan heurísticas para acelerarlo.
Caso real: Para clasificar artículos de noticias en 5 categorías con 20,000 palabras (TF-IDF), SVM con kernel lineal es rápido y efectivo. Con kernel RBF y n=100,000, puede ser muy lento y se recomienda usar aproximaciones o pasar a redes neuronales.
Error común: Usar SVM para datasets enormes sin considerar alternativas. Con n > 100,000, Random Forest o XGBoost suelen ser más rápidos y dan resultados comparables.
Clasificación 2D no lineal: dos clases que forman círculos concéntricos.
Ninguna línea recta puede separar estos datos. Necesitamos una frontera circular. Aquí es donde el kernel trick se vuelve esencial.
RBF mide la similitud entre puntos. Puntos cercanos en el espacio original siguen cerca en el espacio transformado. La frontera circular en 2D se vuelve un hiperplano en el espacio de kernel.
En la simulación, puedes elegir entre kernel lineal, RBF y polinomial, y variar C entre 0.1, 1 y 10. Observa cómo cambia la frontera de decisión.
Clasificación 2D no lineal. Elige kernel y C para ver la frontera de decisión.