Ir al contenido

Lagrange, KKT y el problema dual

En simple: lee esto primero

El problema dual es otra forma de plantear el mismo SVM, en la que cada punto tiene un «precio» que dice cuánto empuja la frontera.

Imagínalo así

Imagina la frontera como una tabla y cada punto como una persona que puede empujarla. La mayoría ni la toca (precio 0); solo los que están pegados a ella empujan (precio positivo). Esos son los vectores de soporte.

Lo que tienes que llevarte
  • Un multiplicador de Lagrange (α) es el «precio» de una regla: cuánto mejorarías si la aflojaras un poquito.
  • KKT dice: si una regla no te estorba, su precio es 0; si te estorba, estás justo en el borde.
  • El dual solo usa productos punto entre puntos → eso abre la puerta al truco del kernel.
Palabras raras de esta página
restricción
una regla que la solución debe cumplir («no cruzar esta pared»).
Lagrangiano
el objetivo más «multas» por romper las reglas, todo en una sola fórmula.
primal / dual
dos versiones del mismo problema: una busca la frontera, la otra los precios de cada punto.
holgura complementaria
o la regla está «floja» (precio 0) o está «apretada» (en el borde); nunca ambas cosas a medias.

Más abajo viene la versión completa, con fórmulas. Si una palabra aparece subrayada con puntos, pasa el mouse (o tócala) para ver qué significa.

Todos los problemas de esta sección tienen la forma min⁡xJ(x)\min_x J(x) s.a. g(x)≥0g(x)\ge0. Ejemplo: minimizar J(x)=(x−3)2J(x)=(x-3)^2 con x≤1x\le1 (g(x)=1−x≥0g(x)=1-x\ge0). Sin la regla, x=3x=3 y J=0J=0. La pared lo prohíbe, así que la respuesta se desliza sobre la pared: x=1x=1, J=4J=4. Dos cosas pasaron: el valor empeoró, y J′(1)=−4≠0J'(1) = -4\ne0: «igualar la derivada a cero» ya no encuentra la respuesta.

Mejor pregunta: ¿cuánto vale esta regla? Si empujamos la pared un poco, ¿cuánto mejora el mejor valor? Esa tasa de cambio es el multiplicador.

  • Con la pared en cc: J⋆(c)=(c−3)2J^\star(c) = (c-3)^2 para c<3c<3. Su pendiente en c=1c=1 es 2(1−3)=−42(1-3) = -4: mover la pared ε\varepsilon mejora J⋆J^\star en ≈4ε\approx4\varepsilon (c=1.1c=1.1 da 3.61, una ganancia de 0.39≈4×0.10.39\approx4\times0.1). Esa tasa es α=4\alpha=4.
  • Más espacio nunca empeora, así que la pendiente nunca es positiva: α≥0\alpha\ge0.

¿Cuánto cuesta una regla? El multiplicador α

Minimiza J(x)=(x−3)2J(x)=(x-3)^2 sujeto a g(x)=c−x≥0g(x)=c-x\ge 0 (una pared en x = c). Mueve la pared y mira tres lecturas del mismo número α: precio, tasa y fuerza.

Primal: el óptimo se pega a la pared0123450246810xJ(x)
Mejor valor J*(c): su pendiente es −α0123450246810posición de la pared cJ*(c)
Dual: q(α) = minₓ L(x, α) = −α²/4 − α(c − 3). Su máximo coincide con el primal (brecha cero)02468-50510αq(α)
x*1.00
J* (primal)4.000
α* = 2(3 − c)₊4.00
q(α*) (dual)4.000
α*·g(x*)0.000
La pared aprieta (restricción activa, g = 0) y α = 4.00 > 0: empujar la pared ε hacia fuera mejora J* en ≈ 4.00ε. En x*, J′ = -4.00 ≠ 0, pero ∂L/∂x = J′ + α = 0: α es la fuerza que falta.

El Lagrangiano: una función que conoce el precio

Sección titulada «El Lagrangiano: una función que conoce el precio»
L(x,α)=J(x)−α g(x)=(x−3)2−α(1−x)⇒∂L∂x=2(x−3)+α=0⇒α=2(3−x)L(x,\alpha) = J(x) - \alpha\,g(x) = (x-3)^2-\alpha(1-x) \qquad\Rightarrow\qquad \frac{\partial L}{\partial x} = 2(x-3)+\alpha = 0 \Rightarrow \alpha = 2(3-x)

Una ecuación, dos incógnitas; lo cierra que hay solo dos finales posibles:

  • Pared holgada: no cuesta nada, α=0\alpha = 0, x=3x=3 (legal solo si c≥3c\ge3).
  • Pared apretada: la respuesta está sobre ella, x=cx=c, α=2(3−c)\alpha = 2(3-c).

Con x≤1x\le1 la primera rama quiere x=3x=3 (prohibido) ⇒ segunda: α=4\alpha = 4, el mismo 4 de la pendiente. Con x≤5x\le5, x=3x=3 ya es legal ⇒ α=0\alpha=0.

¿Por qué «fuerza»? En x=1x=1, J′(1)=−4J'(1)=-4: el objetivo todavía quiere ir a la derecha. Pero ∂L/∂x=−4+4=0\partial L/\partial x = -4+4 = 0: el multiplicador aporta exactamente el empujón que falta. Precio, tasa y fuerza son tres lecturas del mismo número; una regla que no presiona vale 0 en las tres.

min⁡u12+u22\min u_1^2+u_2^2 s.a. u1+u2−2≥0u_1+u_2-2\ge0. El óptimo es el punto de la recta más cercano al origen, (1,1)(1,1). Ahí ∇J=(2,2)=2∇g\nabla J = (2,2) = 2\nabla g ⇒ α=2\alpha=2. Si ∇J\nabla J no fuera paralelo a ∇g\nabla g, parte de −∇J-\nabla J apuntaría a lo largo del borde: podrías deslizarte, seguir legal y bajar. Solo cuando ∇J\nabla J apunta derecho hacia fuera del borde no queda a dónde ir.

El Lagrangiano es el problema con restricciones

Sección titulada «El Lagrangiano es el problema con restricciones»

Dale α\alpha a un oponente que elige cualquier α≥0\alpha\ge0 para hacer LL lo más grande posible, con xx congelado:

  • xx cumple con holgura (g>0g>0): −αg<0-\alpha g<0, lo mejor es α=0\alpha=0 ⇒ queda J(x)J(x).
  • xx viola (g<0g<0): −αg=α∣g∣-\alpha g = \alpha|g| crece sin límite ⇒ multa infinita.
  • xx justo en la pared (g=0g=0): el término se anula para todo α\alpha. Un precio positivo solo es posible aquí.
max⁡α≥0L(x,α)={J(x)g(x)≥0+∞g(x)<0⇒min⁡xmax⁡α≥0L=min⁡x: g(x)≥0J(x)\max_{\alpha\ge0}L(x,\alpha) = \begin{cases}J(x) & g(x)\ge0\\ +\infty & g(x)<0\end{cases}\qquad\Rightarrow\qquad \min_x\max_{\alpha\ge0}L = \min_{x:\,g(x)\ge0}J(x)

Jugar primero nosotros es el primal (min⁡xmax⁡αL\min_x\max_\alpha L); dejar que el oponente se comprometa primero es el dual (max⁡αmin⁡xL\max_\alpha\min_x L). Comprometerse primero solo puede perjudicar: max⁡min⁡≤min⁡max⁡\max\min\le\min\max (dualidad débil, vale para cualquier problema). Si además el objetivo es un bowl y las reglas son semiespacios (convexidad), la brecha es cero: dualidad fuerte, resolver uno resuelve el otro.

En el ejemplo: min⁡xL\min_x L da x=3−α/2x = 3-\alpha/2 y la función dual q(α)=2α−α2/4q(\alpha) = 2\alpha - \alpha^2/4. Maximizando: q′(α)=2−α/2=0⇒α⋆=4q'(\alpha)=2-\alpha/2=0\Rightarrow\alpha^\star=4, q(4)=4q(4)=4 = valor primal. Y x=3−4/2=1x = 3-4/2 = 1: el dual devolvió la respuesta sin mirar la restricción directamente.

L(w,b,α)=12∥w∥2−∑i=1nαi[yi(w⊤xi+b)−1],αi≥0L(\mathbf{w},b,\boldsymbol\alpha) = \tfrac12\|\mathbf{w}\|^2 - \sum_{i=1}^n \alpha_i\big[y_i(\mathbf{w}^\top\mathbf{x}_i+b)-1\big],\qquad \alpha_i\ge0

Los precios no interactúan (cada αi\alpha_i está en un solo término), así que el oponente juega el juego de una regla en cada punto. αi\alpha_i es cuánto presiona el punto ii sobre la frontera.

Primalmin ½‖w‖² s.a. yᵢ(wᵀxᵢ + b) ≥ 1LagrangianoL = ½‖w‖² − Σ αᵢ[yᵢ(wᵀxᵢ + b) − 1]Estacionariedadw = Σ αᵢyᵢxᵢ , Σ αᵢyᵢ = 0Dualmax Σαᵢ − ½ ΣΣ αᵢαⱼyᵢyⱼ xᵢᵀxⱼKernelxᵢᵀxⱼ → K(xᵢ, xⱼ)KKT: αᵢ ≥ 0 yαᵢ[yᵢf(xᵢ) − 1] = 0⇒ solo los vectoresde soporte importan
w y b desaparecen al sustituir las condiciones de estacionariedad: el dual solo toca los datos a través de productos internos xᵢᵀxⱼ. Ese es el enganche para los kernels.

En el óptimo de un problema convexo como este valen a la vez:

  1. Estacionariedad: ∇wL=0\nabla_\mathbf{w}L = 0, ∂L/∂b=0\partial L/\partial b=0.
  2. Factibilidad primal: yif(xi)≥1y_if(\mathbf{x}_i)\ge1.
  3. Factibilidad dual: αi≥0\alpha_i\ge0 (una pared empuja, nunca jala).
  4. Holgura complementaria: αi [yif(xi)−1]=0\alpha_i\,[y_if(\mathbf{x}_i)-1] = 0 para todo ii.

La 4 es un producto de dos no negativos forzado a 0: o el precio es cero o la restricción está apretada. Nadie puede estar lejos y ser caro:

  • Estrictamente fuera de la banda (yif>1y_if>1) ⇒ αi=0\alpha_i=0.
  • Precio positivo (αi>0\alpha_i>0) ⇒ yif=1y_if = 1: el punto está exactamente en una recta de margen.

Como w=∑iαiyixi\mathbf{w}=\sum_i\alpha_iy_i\mathbf{x}_i (abajo), todo punto con αi=0\alpha_i=0 no aporta nada: la frontera se construye solo con vectores de soporte. Esta es la prueba prometida. (Ojo: un punto puede tocar el margen y tener αi=0\alpha_i = 0; lo prohibido es «lejos y con precio».)

Paso 1 — estacionariedad:

∇wL=w−∑iαiyixi=0⇒w=∑iαiyixi∂L∂b=−∑iαiyi=0⇒∑iαiyi=0\nabla_\mathbf{w}L = \mathbf{w}-\sum_i\alpha_iy_i\mathbf{x}_i = 0\Rightarrow \boxed{\mathbf{w}=\sum_i\alpha_iy_i\mathbf{x}_i}\qquad \frac{\partial L}{\partial b} = -\sum_i\alpha_iy_i = 0\Rightarrow\boxed{\sum_i\alpha_iy_i = 0}

La primera es una receta para w\mathbf{w}; la segunda, una restricción sobre los precios. bb desaparece (por eso se recupera aparte).

Paso 2 — sustituir: L=12w⊤w−∑iαiyiw⊤xi−b∑iαiyi⏟=0+∑iαiL = \tfrac12\mathbf{w}^\top\mathbf{w}-\sum_i\alpha_iy_i\mathbf{w}^\top\mathbf{x}_i - b\underbrace{\sum_i\alpha_iy_i}_{=0}+\sum_i\alpha_i. Con la receta, ∑iαiyiw⊤xi=w⊤w\sum_i\alpha_iy_i\mathbf{w}^\top\mathbf{x}_i = \mathbf{w}^\top\mathbf{w}, así que L=∑iαi−12∥w∥2L = \sum_i\alpha_i-\tfrac12\|\mathbf{w}\|^2, y ∥w∥2=∑i,jαiαjyiyjxi⊤xj\|\mathbf{w}\|^2 = \sum_{i,j}\alpha_i\alpha_jy_iy_j\mathbf{x}_i^\top\mathbf{x}_j:

max⁡α W(α)=∑i=1nαi−12∑i=1n∑j=1nαiαjyiyj xi⊤xjs.a.αi≥0,  ∑iαiyi=0\boxed{\max_{\boldsymbol\alpha}\ W(\boldsymbol\alpha)=\sum_{i=1}^n\alpha_i-\frac12\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j\,\mathbf{x}_i^\top\mathbf{x}_j\quad\text{s.a.}\quad \alpha_i\ge0,\ \ \sum_i\alpha_iy_i=0}

Otra vez un QP convexo, ahora en nn variables αi\alpha_i (en vez de las d+1d+1 de (w,b)(\mathbf{w},b)). Por dualidad fuerte, max⁡W=min⁡12∥w∥2\max W = \min\tfrac12\|\mathbf{w}\|^2. Y los datos entran solo como productos internos xi⊤xj\mathbf{x}_i^\top\mathbf{x}_j: esa línea es toda la razón de existir de los kernels.

Vista primal: «¿dónde pongo la recta?». Vista dual: «¿cuánto empuja cada punto la recta?». Misma respuesta, otra pregunta.

∑iαiyi=0\sum_i\alpha_iy_i=0 dice que la presión total de la clase + equilibra la de la clase −: la frontera está en equilibrio.

  • w=∑iαiyixi\mathbf{w} = \sum_i\alpha_iy_i\mathbf{x}_i (solo vectores de soporte).
  • bb: toma un vector de soporte xk\mathbf{x}_k sobre su recta de margen: ykf(xk)=1y_kf(\mathbf{x}_k)=1; multiplicando por yky_k (yk2=1y_k^2=1): b=yk−w⊤xkb = y_k-\mathbf{w}^\top\mathbf{x}_k. En la práctica se promedia sobre todos esos kk (estabilidad numérica).
  • Predicción: y^(x)=sign⁡(∑iαiyi xi⊤x+b)\hat y(\mathbf{x}) = \operatorname{sign}\big(\sum_i\alpha_iy_i\,\mathbf{x}_i^\top\mathbf{x}+b\big): ni siquiera hace falta formar w\mathbf{w}.

El dual más pequeño y el ejemplo de la clase

Sección titulada «El dual más pequeño y el ejemplo de la clase»
Dos puntos: un parábola en una variable

x+=(1,1)\mathbf{x}_+=(1,1), y=+1y=+1; x−=(−1,−1)\mathbf{x}_-=(-1,-1), y=−1y=-1. La restricción α1−α2=0\alpha_1-\alpha_2=0 fuerza α1=α2=α\alpha_1=\alpha_2=\alpha. Con x+⊤x+=x−⊤x−=2\mathbf{x}_+^\top\mathbf{x}_+=\mathbf{x}_-^\top\mathbf{x}_-=2, x+⊤x−=−2\mathbf{x}_+^\top\mathbf{x}_-=-2:

W(α)=2α−12(α2⋅2+α2⋅2+2α2⋅2)=2α−4α2W(\alpha) = 2\alpha-\tfrac12(\alpha^2\cdot2+\alpha^2\cdot2+2\alpha^2\cdot2) = 2\alpha-4\alpha^2. W′=2−8α=0⇒α=14W'=2-8\alpha=0\Rightarrow\alpha=\tfrac14, W=14W=\tfrac14.

w=14(1,1)−14(−1,−1)=(12,12)\mathbf{w} = \tfrac14(1,1)-\tfrac14(-1,-1)=(\tfrac12,\tfrac12), b=1−w⊤x+=0b = 1-\mathbf{w}^\top\mathbf{x}_+ = 0, 12∥w∥2=14=W\tfrac12\|\mathbf{w}\|^2=\tfrac14 = W ✓ (dualidad fuerte).

Tres puntos: (2,0)+, (0,2)+, (0,0)− por el dual

Óptimo dual: α1=12\alpha_1=\tfrac12, α2=12\alpha_2=\tfrac12, α3=1\alpha_3=1.

  • Balance: 12+12−1=0\tfrac12+\tfrac12-1=0 ✓
  • w=12(2,0)+12(0,2)−1⋅(0,0)=(1,1)\mathbf{w}=\tfrac12(2,0)+\tfrac12(0,2)-1\cdot(0,0) = (1,1) ✓
  • b=1−(1,1)⊤(2,0)=−1b = 1-(1,1)^\top(2,0) = -1 ✓
  • W=∑αi−12∥w∥2=2−1=1W = \sum\alpha_i-\tfrac12\|\mathbf{w}\|^2 = 2-1 = 1 = primal ✓
  • Identidad gratis en margen duro: ∑iαi=∥w∥2=2\sum_i\alpha_i = \|\mathbf{w}\|^2 = 2 ✓

x4=(3,3)\mathbf{x}_4=(3,3) con y4f=5>1y_4f=5>1 ⇒ por holgura complementaria α4=0\alpha_4=0: bórralo y nada cambia.

Encuentra el óptimo del dual a mano

Puntos (2,0)⁺, (0,2)⁺ y (0,0)⁻. La restricción Σαᵢyᵢ = 0 obliga a α₃ = α₁ + α₂, así que el dual depende de dos números. Mueve α₁ y α₂ hasta maximizar W(α); el mapa muestra W (color más intenso = mayor).

00.20.40.60.8100.20.40.60.81α₁α₂
α = (α₁, α₂, α₃)(0.20, 0.70, 0.90)
W(α)0.7400
w = Σ αᵢyᵢxᵢ(0.40, 1.40)
½‖w‖² (primal)1.0600
W(α)=∑iαi−12∥∑iαiyixi∥2=2(α1+α2)−12[(2α1)2+(2α2)2]=0.7400W(\alpha) = \sum_i\alpha_i - \tfrac12\|\textstyle\sum_i\alpha_iy_i\mathbf{x}_i\|^2 = 2(\alpha_1+\alpha_2) - \tfrac12\big[(2\alpha_1)^2 + (2\alpha_2)^2\big] = 0.7400
Como W = 2α₁ − 2α₁² + 2α₂ − 2α₂², cada término es una parábola con máximo en ½. Fuera del óptimo, el valor dual W(α) queda por debajo del primal ½‖w*‖² = 1 (dualidad débil): todo α factible da una cota inferior.
El dual del ejemplo de tres puntos, sin atajos
  1. Productos internos: x1⊤x1=4\mathbf{x}_1^\top\mathbf{x}_1 = 4, x2⊤x2=4\mathbf{x}_2^\top\mathbf{x}_2 = 4, x1⊤x2=0\mathbf{x}_1^\top\mathbf{x}_2 = 0, y todo producto con x3=(0,0)\mathbf{x}_3 = (0,0) vale 0.
  2. Restricción de balance: α1+α2−α3=0⇒α3=α1+α2\alpha_1 + \alpha_2 - \alpha_3 = 0 \Rightarrow \alpha_3 = \alpha_1 + \alpha_2.
  3. Término cuadrático: solo sobreviven α12⋅4+α22⋅4\alpha_1^2\cdot4 + \alpha_2^2\cdot4 (los cruzados valen 0). Entonces W=(α1+α2+α3)−12(4α12+4α22)=2α1+2α2−2α12−2α22W = (\alpha_1+\alpha_2+\alpha_3) - \tfrac12(4\alpha_1^2+4\alpha_2^2) = 2\alpha_1 + 2\alpha_2 - 2\alpha_1^2 - 2\alpha_2^2.
  4. Derivadas: ∂W/∂α1=2−4α1=0⇒α1=12\partial W/\partial\alpha_1 = 2 - 4\alpha_1 = 0 \Rightarrow \alpha_1 = \tfrac12; igual α2=12\alpha_2 = \tfrac12; luego α3=1\alpha_3 = 1. Todos ≥0\ge 0 ✓.
  5. w=12(2,0)+12(0,2)−1⋅(0,0)=(1,1)\mathbf{w} = \tfrac12(2,0) + \tfrac12(0,2) - 1\cdot(0,0) = (1,1); con el vector de soporte x1\mathbf{x}_1: b=y1−w⊤x1=1−2=−1b = y_1 - \mathbf{w}^\top\mathbf{x}_1 = 1 - 2 = -1.
  6. Valores: W(α)=1+1−12−12=1W(\boldsymbol\alpha) = 1 + 1 - \tfrac12 - \tfrac12 = 1 y 12∥w∥2=1\tfrac12\Vert\mathbf{w}\Vert^2 = 1: brecha cero (dualidad fuerte). Los tres αi>0\alpha_i > 0: los tres puntos son vectores de soporte.
  • Kernels: los datos solo aparecen como xi⊤xj\mathbf{x}_i^\top\mathbf{x}_j → cámbialo por K(xi,xj)K(\mathbf{x}_i,\mathbf{x}_j) y la frontera se curva gratis.
  • Esparcidad explícita: la mayoría de αi\alpha_i son exactamente 0 ⇒ modelo chico y predicción rápida.
  • Intercambio de dimensión: nn variables sin importar dd: gana cuando hay muchísimas features (texto, genómica).
  • Interpretabilidad: αi\alpha_i ordena qué tan influyente fue cada punto.
  • Contra: necesita la matriz n×nn\times n de productos internos; con millones de puntos conviene el primal o SGD.

Autoevaluación

0/5 correctas · 0 respondidas
1. La holgura complementaria dice que…
2. El dual del SVM es un QP convexo.
3. ¿Cuál es FALSA sobre reconstruir w\mathbf{w} y bb?
4. La dualidad débil (max⁡min⁡≤min⁡max⁡\max\min \le \min\max)…
5. En el dual, los datos aparecen solo como…
from sklearn.svm import SVC
import numpy as np
X = np.array([[2, 0], [0, 2], [0, 0], [3, 3]]); y = np.array([1, 1, -1, 1])
svm = SVC(kernel='linear', C=1e6).fit(X, y) # C enorme ≈ margen duro
svm.support_ # índices de los vectores de soporte → [2, 0, 1] (no el (3,3))
svm.dual_coef_ # αᵢ·yᵢ de cada vector de soporte ≈ [[-1, 0.5, 0.5]]
svm.coef_, svm.intercept_ # ≈ w = (1, 1), b = −1 (tolerancia del solver)
w = svm.dual_coef_ @ svm.support_vectors_ # reconstruye w = Σ αᵢ yᵢ xᵢ

Fuente ·ML_Course_SVM.pdf (slides 31–49) · ML_Course/session-06b-dual-and-kernel-trick.ipynb