Support Vector Machine
Reconocimiento de Patrones
M.I. Joseph Isaac Ramírez Hernández
Introducción
Reconocimiento de Patrones
• Introducido por Cortes y Vapnik en 1992 en su trabajo Support-vector
networks y es uno de los algoritmos más utilizados en el aprendizaje
máquina.
• Se basa en el funcionamiento de una red neuronal multicapa.
• Funciona muy bien en conjuntos de datos pequeños o medianos, esto
debido a su complejidad computacional.
Introducción
Reconocimiento de Patrones
• Objetivamente, ¿cuál de las siguientes rectas separa mejor ambas clases?
¡Todas! El perceptrón propuesto por McCulloch y Pitts converge en
Cualquiera de los tres caso, sin embargo, el objetivo del algoritmo SVM
es encontrar la solución óptima
Funcionamiento intuitivo
Reconocimiento de Patrones
• La idea del funcionamiento del SVM
es formar un hiperplano ℋ que
separe las dos clases manteniendo
la mayor distancia posible. Esta
distancia es llamada margen y se
denota por la letra M.
Funcionamiento intuitivo
Reconocimiento de Patrones
• Los vectores que se encuentran
sobre las rectas de margen M se
denominan vectores de soporte.
• El objetivo del algoritmo es
encontrar los vectores de soporte
que permitan separar en mejor
medida las clases.
Funcionamiento intuitivo
Reconocimiento de Patrones
• Después del proceso de
entrenamiento, una vez
encontrados los vectores de
soporte se pueden eliminar los
puntos que no son vectores de
soporte. Esto ayuda en el proceso
de alojamiento de datos.
Funcionamiento
Reconocimiento de Patrones
• Se tiene un vector w ⃗ , el cual es
llamado vector de pesos. Este
vector es ortogonal al hiperplano. ŷ = ⟨ w ,⃗ x ⟩⃗ + b
• Considere un vector de entrada x⃗
(vector de características). Donde b se denomina bias o
• La salida del algoritmo se calcula polarizador y ⟨ ⋅ , ⋅ ⟩ es el
utilizando la siguiente expresión producto interno
Funcionamiento
Reconocimiento de Patrones
• El clasi icador utilizará esta salida para veri icar si el punto es o no de
una clase, por ejemplo.
w⃗
ℋ Si ⟨ w ,⃗ x ⟩⃗ + b > 0 entonces
Si ⟨ w ,⃗ x ⟩⃗ + b ≤ 0 entonces
f
f
Funcionamiento
Reconocimiento de Patrones
• El clasi icador debe considerar un margen M.
w⃗
ℋ Si ⟨ w ,⃗ x ⟩⃗ + b > M entonces
Si ⟨ w ,⃗ x ⟩⃗ + b ≤ − M entonces
f
Funcionamiento
Reconocimiento de Patrones
El punto ⃗
⋆ ⃗
x es un vector de soporte si ⟨ w ,⃗ x ⟩ + b = ± M
⋆
w⃗
ℋ
1
La distancia óptima es
|| w ⃗||
Funcionamiento
Reconocimiento de Patrones
• Dado un hiperplano ŷ = ⟨ w ,⃗ x ⟩⃗ + b
con un vector de pesos ijo y un bias
(2 )
ijo es necesario calcular el margen M. 1 T
min w w entonces
Lo que se desea es que dicho margen
sea lo máximo posible, por lo que se
buscan valores de w ⃗ y b óptimos.
f
f
Problema ¡los datos no son linealmente separables! :(
Reconocimiento de Patrones
• Si los datos no son
linealmente separables,
entonces se hace uso de un
Kernel.
• Dicho kernel mapea
vectores de características
a un espacio de Hilbert.
De inición
Reconocimiento de Patrones
n n
De inición: Una función K(x, y) de inida en ℝ × ℝ es llamada kernel si
existe un mapeo ϕ en el espacio n-euclideano al espacio de Hilbert ℍ.
n
ϕ:ℝ ⟶ℍ x ↦ ϕ(x)
Tal que K(x, y) = ⟨ϕ(x), ϕ(y)⟩, donde ⟨ ⋅ , ⋅ ⟩ denota el producto interno
en el espacio de Hilbert.
f
f
f
Kernel Lineal
Reconocimiento de Patrones
+
De inición: Sean β1, β2 ∈ ℝ de inidos como la pendiente y la ordenada
respectivamente. La función de la forma
K(x, y) = β1⟨x, y⟩ + β2
Es llamado kernel lineal.
f
f
Kernel Polinomial
Reconocimiento de Patrones
De inición: Sea d un entero positivo, la función de orden d de la forma
d
K(x, y) = (⟨x, y⟩ + c)
donde c ≥ 0 es llamado kernel polinomial. Si c es cero, se dice que
K es un kernel homogéneo.
f
Kernel Gaussiano
Reconocimiento de Patrones
2
De inición: Sea γ un factor de la forma γ = 1/2σ siempre positivo. El kernel
guassiano se de ine como
2
K(x, y) = exp(−γ | | x − y | | )
donde exp representa la función exponencial base e y | | ⋅ | | representa
la magnitud de un vector en el espacio n-euclideano.
f
f
Actividad
Reconocimiento de Patrones
• ¿Cómo es el mapeo ϕ en el kernel gaussiano? Encuentre el mapeo
2
utilizando vectores de ℝ .
• Implemente el SVM para el conjunto de datos cardiovascular. Implemente
los diferentes kernel y encuentre el mejor porcentaje de clasi icación. ¡No
olvide escalar los datos!