Máquinas de Vectores de Soporte Support Vector Machines (SVM) Introducción al Reconocimiento de Patrones IIE - FING - UdelaR 2015 Bishop, Cap. 7 Schölkopf & Smola, Cap 7
Motivación Limitantes del perceptrón: Sólo contempla el caso linealmente separable No hay unicidad de la solución Limitantes de los métodos de Kernel: En training: irrealizable si se requiere evaluar k(x n, x m ) para todo par de muestras de entrenamiento En testing o clasificación de nuevo x: costo computacional de evaluar k(x, x n ) para todo x n de entrenamiento puede ser excesivo.
Cualidades de SVM Veremos que: Además: SVM busca el hiperplano separador (en el espacio transformado) que maximiza el margen SVM permite contemplar el caso no linealmente separable SVM permite controlar trade-off entre margen y errores en training Los parámetros del clasificador se determinan fácilmente, resolviendo un problema de optimización convexa En SVM la clasificación de nuevas muestras x depende de las k(x, x n ) sólo para un subconjunto extremadamente reducido del conjunto de entrenamiento
Problema de dos clases {(x 1, t 1 ), (x 2, t 2 ),..., (x N, t N )} conjunto de entrenamiento, x n X espacio de características, t n { 1, +1} etiqueta de clase. φ : X Y mapeo no lineal a un espacio de dimensión mayor, dim(y) > dim(x ). Superficie de decisión: g(x) = w T φ(x) + b, S = {x : g(x) = 0}. w b En el espacio Y: hiperplano de normal w y sesgo w. Clasificación: nueva muestra x se clasifica según signo(g(x)).
Conjunto de aprendizaje linealmente separables Problema linealmente separable Existe al menos un par (w, b) para el cual todas las muestras están bien clasificadas, i.e. n = 1,..., N, t n g(x n ) > 0. SVM: entre los (w, b) posibles, elegir aquél que corresponde al hiperplano separador de margen máximo. y g= 1 y g= 0 y g= 1
Clasificador de máximo margen Por qué? Maximizar el margen minimiza el error de generalización del clasificador (es intuitivo y se puede demostrar [Vapnik, 1996]) Tenemos: Distancia de un punto y = φ(x) al plano {g(x) = 0}: g(x) w. para cualquier hiperplano separador, g(x n ) = t n g(x n ), n = 1,..., N. Solución de máximo margen: { ( tn w T φ(x n ) + b ) } (P ) max w,b min n {1,...,N} w
Optimización del clasificador de máximo margen (P ) problema de optimización complejo. Se puede transformar en un problema equivalente (P ) sencillo de optimizar, observando que f n (w, b) = tn(wt φ(x n)+b) w es invariante ante escalados: λ > 0, f n (λw, λb) = f n (w, b). Podemos re-escalar para que t k (w T φ(x k ) + b) = 1 para el (o los) x k que realizan el margen. Con esa normalización, n = 1,..., N, t n (w T φ(x n ) + b) 1.
Optimización del clasificador de máximo margen Problema equivalente para clasificador de máximo margen: (P ) { minw,b 1 2 w 2 sujeto a t n (w T φ(x n ) + b) 1, n = 1,..., N. Puntos activos/inactivos: { = 1 si t n (w T xn punto activo φ(x n ) + b) > 1 x n punto inactivo. Al maximizar el margen habrá al menos dos puntos activos. (P ) es un problema de programación cuadrática fácil de resolver (e.g. solvers de Matlab, CVX, etc). (P ) (problema primal) admite una formulación aún más sencilla (problema dual) via las condiciones de KKT.
Paréntesis: condiciones de Karush-Kuhn-Tucker Consideramos el problema Dos posibilidades para la solución: { min f(x) s.t. g(x) 0 (i) x {g > 0}: entonces x mínimo local de f f(x) = 0. (ii) x {g = 0}: entonces debe ser f(x) {g = 0}, de lo contrario existiría x {g = 0} vecino de x con f(x ) < f(x). Como g(x) {g = 0}, λ 0 t.q. f(x) = λ g(x). Además debe ser λ > 0, de lo contrario existiría x {g > 0} vecino de x con f(x ) < f(x).
Paréntesis: condiciones de Karush-Kuhn-Tucker Definimos el Lagrangeano L(x, λ) = f(x) λg(x). Las dos situaciones de solución se resumen en una única (KKT): L = 0, λ 0, λg(x) = 0 x Obs.1: La solución (x, λ ) es un punto silla de L(x, λ): Ejercicio Demostrar (x, λ), L(x, λ) L(x, λ ) L(x, λ ). Obs.2: De Obs.1, la optimización correspondiente es (x, λ ) = arg min x max L(x, λ). λ 0
Vuelta al clasificador de máximo margen (caso separable) Teníamos (P ) { minw,b 1 2 w 2 sujeto a t n (w T φ(x n ) + b) 1, n = 1,..., N. Llamamos a = (a 1, a 2,..., a N ) a los multiplicadores de Lagrange: L(w, b, a) = 1 N ( 2 w 2 a n tn (w T φ(x n ) + b) 1 ). L N w = 0 w = a n t n φ(x n ) ( ) L b = 0 N a n t n = 0 ( ) Prob. equivalente: { minw,b max a L(w, b, a) s.t. N a nt n = 0, a n 0, n = 1,..., N
Optimización del clasificador de máximo margen (separable) Ejercicio Demostrar que L(w, b, a) = L(a) = N a n 1 2 N N m=1 El nuevo problema (llamado problema dual) queda: a n a m t n t m φ T (x n )φ ( x m ) } {{ } k(x n,x m) (D ) { maxa L(a) sujeto a N a nt n = 0, a n 0, n = 1,..., N. Problema de programación cuadrática más sencillo (involucra únicamente a los multiplicadores)
Clasificador de máximo margen (caso separable) Clasificación de una nueva muestra x: se evalúa el signo de g(x) = w T φ(x n ) + b ( ) = N a n t n k(x n, x) + b (veremos luego cómo calcular el margen b). Vectores de soporte: De las condiciones KKT, a n 0, t n g(x n ) 1 = 0, a n (t n g(x n ) 1) = 0. Dos tipos de muestra: (i) a n = 0 No influyen en la clasificación de una nueva muestra: g(x) = a n 0 a nt n k(x n, x) + b (ii) t n g(x n ) = 1 muestras que caen sobre los hiperplanos de máximo margen. Se llaman vectores de soporte (SV).
Clasificador de máximo margen (caso separable) Obs: en general #SV N etapa de testing muy rápida. Cuánto vale el margen b? Ejercicio Usando la def. de SV, mostrar que ( b = 1 t n ) a m t m k(x n, x m ). #SV x nsv x msv
Ejemplo XOR Ejercicio Queremos diseñar un clasificador para el problema XOR, en donde los puntos ( 1, 1) y (1, 1) son de la clase ω 1, y ( 1, 1) y (1, 1) son de la clase ω 2. Considerando el mapeo φ : R 2 R 6, y = φ(x 1, x 2 ) = [1, 2x 1, 2x 2, 2x 1 x 2, x 2 1, x2 2 ]T, demostrar que el problema se vuelve separable en el espacio transformado. Diseñar un clasificador de máximo margen para el problem. Especificar los hiperplanos (separador, y de márgenes) y el margen.
Ejemplo XOR Maximizar: L(a) = 4 a k 1 2 4 4 a n a m t n t m (x T n x m + 1) 2, m=1 sujeto a: a 1 a 2 + a 3 a 4 = 0, a n 0, n {1, 2, 3, 4}. La solución es a 1 = a 2 = a 3 = a 4 = 1/8 y b = 2. La función discriminante es g(x) = x 1 x 2.
Motivación Problema de dos clases Extensión multi-clase Caso no separable linealmente Caso no separable linealmente Idea: modificar la formulación anterior para autorizar algunos puntos mal clasificados en entrenamiento. Obs.: Definiendo una penalización para los errores, habrá un compromiso entre mayor margen (mejor generalización) y mayor cantidad de errores en entrenamiento. 0 si xn bien clasificado Penalización: ξn = tn g(xn ) si no Puntos en la frontera: g(xn ) = 0 ξn = 1 Puntos mal clasificados: ξn > 1
Caso no separable linealmente Caso no separable linealmente: C-SVM Remplazamos la condición de clasificación perfecta (hard margin): t n (w T φ(x n ) + b) 1, n = 1,..., N por la condición relajada (soft margin): t n (w T φ(x n ) + b) 1 ξ n, ξ n 0, n = 1,..., N Objetivo: maximizar el margen penalizando errores: { min 1 w,b 2 w 2 + C } N ξ n, C > 0 { tn (w s.t. T φ(x n ) + b) 1 ξ n, ξ n 0, n = 1,..., N. Pregunta Qué representa C? C?, C?
Caso no separable linealmente Optimización de C-SVM Ejercicio Demostrar que el Lagrangeano para C-SVM se escribe: L(w, b, a, µ) = 1 N 2 w 2 + C ξ n N ( a n tn (w T ) N φ(x n ) + b) 1 + ξ n µ n ξ n. Escribir las condiciones de optimalidad y KKT. Demostrar que el Lagrangeano del problema dual es: N L(a) = a n 1 N N a n a m t n t m k(x n, x m ), 2 con m=1 N a n t n, 0 a n C, n = 1,..., N.
Caso no separable linealmente C-SVM Clasificación de una nueva muestra x: se evalúa el signo de g(x) = N a n t n k(x n, x) + b. Vectores de soporte: verifican a n > 0, t n g(x n ) = 1 ξ n. Dos casos: (i) a n < C µ n > 0 µnξn=0 ξ n = 0: SV del lado correcto, fuera del margen (ii) a n = C Puede ser µ n = 0 si ξ n 1 bien clasificado; si ξ n > 1 mal clasificado.
Caso no separable linealmente C-SVM Margen: 0 < a n < C ξ n = 0 t n g(x n ) = 1 Idem que para hard margin, ( b = 1 t n ) a m t m k(x n, x m ), #SV x nsv x msv con SV = {x n : 0 < a n < C, n = 1,..., N}. Elección de parámetros: usualmente C y los parámetros del kernel se estiman conjuntamente usando Grid Search y validación cruzada, sobre el conjunto de entrenamiento.
Extensión multi-clase No hay una única forma de extender SVM. 1 Uno contra el resto: M clasificadores binarios, una clase y el resto para cada clase, g j (x) = w j T x + w j 0, j = 1,..., c. Luego una muestra nueva x se asigna a la clase con mayor discriminante, arg max j=1,...,c g j (x). Poco simétrico o balanceado. Regiones indefinidas. 2 Clasificación por pares: se consideran los c(c 1)/2 pares de clases, y para cada una se diseña un clasificador. Nueva muestra: se pasa por todos los clasificadores, y se asigna a la clase más votada. Hay que resolver más problemas, pero con menos muestras. Regiones indefinidas. 3 Error Correcting Output Coding: se generan L = log 2 c particiones binarias del conjunto de clases. A cada clase le corresponde un único código binario d = (d 1, d 2,..., d L) { 1, 1} L. Para cada partición se entrena un clasificador g 1,..., g L. Clasificación de nueva muestra x: a la clase más cercana a (g 1 (x),..., g L (x)) en distancia de Hamming.
Extensión multi-clase Ejemplo para Error Correcting Output Coding Ejercicio Aplicar esta metodología para clasificar los dígitos de la base USPS en 0, 1, 2,..., 9.