Módulo 4 · Sesión 9

02 K vecinos más cercanos y máquinas de vectores de soporte

Clasificación Clasificación

Objetivos

  • Entender KNN como el clasificador más simple posible —no aprende parámetros, memoriza— y qué implica eso para su sesgo, su varianza y su costo en predicción.
  • Formular la SVM como el problema de maximizar el margen, entender el papel de los vectores de soporte y del hiperparámetro CC.
  • Comprender el truco del kernel: cómo una frontera no lineal sale de un clasificador lineal en un espacio que nunca se construye.
  • Saber qué tienen en común los tres clasificadores de la sesión (exigen escalado) y en qué se diferencian (forma de la frontera, costo, probabilidades).

1. K vecinos más cercanos (KNN)

La idea

Para clasificar un punto nuevo x\mathbf{x}: buscar los kk puntos de entrenamiento más cercanos y devolver la clase mayoritaria entre ellos (o, para probabilidades, la fracción de cada clase). No hay fase de entrenamiento: el “modelo” es el conjunto de datos. Es el caso extremo de un método no paramétrico.

La distancia habitual es la euclidiana, d(x,x)=xx2d(\mathbf{x}, \mathbf{x}') = \|\mathbf{x} - \mathbf{x}'\|_2, aunque cualquier distancia sirve (Manhattan, coseno para texto). Lo que siempre hace falta es que las variables estén en la misma escala: sin estandarizar, total_sulfur_dioxide (rango 6–440) domina la distancia y density (rango 0.99–1.04) no participa.

kk es la perilla sesgo-varianza

kkFronteraSesgoVarianza
k=1k = 1Sigue cada punto; memoriza el ruidoMínimoMáxima
kk moderado (15–50)Suave, localModeradoModerada
k=nk = nPredice siempre la clase mayoritariaMáximoNula

Es exactamente la curva en U de 05-sesgo-varianza-validacion.md, con kk en el eje de complejidad (al revés: kk pequeño = modelo complejo). Se elige con validación cruzada, como cualquier hiperparámetro.

Por qué KNN con k=1k=1 es el detector de fugas por duplicados

Si una fila de entrenamiento aparece también en validación, su vecino más cercano está a distancia cero y KNN con k=1k=1 acierta gratis. 02-clasificacion-aplicado.ipynb lo mide sobre Wine Quality: con las 1177 filas duplicadas dentro, KNN (k=1k=1) obtiene un F1 de 0.66 — mejor que la logística y que la SVM—; al quitarlas, 0.47. La fuga no solo inflaba un número, elegía al modelo equivocado, y favorecía sistemáticamente al que memoriza. Cualquier modelo con capacidad de memorizar (árboles profundos, boosting con muchas rondas) sufre la misma fuga en menor grado.

Costos

  • Entrenar: nada (guardar los datos).
  • Predecir: calcular nn distancias en pp dimensiones por cada punto nuevo, O(np)O(np). Con estructuras como KD-tree o Ball-tree mejora en dimensiones bajas, pero en alta dimensión degenera a fuerza bruta.
  • Maldición de la dimensionalidad: en muchas dimensiones, todos los puntos están a distancias parecidas y “el vecino más cercano” deja de ser informativo. KNN funciona bien con pocas variables relevantes y muchos datos; mal al revés.

2. Máquinas de vectores de soporte (SVM)

El margen

Para dos clases linealmente separables hay infinitos hiperplanos que las separan. La SVM elige el que está más lejos de los puntos más cercanos de cada clase: el que maximiza el margen. La intuición es que un hiperplano con margen amplio es más robusto a pequeñas perturbaciones de los datos —tiene menos varianza— que uno que pasa rozando.

Con etiquetas yi{1,+1}y_i \in \{-1, +1\} y frontera wx+b=0\mathbf{w}^\top\mathbf{x} + b = 0, el margen es 2/w2/\|\mathbf{w}\|, y maximizarlo equivale a

minw,b12w2sujeto ayi(wxi+b)1    i\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2 \quad \text{sujeto a} \quad y_i(\mathbf{w}^\top\mathbf{x}_i + b) \geq 1 \;\; \forall i

La solución depende solo de los puntos que quedan exactamente sobre el margen: los vectores de soporte. Mover o quitar cualquier otro punto no cambia la frontera. Esa es la diferencia estructural con la regresión logística, donde todos los puntos contribuyen al gradiente (menos los que ya están muy bien clasificados, que contribuyen poco).

Margen blando y el hiperparámetro CC

Con datos no separables (todos los reales), se permite que algunos puntos violen el margen, pagando una penalización ξi0\xi_i \geq 0 por cada uno:

minw,b,ξ12w2+Ci=1nξisujeto ayi(wxi+b)1ξi\min_{\mathbf{w}, b, \boldsymbol{\xi}} \frac{1}{2}\|\mathbf{w}\|^2 + C\sum_{i=1}^n \xi_i \quad \text{sujeto a} \quad y_i(\mathbf{w}^\top\mathbf{x}_i + b) \geq 1 - \xi_i

CC controla el compromiso:

  • CC grande: violar el margen es caro → margen estrecho que intenta clasificar bien todos los puntos de entrenamiento → baja regularización, alta varianza.
  • CC pequeño: se toleran violaciones → margen amplio, frontera más suave → alta regularización, alto sesgo.

Es decir, CC juega el papel de 1/λ1/\lambda, igual que en LogisticRegression. La función de pérdida implícita es la hinge loss max(0,1yif(xi))\max(0, 1 - y_i f(\mathbf{x}_i)): cero para los puntos correctamente clasificados y fuera del margen, lineal para los demás.

Kernels: fronteras no lineales sin construir el espacio

Si las clases no son separables por un hiperplano, se pueden mapear los datos a un espacio de mayor dimensión ϕ(x)\phi(\mathbf{x}) donde sí lo sean (por ejemplo, añadiendo x12,x22,x1x2x_1^2, x_2^2, x_1 x_2 — la regresión polinómica de 03-multicolinealidad-polinomica.md hacía lo mismo). El truco del kernel es que la solución de la SVM solo necesita productos punto ϕ(xi)ϕ(xj)\phi(\mathbf{x}_i)^\top\phi(\mathbf{x}_j), nunca ϕ\phi explícitamente. Una función kernel K(xi,xj)K(\mathbf{x}_i, \mathbf{x}_j) los calcula directamente:

KernelK(x,x)K(\mathbf{x}, \mathbf{x}')Espacio implícito
Linealxx\mathbf{x}^\top\mathbf{x}'El original
Polinómico(γxx+r)d(\gamma\,\mathbf{x}^\top\mathbf{x}' + r)^dTodos los monomios hasta grado dd
RBF (gaussiano)exp(γxx2)\exp(-\gamma\|\mathbf{x} - \mathbf{x}'\|^2)Dimensión infinita

El kernel RBF es el habitual por defecto. Su hiperparámetro γ\gamma controla el alcance de cada punto: γ\gamma grande → cada vector de soporte influye solo en su vecindad inmediata → frontera muy irregular (alta varianza); γ\gamma pequeño → influencia amplia → frontera casi lineal. CC y γ\gamma se afinan juntos, típicamente en una rejilla logarítmica, y son un caso natural para random search u Optuna (06-seleccion-hiperparametros.md).

Probabilidades

La SVM no produce probabilidades: produce la distancia con signo al hiperplano (decision_function). Para curvas ROC y PR basta con eso — solo hace falta un orden. Para comparar umbrales en la misma escala que la logística, SVC(probability=True) ajusta una regresión logística sobre esa distancia (calibración de Platt) con una validación cruzada interna, lo que multiplica el tiempo de entrenamiento. La calibración de probabilidades en general es un tema 🔵 opcional del módulo.

Costos

Entrenar una SVM con kernel escala entre O(n2)O(n^2) y O(n3)O(n^3): es la más lenta de los tres clasificadores de la sesión, y con más de unas decenas de miles de filas se vuelve poco práctica (en 02-clasificacion-aplicado.ipynb, con 4256 filas y probability=True, tarda alrededor de un segundo por ajuste frente a milisegundos de la logística). Para datos grandes, LinearSVC (sin kernel) o directamente boosting (S11).

3. Los tres clasificadores de la sesión, lado a lado

LogísticaKNNSVM (RBF)
FronteraLinealLocal, arbitrariaNo lineal, suave
Parámetros aprendidosp+1p+1 coeficientesNinguno (memoriza)Vectores de soporte y sus pesos
HiperparámetrosCC (regularización)kk, distanciaCC, γ\gamma, kernel
ProbabilidadesSí, nativasSí (fracción de vecinos, granular)No; Platt opcional
InterpretaciónRazones de momiosNinguna directaNinguna directa
Exige escaladoSí (por la regularización)Sí (por la distancia)Sí (por la distancia)
Costo de predicciónO(p)O(p)O(np)O(np)O(#soportep)O(\#\text{soporte} \cdot p)
Costo de entrenamientoBajoNuloAlto (O(n2)O(n^2)O(n3)O(n^3))

Sobre Wine Quality (02-clasificacion-aplicado.ipynb), con validación cruzada estratificada, los tres quedan en un AUC-ROC de 0.80–0.83 y una AP de 0.50–0.53. Ninguno de los tres domina; la frontera no lineal de la SVM apenas se nota sobre la logística. La sesión 10 mostrará que los ensambles de árboles sí mueven esa cifra, y 06-interpretabilidad.md explicará qué encuentran en las variables que estos tres no.

Resumen

ConceptoIdeaDónde reaparece
KNNMemorizar y votar; kk es la perilla sesgo-varianzaDetector de duplicados; base de DBSCAN y de UMAP (S12)
Margen máximoEl hiperplano más robusto es el más lejano a las clases
Vectores de soporteSolo los puntos del margen definen la frontera
CC y γ\gammaRegularización y alcance; se afinan juntosBúsqueda de hiperparámetros del proyecto
Truco del kernelFrontera no lineal sin construir el espacioPCA con kernel (S12, 🔵)

Notebook: 02-clasificacion-aplicado.ipynb.

Comprueba

¿Lo tienes claro?

Autoevaluación · 2 preguntas 1 / 2

La autoevaluación completa del módulo reúne las preguntas de todas sus lecciones.

Fin de la lección

Cuando la tengas clara, márcala y sigue con Métricas de clasificación, umbral y clases desbalanceadas.