Está en la página 1de 133

ANALYTICS 2

Miguel Mejía Puente


Unidad 1 - Análisis de conglomerados,
clasificación y clusterización
1. Introducción
2. Clasificación y agrupación
3. Análisis discriminante lineal
4. Análisis de conglomerados
5. Clasificador K-vecinos más cercanos
6. Máquinas de Vectores de Soporte
7. Clasificador Bayesiano (Naïve Bayes)

6/9/2022 Miguel Mejía Puente 2


Aprendizaje Estadístico
James, Gareth; Witten, Daniela; Hastie, Trevor; Tibshirani,
Robert (2013). An Introduction To Statistical Learning with
Applications in R.
Aprendizaje Estadístico (Statistical Learning)
El aprendizaje estadístico se refiere a un conjunto de herramientas para
modelar y comprender conjuntos de datos complejos. Es un área
recientemente desarrollada en estadística y se combina con desarrollos
paralelos en informática y, en particular, aprendizaje automático. El
campo abarca muchos métodos, como árboles de decisión (decision
trees), embolsado e impulsado (bagging & boosting) y máquinas de
vectores de soporte (support vector machines).

6/9/2022 Miguel Mejía Puente 4


Máquinas de Vectores de Soporte (SVM,
Support Vector Machines) - 1
La Máquina de Vectores de Soporte o MVS (SVM, Support Vector Machine)
es un enfoque para la clasificación que se desarrolló en la comunidad
informática en la década de 1990 y que ha ganado popularidad desde
entonces. Se ha demostrado que las MVS funcionan bien en una variedad de
entornos y, a menudo, se consideran uno de los mejores clasificadores "fuera
de la caja".

La MVS es una generalización de un clasificador simple e intuitivo llamado


Clasificador de Máximo Margen (Maximal Margin Classifier).

6/9/2022 Miguel Mejía Puente 5


Máquinas de Vectores de Soporte (SVM,
Support Vector Machines) - 2
Aunque es elegante y sencillo, este clasificador no se puede aplicar a la
mayoría de los conjuntos de datos, ya que requiere que las clases sean
separables por un límite lineal. El Clasificador de Vectores de Soporte o CVS
(SVC, Support Vector Classifier) es una extensión del Clasificador de Máximo
Margen que se puede aplicar en una gama más amplia de casos. La MVS es
una extensión adicional del CVS para acomodar los límites de clase no
lineales. Las MVS están diseñadas para la configuración de clasificación
binaria en la que hay dos clases.

6/9/2022 Miguel Mejía Puente 6


Clasificador de Máximo
Margen
James, Gareth; Witten, Daniela; Hastie, Trevor; Tibshirani,
Robert (2013). An Introduction To Statistical Learning with
Applications in R.
Hiperplano - 1
En un espacio de dimensión p, un hiperplano es un subespacio afín plano de
dimensión de hiperplano p−1. Por ejemplo, en dos dimensiones, un
hiperplano es un subespacio unidimensional plano, en otras palabras, una
línea. En tres dimensiones, un hiperplano es un subespacio bidimensional
plano, es decir, un plano. En p > 3 dimensiones, puede ser difícil visualizar un
hiperplano, pero la noción de un subespacio plano de (p−1) dimensiones aún
se aplica.

6/9/2022 Miguel Mejía Puente 8


Hiperplano - 2
La definición matemática de un hiperplano es bastante simple. En dos
dimensiones, un hiperplano se define por la ecuación

𝛽𝛽0 + 𝛽𝛽1 𝑋𝑋1 + 𝛽𝛽2 𝑋𝑋2 = 0 (𝑖𝑖)

para los parámetros 𝛽𝛽0 , 𝛽𝛽1 y 𝛽𝛽2 . Cuando decimos que la ecuación (𝑖𝑖) "define"
el hiperplano, queremos decir que cualquier 𝑋𝑋 = 𝑋𝑋1 , 𝑋𝑋2 𝑇𝑇 para el cual se
cumple la ecuación (𝑖𝑖) es un punto en el hiperplano. Nótese que la ecuación
(𝑖𝑖) representa una recta, ya que en dos dimensiones un hiperplano es una
recta.

6/9/2022 Miguel Mejía Puente 9


Hiperplano - 3
La ecuación (𝑖𝑖) se puede extender fácilmente a la configuración p-
dimensional:
𝛽𝛽0 + 𝛽𝛽1 𝑋𝑋1 + 𝛽𝛽2 𝑋𝑋2 … + 𝛽𝛽𝑝𝑝 𝑋𝑋𝑝𝑝 = 0 (𝑖𝑖𝑖𝑖)

define un hiperplano n-dimensional, de nuevo en el sentido de que si un


𝑇𝑇
punto 𝑋𝑋 = 𝑋𝑋1 , 𝑋𝑋2 , … , 𝑋𝑋𝑝𝑝 es un espacio p-dimensional (es decir, un vector
de longitud p) satisface la ecuación (𝑖𝑖𝑖𝑖), entonces 𝑋𝑋 se encuentra en el
hiperplano.

6/9/2022 Miguel Mejía Puente 10


Hiperplano - 4
Ahora, suponga que 𝑋𝑋 no satisface la ecuación (𝑖𝑖𝑖𝑖); más bien,

𝛽𝛽0 + 𝛽𝛽1 𝑋𝑋1 + 𝛽𝛽2 𝑋𝑋2 … + 𝛽𝛽𝑝𝑝 𝑋𝑋𝑝𝑝 > 0 (𝑖𝑖𝑖𝑖𝑖𝑖)

Entonces esto nos dice que 𝑋𝑋 se encuentra a un lado del hiperplano. Por otro
lado, si
𝛽𝛽0 + 𝛽𝛽1 𝑋𝑋1 + 𝛽𝛽2 𝑋𝑋2 … + 𝛽𝛽𝑝𝑝 𝑋𝑋𝑝𝑝 < 0 (𝑖𝑖𝑣𝑣)

entonces 𝑋𝑋 se encuentra al otro lado del hiperplano.

6/9/2022 Miguel Mejía Puente 11


Hiperplano - 5
Entonces podemos pensar en el hiperplano como si dividiera el espacio p-
dimensional en dos mitades. Uno puede determinar fácilmente de qué lado
del hiperplano se encuentra un punto simplemente calculando el signo del
lado izquierdo de la ecuación (𝑖𝑖𝑖𝑖). En la Figura 1 se muestra un hiperplano en
un espacio bidimensional.

6/9/2022 Miguel Mejía Puente 12


Figura 1

Se muestra el hiperplano
1 + 2𝑥𝑥1 + 3𝑥𝑥2 = 0. La
región azul es el conjunto
de puntos para los cuales
1 + 2𝑥𝑥1 + 3𝑥𝑥2 > 0, y la
región roja es el conjunto
de puntos para los cuales
1 + 2𝑥𝑥1 + 3𝑥𝑥2 < 0.

6/9/2022 Miguel Mejía Puente 13


Clasificación utilizando un hiperplano de
separación - 1
Supongamos ahora que tenemos una matriz de datos 𝑋𝑋 de orden n x p que
consta de n observaciones de entrenamiento en un espacio p-dimensional,

𝑥𝑥11 𝑥𝑥𝑛𝑛1
. .
𝑥𝑥1 = . ,…, 𝑥𝑥 = .
𝑛𝑛
. .
𝑥𝑥1𝑝𝑝 𝑥𝑥𝑛𝑛𝑝𝑝

y que estas observaciones se dividen en dos clases, es decir, 𝑦𝑦1 , 𝑦𝑦2 , … , 𝑦𝑦𝑝𝑝 ∈
−1, +1 donde −1 representa una clase y +1 otra clase.

6/9/2022 Miguel Mejía Puente 14


Clasificación utilizando un hiperplano de
separación - 2
También tenemos una observación de prueba, un p-vector de características
∗ ∗ ∗ ∗ 𝑇𝑇
observadas 𝑥𝑥 = 𝑥𝑥1 , 𝑥𝑥2 , … , 𝑥𝑥𝑝𝑝 .

Nuestro objetivo es desarrollar un clasificador basado en los datos de


entrenamiento que clasifique correctamente la observación de la prueba
utilizando sus mediciones de características. Este enfoque se basa en el
concepto de un hiperplano de separación (separating hyperplane).

6/9/2022 Miguel Mejía Puente 15


Clasificación utilizando un hiperplano de
separación - 3
Suponga que es posible construir un hiperplano que separe perfectamente
las observaciones de entrenamiento de acuerdo con sus etiquetas de clase.
En el panel de la izquierda de la Figura 2 se muestran ejemplos de tres
hiperplanos que se separan. Podemos etiquetar las observaciones de la clase
azul como 𝑦𝑦𝑖𝑖 = +1 y las de la clase roja como 𝑦𝑦𝑖𝑖 = −1. Entonces un
hiperplano de separación tiene la propiedad de que

𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 > 0 SI 𝑦𝑦𝑖𝑖 = +1

6/9/2022 Miguel Mejía Puente 16


A la izquierda hay dos clases de observaciones,
Figura 2 que se muestran en azul y en rojo, cada una de
las cuales tiene mediciones de dos variables.
Tres hiperplanos de separación, de muchos
posibles, se muestran en negro.

A la derecha hay un hiperplano de separación


se muestra en negro. La cuadrícula azul y roja
indica la regla de decisión tomada por un
clasificador basado en este hiperplano de
separación.- una observación de prueba que
cae en la porción azul de la cuadrícula se
asignará a la clase azul, y una observación de
prueba que cae en la porción roja de la
cuadrícula se asignará a la clase roja.
6/9/2022 Miguel Mejía Puente 17
Clasificación utilizando un hiperplano de
separación - 4
y
𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 < 0 SI 𝑦𝑦𝑖𝑖 = −1

De manera equivalente, un hiperplano de separación tiene la propiedad de


que
𝑦𝑦𝑖𝑖 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 > 0

para todo 𝑖𝑖 = 1, … , 𝑛𝑛.

6/9/2022 Miguel Mejía Puente 18


Clasificación utilizando un hiperplano de
separación - 5
Si existe un hiperplano de separación, podemos usarlo para construir un
clasificador muy natural: a una observación de prueba se le asigna una clase
dependiendo de qué lado del hiperplano se encuentre. El panel de la
derecha de la Figura 2 muestra un ejemplo de dicho clasificador. Es decir,
clasificamos la observación de prueba 𝑥𝑥 ∗ en función del signo de 𝑓𝑓 𝑥𝑥 ∗ =
𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥1∗ + 𝛽𝛽2 𝑥𝑥2∗ +…+ 𝛽𝛽𝑝𝑝 𝑥𝑥𝑝𝑝∗ . Si 𝑓𝑓 𝑥𝑥 ∗ es positiva, entonces asignamos la
observación de prueba a la clase +1, y si 𝑓𝑓 𝑥𝑥 ∗ es negativa, entonces la
asignamos a la clase −1.

6/9/2022 Miguel Mejía Puente 19


Clasificación utilizando un hiperplano de
separación - 6
También podemos hacer uso de la magnitud de 𝑓𝑓 𝑥𝑥 ∗ . Si 𝑓𝑓 𝑥𝑥 ∗ está lejos de
cero, entonces esto significa que 𝑥𝑥 ∗ se encuentra lejos del hiperplano, por lo
que podemos estar seguros de nuestra asignación de clase para 𝑥𝑥 ∗ . Por otro
lado, si 𝑓𝑓 𝑥𝑥 ∗ está cerca de cero, entonces x∗ se encuentra cerca del
hiperplano, por lo que estamos menos seguros de la asignación de clase para
𝑥𝑥 ∗ . No en vano, y como vemos en la Figura 2, un clasificador que se basa en
un hiperplano de separación conduce a un límite de decisión lineal.

6/9/2022 Miguel Mejía Puente 20


Clasificador de Margen Máximo (Maximal
Margin Classifier) - 1
En general, si nuestros datos pueden separarse perfectamente utilizando un
hiperplano, entonces de hecho existirá un número infinito de tales
hiperplanos. Esto se debe a que un hiperplano de separación dado
generalmente se puede desplazar un poco hacia arriba o hacia abajo, o girar,
sin entrar en contacto con ninguna de las observaciones. Tres posibles
hiperplanos de separación se muestran en el panel izquierdo de la Figura 2.
Para construir un clasificador basado en un hiperplano de separación,
debemos tener una forma razonable de decidir cuál de los infinitos
hiperplanos de separación posibles usar.

6/9/2022 Miguel Mejía Puente 21


Clasificador de Margen Máximo (Maximal
Margin Classifier) - 2
Una elección natural es el hiperplano de margen máximo (también conocido
como hiperplano de separación óptimo), que es el hiperplano de separación
que está más lejos de las observaciones de entrenamiento. Es decir,
podemos calcular la distancia (perpendicular) desde cada observación de
entrenamiento hasta un hiperplano separador dado; la distancia más
pequeña de este tipo es la distancia mínima de las observaciones al
hiperplano, y se conoce como el margen. El hiperplano de margen máximo
es el hiperplano de separación para el cual el margen es más grande, es
decir, es el hiperplano que tiene la distancia mínima más lejana a las
observaciones de entrenamiento.

6/9/2022 Miguel Mejía Puente 22


Clasificador de Margen Máximo (Maximal
Margin Classifier) - 3
A continuación, podemos clasificar una observación de prueba en función
de qué lado del hiperplano de margen máximo se encuentra. Esto se conoce
como el Clasificador de Margen Máximo. Esperamos que un clasificador que
tenga un gran margen en los datos de entrenamiento también tenga un gran
margen en los datos de prueba y, por lo tanto, clasifique las observaciones
de prueba correctamente. Aunque el Clasificador de Margen Máximo a
menudo es exitoso, también puede conducir a un sobreajuste cuando la
dimensión p es grande.

6/9/2022 Miguel Mejía Puente 23


Clasificador de Margen Máximo (Maximal
Margin Classifier) - 4
Si 𝛽𝛽0 , 𝛽𝛽1 , 𝛽𝛽2 , … , 𝛽𝛽𝑝𝑝 son los coeficientes del hiperplano de margen máximo,
entonces el Clasificador de Margen Máximo clasifica la observación de
prueba 𝑥𝑥 ∗ basada en el signo de 𝑓𝑓 𝑥𝑥 ∗ = 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥1∗ + 𝛽𝛽2 𝑥𝑥2∗ +…+ 𝛽𝛽𝑝𝑝 𝑥𝑥𝑝𝑝∗ .
La Figura 3 muestra el hiperplano de margen máximo en el conjunto de
datos de la Figura 2. Comparando el panel derecho de la Figura 2 con la
Figura 3, vemos que el hiperplano de margen máximo que se muestra en la
Figura 3 de hecho resulta en una mayor distancia mínima entre las
observaciones y el hiperplano de separación, es decir, un margen mayor. En
cierto sentido, el hiperplano de margen máximo representa la línea media de
el "bloque" más ancho que podemos insertar entre las dos clases.

6/9/2022 Miguel Mejía Puente 24


Figura 3
Hay dos clases de observaciones, que se
muestran en azul y en rojo. El hiperplano de
margen máximo se muestra como una línea
continua. El margen es la distancia desde la
línea continua hasta cualquiera de las líneas
discontinuas. Los puntos azules y el punto
rojo que se encuentran en las líneas
discontinuas son los vectores de soporte
(support vectors), y la distancia desde esos
puntos hasta el margen se indica mediante
flechas. La cuadrícula azul y roja indica la
regla de decisión tomada por un clasificador
basado en este hiperplano de separación.

6/9/2022 Miguel Mejía Puente 25


Clasificador de Margen Máximo (Maximal
Margin Classifier) - 5
Examinando la Figura 3, vemos que tres observaciones de entrenamiento son
equidistantes del hiperplano de margen máximo y se encuentran a lo largo de las
líneas discontinuas que indican el ancho del margen. Estas tres observaciones se
conocen como vectores de soporte (support vectors), ya que son vectores en el
espacio p-dimensional y "apoyan" al hiperplano de margen máximo en el sentido
de que si estos puntos se movieran ligeramente, entonces el hiperplano de margen
máximo también se movería. Curiosamente, el hiperplano de margen máximo
depende directamente de los vectores de soporte, pero no de las otras
observaciones: un movimiento de cualquiera de las otras observaciones no
afectaría al hiperplano de separación, siempre que el movimiento de la
observación no haga que cruce el límite establecido por el margen.

6/9/2022 Miguel Mejía Puente 26


Construcción del clasificador de margen
máximo - 1
Ahora consideramos la tarea de construir el hiperplano de margen máximo
basado en un conjunto de n observaciones de entrenamiento 𝑥𝑥1 , … , 𝑥𝑥𝑛𝑛 𝜖𝜖 ℝ𝑝𝑝
y etiquetas de clase asociadas 𝑦𝑦1 , … , 𝑦𝑦𝑛𝑛 𝜖𝜖{−1, +1}. Brevemente, el
hiperplano de margen máximo es la solución al problema de optimización
(PO1).
max𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖 𝑀𝑀
𝛽𝛽0 , 𝛽𝛽1 ,…,𝛽𝛽𝑝𝑝
𝑝𝑝

sujeto a � 𝛽𝛽𝑗𝑗2 = 1 (𝑅𝑅𝑅)


𝑗𝑗=1
𝑦𝑦𝑖𝑖 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑀𝑀, ∀ 𝑖𝑖 = 1, … , 𝑛𝑛 (𝑅𝑅𝑅)

6/9/2022 Miguel Mejía Puente 27


Construcción del clasificador de margen
máximo - 2
Este problema de optimización (PO1) es en realidad más simple de lo que
parece. En primer lugar, la restricción (𝑅𝑅𝑅) garantiza que cada observación
estará en el lado correcto del hiperplano, siempre que M sea positivo.

En realidad, para que cada observación esté en el lado correcto del


hiperplano simplemente necesitaríamos que 𝑦𝑦𝑖𝑖 � 𝛽𝛽0 +𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … +
𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 � > 0, por lo que la restricción de hecho requiere que cada
observación esté en el lado correcto del hiperplano, con algún cojín, siempre
que M sea positivo.

6/9/2022 Miguel Mejía Puente 28


Construcción del clasificador de margen
máximo - 3
En segundo lugar, tenga en cuenta que (𝑅𝑅1) no es realmente una restricción
en el hiperplano, ya que si 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 = 0 define un
hiperplano, entonces también lo hace 𝑘𝑘 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 =
0 para cualquier 𝑘𝑘 ≠ 0. Sin embargo, (𝑅𝑅1) añade significado a (𝑅𝑅𝑅); se
puede demostrar que con esta restricción la distancia perpendicular desde la
i-ésima observación hasta el hiperplano viene dada por la expresión

𝑦𝑦𝑖𝑖 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 .

6/9/2022 Miguel Mejía Puente 29


Construcción del clasificador de margen
máximo - 4
Por lo tanto, las restricciones (𝑅𝑅𝑅) y (𝑅𝑅2) aseguran que cada observación
esté en el lado correcto del hiperplano y al menos a una distancia M del
hiperplano.

Por eso, M representa el margen de nuestro hiperplano, y el problema de


optimización (PO1) elige 𝛽𝛽0 , 𝛽𝛽1 , 𝛽𝛽2 , … , 𝛽𝛽𝑝𝑝 para maximizar M. Esta es
exactamente la definición del hiperplano de margen máximo.

6/9/2022 Miguel Mejía Puente 30


Caso no separable
El clasificador de margen máximo es una forma muy natural de realizar la
clasificación, si existe un hiperplano de separación. Sin embargo, en muchos
casos no existe un hiperplano de separación, por lo que no existe un
clasificador de margen máximo. En este caso, el problema de optimización
(PO1) no tiene solución con M > 0. En la Figura 4 se muestra un ejemplo. En
este caso, no podemos separar exactamente las dos clases. Sin embargo,
podemos ampliar el concepto de hiperplano de separación con el fin de
desarrollar un hiperplano que casi separe las clases, utilizando el llamado
margen blando. La generalización del clasificador de margen máximo al caso
no separable se conoce como CVS.

6/9/2022 Miguel Mejía Puente 31


Figura 4
Hay dos clases de observaciones,
que se muestran en azul y en
rojo.

En este caso, las dos clases no


son separables por un
hiperplano, por lo que el
clasificador de margen máximo
no se puede utilizar.

6/9/2022 Miguel Mejía Puente 32


Clasificadores de Vectores de
Soporte (CVS)
James, Gareth; Witten, Daniela; Hastie, Trevor; Tibshirani,
Robert (2013). An Introduction To Statistical Learning with
Applications in R.
Descripción general del Clasificador de
Vectores de Soporte - 1
En la Figura 4, vemos que las observaciones que pertenecen a dos clases no
son necesariamente separables por un hiperplano. De hecho, incluso si
existe un hiperplano separador, entonces hay casos en los que un clasificador
basado en un hiperplano separador podría no ser deseable. Un clasificador
basado en un hiperplano separador necesariamente clasificará
perfectamente todas las observaciones de entrenamiento; esto puede
conducir a la sensibilidad a las observaciones individuales. Un ejemplo se
muestra en la Figura 5. La adición de una sola observación en el panel de la
derecha de la Figura 5 conduce a un cambio dramático en el hiperplano de
margen máximo. El hiperplano de margen máximo resultante no es
satisfactorio; por un lado, solo tiene un pequeño margen.
6/9/2022 Miguel Mejía Puente 34
Figura 5
A la izquierda, dos clases de observaciones se muestran en azul y rojo, junto con el
hiperplano de margen máximo.

A la derecha, se ha agregado una observación azul adicional, lo que lleva a un


cambio dramático en el hiperplano de margen máximo que se muestra como una
línea continua. La línea discontinua indica el hiperplano de margen máximo que se
obtuvo en ausencia de este punto adicional.

6/9/2022 Miguel Mejía Puente 35


Descripción general del Clasificador de
Vectores de Soporte - 2
Esto es problemático porque, como se discutió anteriormente, la distancia
de una observación desde el hiperplano puede verse como una medida de
nuestra confianza en que la observación se clasificó correctamente. Además,
el hecho de que el hiperplano de margen máximo sea extremadamente
sensible a un cambio en una sola observación sugiere que puede haber
sobre ajustado los datos de entrenamiento. En este caso, podríamos estar
dispuestos a considerar un clasificador basado en un hiperplano que no
separa perfectamente las dos clases, en interés de
• Mayor robustez a las observaciones individuales, y
• Mejor clasificación de la mayoría de las observaciones de entrenamiento.

6/9/2022 Miguel Mejía Puente 36


Descripción general del Clasificador de
Vectores de Soporte - 3
Es decir, podría valer la pena clasificar erróneamente algunas observaciones
de entrenamiento para hacer un mejor trabajo en la clasificación de las
observaciones restantes. El CVS, a veces llamado Clasificador de Margen
Blando (Soft Margin Classifier), hace exactamente esto. En lugar de buscar el
mayor margen posible para que cada observación no solo esté en el lado
correcto del hiperplano, sino también en el lado correcto del margen,
permitimos que algunas observaciones de entrenamiento estén en el lado
incorrecto del margen, o incluso en el lado incorrecto del hiperplano. El
margen es suave porque puede ser violado por algunas de las observaciones
de entrenamiento.

6/9/2022 Miguel Mejía Puente 37


Descripción general del Clasificador de
Vectores de Soporte - 4
Un ejemplo se muestra en el panel izquierdo de la Figura 6. La mayoría de las
observaciones están en el lado correcto del margen. Sin embargo, un
pequeño subconjunto de las observaciones están en el lado equivocado del
margen.

Una observación puede estar no solo en el lado equivocado del margen, sino
también en el lado equivocado del hiperplano. De hecho, cuando no hay un
hiperplano separador, tal situación es inevitable. Las observaciones en el
lado equivocado del hiperplano corresponden a observaciones de
entrenamiento que están mal clasificadas por el CVS. El panel de la derecha
de la Figura 6 ilustra tal escenario.
6/9/2022 Miguel Mejía Puente 38
Figura 6
A la izquierda, un CVS se ajustaba a un conjunto de datos pequeño. El hiperplano se
muestra como una línea sólida y los márgenes se muestran como líneas
discontinuas. Observaciones rojas: Las observaciones 3, 4, 5 y 6 están en el lado
correcto del margen, la observación 2 está en el margen y la observación 1 está en
el lado equivocado del margen. Observaciones azules: Las observaciones 7 y 10
están en el lado correcto del margen, la observación 9 está en el margen y la
observación 8 está en el lado equivocado del margen. Ninguna observación está en
el lado equivocado del hiperplano.
A la derecha, igual que el panel
izquierdo con dos puntos adicionales,
11 y 12. Estas dos observaciones
están en el lado equivocado del
hiperplano y en el lado equivocado
del margen.
6/9/2022 Miguel Mejía Puente 39
Detalles del Clasificador de Vectores de
Soporte - 1
El CVS clasifica una observación de prueba dependiendo del lado de un
hiperplano en el que se encuentre. El hiperplano se elige para separar
correctamente la mayoría de las observaciones de entrenamiento en las dos
clases, pero puede clasificar erróneamente algunas observaciones. Es la
solución al problema de optimización (PO2).

6/9/2022 Miguel Mejía Puente 40


Detalles del Clasificador de Vectores de
Soporte - 2
max𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖 𝑀𝑀
𝛽𝛽0 , 𝛽𝛽1 ,…,𝛽𝛽𝑝𝑝 , 𝜖𝜖1 ,…,𝜖𝜖𝑛𝑛
sujeto a
𝑝𝑝

� 𝛽𝛽𝑗𝑗2 = 1 (𝑅𝑅𝑅)
𝑗𝑗=1
𝑦𝑦𝑖𝑖 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥𝑖𝑖𝑖 + 𝛽𝛽2 𝑥𝑥𝑖𝑖𝑖 … + 𝛽𝛽𝑝𝑝 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑀𝑀(1 − 𝜖𝜖𝑖𝑖 ), ∀ 𝑖𝑖 = 1, … , 𝑛𝑛 (𝑅𝑅𝑅)
𝑛𝑛

� 𝜖𝜖𝑖𝑖 ≤ 𝐶𝐶 (𝑅𝑅𝑅)
𝑖𝑖=1
𝜖𝜖𝑖𝑖 ≥ 0

6/9/2022 Miguel Mejía Puente 41


Detalles del Clasificador de Vectores de
Soporte - 3
donde C es un parámetro de ajuste no negativo. Como M es el ancho del
margen; buscamos que esta cantidad sea lo más grande posible. En (R2),
𝜖𝜖1 , … , 𝜖𝜖𝑛𝑛 son variables de holgura que permiten que las observaciones
individuales estén en el lado equivocado del margen o del hiperplano. Una
vez que hemos resuelto el problema de optimización (PO2), clasificamos una
observación de prueba 𝑥𝑥 ∗ como antes, simplemente determinando en qué
lado del hiperplano se encuentra. Es decir, clasificamos la observación de
prueba 𝑥𝑥 ∗ en función del signo de 𝑓𝑓 𝑥𝑥 ∗ = 𝛽𝛽0 + 𝛽𝛽1 𝑥𝑥1∗ + 𝛽𝛽2 𝑥𝑥2∗ +…+ 𝛽𝛽𝑝𝑝 𝑥𝑥𝑝𝑝∗ .

6/9/2022 Miguel Mejía Puente 42


Detalles del Clasificador de Vectores de
Soporte - 4
El problema de optimización (PO2) parece complejo, pero la comprensión de
su comportamiento se puede hacer a través de una serie de observaciones
simples, que se presentan a continuación. En primer lugar, la variable de
holgura 𝜖𝜖𝑖𝑖 nos dice dónde se encuentra la i-ésima observación, en relación
con el hiperplano y en relación con el margen. Si 𝜖𝜖𝑖𝑖 = 0 entonces la i-ésima
observación está en el lado correcto del margen. Si 𝜖𝜖𝑖𝑖 > 0, entonces la i-
ésima observación está en el lado equivocado del margen, y decimos que la
i-ésima observación ha violado el margen. Si 𝜖𝜖𝑖𝑖 > 1, entonces está en el lado
equivocado del hiperplano.

6/9/2022 Miguel Mejía Puente 43


Detalles del Clasificador de Vectores de
Soporte - 5
Ahora consideramos el papel del parámetro de afinación 𝐶𝐶. En (R3), 𝐶𝐶 limita
la suma de los 𝜖𝜖𝑖𝑖 , por lo que determina el número y la gravedad de las
violaciones al margen (y al hiperplano) que toleraremos. Podemos pensar en
C como un presupuesto por la cantidad que el margen puede ser violado por
las n observaciones.

Si 𝐶𝐶 = 0 entonces no hay presupuesto para violaciones al margen, y debe


darse el caso de que 𝜖𝜖1 =…= 𝜖𝜖𝑛𝑛 = 0, en cuyo caso el problema de
optimización (PO2) simplemente equivale al problema de optimización
(PO1).

6/9/2022 Miguel Mejía Puente 44


Detalles del Clasificador de Vectores de
Soporte - 6
Para 𝐶𝐶 > 0 no más que 𝐶𝐶 observaciones pueden estar en el lado
equivocado del hiperplano, porque si una observación está en el lado
equivocado del hiperplano entonces, 𝜖𝜖𝑖𝑖 > 1, y (R3) requiere que
∑𝑛𝑛𝑖𝑖=1 𝜖𝜖𝑖𝑖 ≤ 𝐶𝐶.

A medida que aumenta el presupuesto 𝐶𝐶, nos volvemos más tolerantes


con las violaciones al margen, por lo que el margen se ampliará. Por el
contrario, a medida que 𝐶𝐶 disminuye, nos volvemos menos tolerantes a
las violaciones del margen y, por lo tanto, el margen se reduce. Un
ejemplo que se muestra en la Figura 7.
6/9/2022 Miguel Mejía Puente 45
Figura 7
Se ajustó un CVS usando cuatro valores diferentes del
parámetro de ajuste 𝐶𝐶 en el problema de optimización
(PO2). El valor más grande de 𝐶𝐶 se usó en el panel
superior izquierdo y valores más pequeños se usaron
en los paneles superior derecho, inferior izquierdo e
inferior derecho. Cuando 𝐶𝐶 es grande, entonces hay
una alta tolerancia para que las observaciones estén
en el lado equivocado del margen, por lo que el
margen será grande. A medida que 𝐶𝐶 disminuye, la
tolerancia para las observaciones que se encuentran
en el lado equivocado del margen disminuye y el
margen se angosta.

6/9/2022 Miguel Mejía Puente 46


Detalles del Clasificador de Vectores de
Soporte - 7
En la práctica, 𝐶𝐶 se trata como un parámetro de ajuste que generalmente se
elige a través de la validación cruzada. Cuando 𝐶𝐶 es pequeño, buscamos
márgenes estrechos que rara vez se violan; esto equivale a un clasificador
que se ajusta mucho a los datos, que puede tener un sesgo bajo pero una
varianza alta.

Por otro lado, cuando 𝐶𝐶 es mayor, el margen es más amplio y le permitimos


más violaciones; esto equivale a ajustar menos los datos y obtener un
clasificador que es potencialmente más sesgado pero que puede tener una
varianza baja.

6/9/2022 Miguel Mejía Puente 47


Detalles del Clasificador de Vectores de
Soporte - 8
El problema de optimización (PO2) tiene una propiedad muy interesante:
resulta que solo las observaciones que se encuentran en el margen o que
violan el margen afectarán al hiperplano y, por lo tanto, al clasificador
obtenido.

En otras palabras, una observación que se encuentra estrictamente en el


lado correcto del margen no afecta al CVS. Cambiar la posición de esa
observación no cambiaría en absoluto el clasificador, siempre que su
posición permanezca en el lado correcto del margen.

6/9/2022 Miguel Mejía Puente 48


Detalles del Clasificador de Vectores de
Soporte - 9
Las observaciones que se encuentran directamente en el margen, o en el
lado equivocado del margen para su clase, se conocen como vectores de
soporte. Estas observaciones afectan al CVS.

El hecho de que solo los vectores de soporte afecten al clasificador está


relacionado con que 𝐶𝐶 controla la compensación sesgo-varianza del CVS.

6/9/2022 Miguel Mejía Puente 49


Detalles del Clasificador de Vectores de
Soporte - 10
Cuando el parámetro de ajuste 𝐶𝐶 es grande, entonces el margen es ancho,
muchas observaciones violan el margen y, por lo tanto, hay muchos vectores
de soporte. En este caso, muchas observaciones están involucradas en la
determinación del hiperplano. El panel superior izquierdo de la Figura 7
ilustra esta configuración: este clasificador tiene una varianza baja (ya que
muchas observaciones son vectores de soporte) pero un sesgo
potencialmente alto. Por el contrario, si 𝐶𝐶 es pequeño, entonces habrá
menos vectores de soporte y, por lo tanto, el clasificador resultante tendrá
un sesgo bajo pero una varianza alta. El panel inferior derecho de la Figura 7
ilustra esta configuración, con solo cinco vectores de soporte.

6/9/2022 Miguel Mejía Puente 50


Detalles del Clasificador de Vectores de
Soporte - 11
El hecho de que la regla de decisión del CVS se base solo en un subconjunto
potencialmente pequeño de las observaciones de entrenamiento (los
vectores de soporte) significa que es bastante robusto para el
comportamiento de las observaciones que están lejos del hiperplano.

6/9/2022 Miguel Mejía Puente 51


Ejemplo de Clasificador de Vectores de
Soporte - 1
La biblioteca e1071 contiene implementaciones para una serie de métodos
de aprendizaje estadístico. En particular, la función svm() se puede utilizar
para ajustarse al CVS cuando se utiliza el argumento kernel = "linear". Esta
función utiliza una formulación ligeramente diferente de (R2) para el CVS. Un
argumento cost nos permite especificar el costo de una violación al margen.
Cuando el argumento cost es pequeño, entonces los márgenes serán amplios
y muchos vectores de soporte estarán en el margen o violarán el margen.

6/9/2022 Miguel Mejía Puente 52


Ejemplo de Clasificador de Vectores de
Soporte - 2
Cuando el argumento cost es grande, entonces los márgenes serán estrechos
y habrá pocos vectores de soporte en el margen o violando el margen.

Ahora usamos la función svm() para ajustar el CVS para un valor dado del
parámetro cost. Aquí demostramos el uso de esta función en un ejemplo
bidimensional para que podamos trazar el límite de decisión final resultante.

6/9/2022 Miguel Mejía Puente 53


Ejemplo de Clasificador de Vectores de
Soporte - 3
# Generar las observaciones
set.seed (1)
x <- matrix(rnorm (20*2), ncol = 2)
y <- c(rep(-1, 10), rep(1, 10))
x[y == 1, ] = x[y == 1, ] + 1

# Comprobar si las clases son linealmente


# separables
plot(x, col = (3 - y))

6/9/2022 54
6/9/2022 Miguel Mejía Puente 55
Ejemplo de Clasificador de Vectores de
Soporte - 4
Las clases no son linealmente separables.

A continuación, ajustamos el CVS. Tenga en cuenta que para que la función


svm() realice la clasificación, debemos codificar la respuesta como una
variable factorial. Ahora creamos un marco de datos con la respuesta
codificada como factor.

# Crear un marco de datos


dat <- data.frame(x = x, y = as.factor(y))

6/9/2022 Miguel Mejía Puente 56


Ejemplo de Clasificador de Vectores de
Soporte - 5
El argumento scale = FALSE le dice a la función svm() que no escale cada
característica para que tenga una media cero o una desviación estándar uno;
dependiendo de la aplicación, uno podría preferir usar scale = TRUE.

# Abrir la librería que contiene a la función svm()


library (e1071)
# Ejecutar el clasificador de vectores de soporte con cost = 10
svmfit <- svm(y~., data = dat, kernel = "linear", cost = 10, scale =
FALSE)

Ahora podemos graficar los resultados.


# Graficar los resultados
plot(svmfit, data = dat)

6/9/2022 Miguel Mejía Puente 57


6/9/2022 58
Ejemplo de Clasificador de Vectores de
Soporte - 6
Tenga en cuenta que los dos argumentos de la función plot() son el resultado
de la llamada a svm(), y los datos utilizados en la llamada a svm().

La región del espacio de entidades que se asignará a la clase −1 se muestra


en crema y la región que se asignará a la clase +1 se muestra en granate. El
límite de decisión final entre las dos clases es lineal (porque usamos el
argumento kernel = "linear"), aunque debido a la forma en que la función
plot() se implementa en esta biblioteca, el límite de decisión final se ve algo
irregular en la gráfica.

6/9/2022 Miguel Mejía Puente 59


Ejemplo de Clasificador de Vectores de
Soporte - 7
Vemos que en este caso sólo una observación está mal clasificada. Tenga en
cuenta que aquí la segunda característica se traza en el eje x y la primera
característica se traza en el eje y, en contraste con el comportamiento de la
función plot() habitual en R. Los vectores de soporte se trazan como cruces y
las observaciones restantes se trazan como círculos; vemos aquí que hay
siete vectores de soporte. Podemos determinar sus identidades de la
siguiente manera:

6/9/2022 Miguel Mejía Puente 60


Ejemplo de Clasificador de Vectores de
Soporte - 8
# Vectores de soporte
svmfit$index1
[1] 1 2 5 7 14 16 17

61
Ejemplo de Clasificador de Vectores de
Soporte - 9
Podemos obtener información básica sobre el ajuste del CVS utilizando
el comando summary():
Call:
# Información del ajuste svm(formula = y~., data = dat, kernel =
"linear", cost = 10, scale = FALSE)
summary(svmfit)
Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 10
Number of Support Vectors: 7
( 4 3 )
Number of Classes: 2
Levels:
-1 1
6/9/2022 62
Ejemplo de Clasificador de Vectores de
Soporte - 10
Este resumen nos dice que se utilizó un kernel = "linear" con cost = 10,
y que había siete vectores de soporte, cuatro en una clase y tres en la
otra.

¿Qué pasaría si en su lugar usáramos un valor más pequeño del


parámetro cost?
# Ejecutar el clasificador de vectores de soporte con cost = 0.1
svmfit <- svm(y~., data = dat, kernel = "linear", cost = 0.1, scale =
FALSE)
plot(svmfit, data = dat)

6/9/2022 Miguel Mejía Puente 63


6/9/2022 Miguel Mejía Puente 64
Ejemplo de Clasificador de Vectores de
Soporte - 11
# Vectores de soporte
svmfit$index
[1] 1 2 3 4 5 7 9 10 12 13 14 15 16 17 18 20

65
Ejemplo de Clasificador de Vectores de
Soporte - 12
Podemos obtener información básica sobre el ajuste del CVS utilizando
el comando summary():
Call:
svm(formula = y ~ ., data = dat, kernel =
# Información del ajuste "linear", cost = 0.1, scale = FALSE)
summary(svmfit)
Parameters:
SVM-Type: C-classification
Este resumen nos dice que se SVM-Kernel: linear
cost: 0.1
utilizó un kernel = "linear"
Number of Support Vectors: 16
con cost = 0.1, y que había ( 8 8 )
dieciseis vectores de soporte, Number of Classes: 2
ocho en cada clase. Levels:
-1 1
6/9/2022 66
Ejemplo de Clasificador de Vectores de
Soporte - 13
Ahora que se está utilizando un valor menor del parámetro cost,
obtenemos un mayor número de vectores de soporte, porque el
margen ahora es más amplio. Desafortunadamente, la función svm() no
genera explícitamente los coeficientes del límite de decisión lineal
obtenidos cuando se ajusta el CVS, ni genera el ancho del margen.

6/9/2022 Miguel Mejía Puente 67


Ejemplo de Clasificador de Vectores de
Soporte - 14
La biblioteca e1071 incluye una función integrada, tune(), para realizar
la validación cruzada. De forma predeterminada, tune() realiza una
validación cruzada de diez veces en un conjunto de modelos de interés.
Para usar esta función, pasamos información relevante sobre el
conjunto de modelos que se están considerando. El siguiente comando
indica que queremos comparar un MVS con un núcleo lineal, utilizando
un rango de valores del parámetro cost.

6/9/2022 Miguel Mejía Puente 68


Ejemplo de Clasificador de Vectores de
Soporte - 15
# Validación cruzada
set.seed(1)
tune2 <- tune(svm, y~., data = dat, kernel = "linear",
ranges = list(cost = c(0.001, 0.01, 0.1, 1, 5, 10, 100)))

Podemos acceder fácilmente a los errores de validación cruzada para


cada uno de estos modelos utilizando el comando summary():
# Información de la validación cruzada
summary(tune2)

6/9/2022 Miguel Mejía Puente 69


Ejemplo de Clasificador de Vectores de
Soporte - 16
Vemos que cost = 0.1 resulta en la tasa de error de validación cruzada
más baja. Parameter tuning of ‘svm’:
- sampling method: 10-fold cross validation
- best parameters:
cost
0.1
- best performance: 0.05
- Detailed performance results:
cost error dispersion
1 1e-03 0.55 0.4377975
2 1e-02 0.55 0.4377975
3 1e-01 0.05 0.1581139
4 1e+00 0.15 0.2415229
5 5e+00 0.15 0.2415229
6 1e+01 0.15 0.2415229
7 1e+02 0.15 0.2415229

6/9/2022 70
Ejemplo de Clasificador de Vectores de
Soporte - 17
La función tune() almacena el mejor modelo obtenido, al que se puede
acceder de la siguiente manera:
# Mejor modelo
bestmod <- tune2$best.model
summary(bestmod)
Call:
best.tune(method = svm, train.x = y~., data = dat, ranges = list(cost = c(0.001,
0.01, 0.1, 1, 5, 10, 100)), kernel = "linear")
Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 0.1
Number of Support Vectors: 16
( 8 8 )
Number of Classes: 2
Levels:
-1 1
Ejemplo de Clasificador de Vectores de
Soporte - 18
La función predict() se puede utilizar para predecir la etiqueta de clase
en un conjunto de observaciones de prueba, a cualquier valor dado del
parámetro cost. Comenzamos generando un conjunto de datos de
prueba.

# Datos de prueba
xtest <- matrix(rnorm(20*2), ncol = 2)
ytest <- sample(c(-1, 1), 20, rep = TRUE)
xtest[ytest == 1, ] = xtest[ytest == 1, ] + 1
testdat = data.frame(x = xtest, y = as.factor(ytest))

6/9/2022 72
Ejemplo de Clasificador de Vectores de
Soporte - 19
Ahora predecimos las etiquetas de clase de estas observaciones de
prueba. Aquí utilizamos el mejor modelo obtenido a través de la
validación cruzada para hacer predicciones.

# Predicción con el mejor modelo


ypred <- predict(bestmod, testdat)
table(predict = ypred, truth = testdat$y)
truth
predict -1 1
-1 9 1
1 2 8

6/9/2022 73
Ejemplo de Clasificador de Vectores de
Soporte - 20
Con el parámetro cost = 0.1, 17 de las observaciones de prueba se
clasifican correctamente y 3 se clasifican incorrectamente.

¿Y si en su lugar hubiéramos usado cost = 0.01?


# Ejecutar el clasificador de vectores de soporte con cost = 0.01
svmfit <- svm(y~., data = dat, kernel = "linear", cost = 0.01, scale =
FALSE)
ypred <- predict(svmfit, testdat)
table(predict = ypred, truth = testdat$y)
truth
predict -1 1
-1 11 6
1 0 3

6/9/2022 74
Ejemplo de Clasificador de Vectores de
Soporte - 21
Con el parámetro cost = 0.1, 14 de las observaciones de prueba se
clasifican correctamente y 6 se clasifican incorrectamente.

Ahora considere una situación en la que las dos clases son linealmente
separables. Entonces podemos encontrar un hiperplano separador
usando la función svm(). Primero separamos aún más las dos clases en
nuestros datos simulados para que sean linealmente separables:
# Modificar las observaciones y graficarlas
x[y == 1, ] = x[y == 1, ] + 0.5
plot(x, col = (y + 5)/2, pch = 19)

6/9/2022 75
6/9/2022 Miguel Mejía Puente 76
Ejemplo de Clasificador de Vectores de
Soporte - 22
Ahora las observaciones son apenas separables linealmente. Ajustamos
el CVS y trazamos el hiperplano resultante, utilizando un valor cost muy
grande para que ninguna observación se clasifique erróneamente.

# Crear un marco de datos


dat <- data.frame(x = x, y = as.factor(y))

# Ejecutar el clasificador de vectores de soporte con cost = 10000


svmfit <- svm(y~., data = dat, kernel = "linear", cost = 1e5)

# Graficar los resultados


plot(svmfit, data = dat)

6/9/2022 Miguel Mejía Puente 77


6/9/2022 Miguel Mejía Puente 78
Ejemplo de Clasificador de Vectores de
Soporte - 23
# Vectores de soporte
svmfit$index
[1] 2 14 15

79
Ejemplo de Clasificador de Vectores de
Soporte - 24
# Información del ajuste
summary(svmfit)

Este resumen nos dice que se utilizó un kernel = "linear" con cost =
10000, y que había tres vectores de soporte, uno en una clase y dos en
la otra. Call:
svm(formula = y ~ ., data = dat, kernel = "linear", cost = 1e+05)
Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 1e+05
Number of Support Vectors: 3
( 1 2 )
Number of Classes: 2
Levels:
6/9/2022 -1 1 80
Ejemplo de Clasificador de Vectores de
Soporte - 25
No se cometieron errores de entrenamiento y solo se utilizaron tres
vectores de soporte. Sin embargo, podemos ver en la figura que el
margen es muy estrecho, porque las observaciones que no son
vectores de soporte, indicadas como círculos, están muy cerca del
límite de decisión. Parece probable que este modelo tenga un
rendimiento deficiente en los datos de prueba.

6/9/2022
Ejemplo de Clasificador de Vectores de
Soporte - 26
Ahora probamos un valor de costo más pequeño:

# Ejecutar el clasificador de vectores de soporte con cost = 1


svmfit <- svm(y~., data = dat, kernel = "linear", cost = 1)

# Graficar los resultados


plot(svmfit, data = dat)

6/9/2022
6/9/2022 Miguel Mejía Puente 83
Ejemplo de Clasificador de Vectores de
Soporte - 27
# Vectores de soporte
svmfit$index
[1] 1 2 5 7 14 16 17
Ejemplo de Clasificador de Vectores de
Soporte - 28
# Información del ajuste
summary(svmfit)
Call:
svm(formula = y~., data = dat, kernel = "linear", cost = 1)

Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 1

Number of Support Vectors: 7


( 4 3 )

Number of Classes: 2

Levels:
-1 1
6/9/2022 85
Ejemplo de Clasificador de Vectores de
Soporte - 29
Usando el parámetro cost = 1, se clasifica erróneamente una
observación de entrenamiento, pero también se obtiene un margen
mucho más amplio y se hace uso de siete vectores de soporte.

Parece probable que este modelo funcione mejor en los datos de


prueba que el modelo con cost = 1e5.

6/9/2022
Máquinas de Soporte de
Vectores
James, Gareth; Witten, Daniela; Hastie, Trevor; Tibshirani,
Robert (2013). An Introduction To Statistical Learning with
Applications in R.
Clasificación con límites de decisión no
lineales - 1
El CVS es un enfoque natural para la clasificación en el entorno de dos clases,
si el límite entre las dos clases es lineal. Sin embargo, en la práctica a veces
nos enfrentamos a límites de clase no lineales. Por ejemplo, considere los
datos en el panel izquierdo de la Figura 8. Está claro que un CVS o cualquier
clasificador lineal funcionará mal aquí. De hecho, el CVS que se muestra en el
panel de la derecha de la Figura 8 es inútil aquí.

6/9/2022 Miguel Mejía Puente 88


Figura 8
A la izquierda, las observaciones
se dividen en dos clases, con un
límite no lineal entre ellas.

A la derecha, el CVS busca un


límite lineal y, en consecuencia,
funciona muy mal.

6/9/2022 Miguel Mejía Puente 89


Clasificación con límites de decisión no
lineales - 2
Podemos abordar el problema de los límites posiblemente no lineales entre
clases ampliando el espacio de características utilizando funciones
polinómicas cuadráticas, cúbicas e incluso de orden superior de los
predictores. Por ejemplo, en lugar de encajar un CVS utilizando p
características
𝑋𝑋1 , 𝑋𝑋2 , … , 𝑋𝑋𝑝𝑝

en su lugar, podríamos ajustar un CVS usando 2p características.


𝑋𝑋1 , 𝑋𝑋12 , 𝑋𝑋2 , 𝑋𝑋22 , … , 𝑋𝑋𝑝𝑝 , 𝑋𝑋𝑝𝑝2 .

6/9/2022 Miguel Mejía Puente 90


Clasificación con límites de decisión no
lineales - 3
Entonces, el problema de optimización (PO2) se convertiría en (PO3)
max𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖 𝑀𝑀
𝛽𝛽0 , 𝛽𝛽11 , 𝛽𝛽12 ,… , 𝛽𝛽𝑝𝑝𝑝, 𝛽𝛽𝑝𝑝𝑝 , 𝜖𝜖1 , …,𝜖𝜖𝑛𝑛
sujeto a
𝑝𝑝 2
2
� � 𝛽𝛽𝑗𝑗𝑗𝑗 =1
𝑗𝑗=1 𝑘𝑘=1
𝑝𝑝 𝑝𝑝
2
𝑦𝑦𝑖𝑖 𝛽𝛽0 + � 𝛽𝛽𝑗𝑗𝑗 𝑥𝑥𝑖𝑖𝑗𝑗 + � 𝛽𝛽𝑗𝑗2 𝑥𝑥𝑖𝑖𝑖𝑖 ≥ 𝑀𝑀(1 − 𝜖𝜖𝑖𝑖 ), ∀ 𝑖𝑖 = 1, … , 𝑛𝑛
𝑗𝑗=1 𝑗𝑗=1
𝑛𝑛

� 𝜖𝜖𝑖𝑖 ≤ 𝐶𝐶
𝑖𝑖=1
𝜖𝜖𝑖𝑖 ≥ 0

6/9/2022 Miguel Mejía Puente 91


Clasificación con límites de decisión no
lineales - 4
¿Por qué esto conduce a un límite de decisión no lineal? En el espacio de
características ampliado, el límite de decisión que resulta del (PO3) es de
hecho lineal. Pero en el espacio de características original, el límite de
decisión es de la forma 𝑞𝑞 𝑥𝑥 = 0, donde 𝑞𝑞 es un polinomio cuadrático, y sus
soluciones son generalmente no lineales. También se podría querer ampliar
el espacio de características con términos polinómicos de orden superior, o
con términos de interacción de la forma 𝑋𝑋𝑖𝑖 𝑋𝑋𝑗𝑗 para 𝑖𝑖 ≠ 𝑗𝑗. Alternativamente,
se podrían considerar otras funciones de los predictores en lugar de
polinomios.

6/9/2022 Miguel Mejía Puente 92


Clasificación con límites de decisión no
lineales - 5
No es difícil ver que hay muchas formas posibles de ampliar el espacio de
características, y que a menos que tengamos cuidado, podríamos terminar
con una gran cantidad de características. Entonces los cálculos se volverían
inmanejables. La MVS, que presentamos a continuación, nos permite
ampliar el espacio de características utilizado por el CVS de una manera que
conduce a cálculos eficientes.

6/9/2022 Miguel Mejía Puente 93


Máquina de Vectores de Soporte - 1
La MVS es una extensión del CVS que resulta de ampliar el espacio de
funciones de una manera específica, utilizando núcleos. La idea principal se
describe en "clasificación con límites de decisión no lineales": es posible que
deseemos ampliar nuestro espacio de funciones para acomodar un límite no
lineal entre las clases. El enfoque del núcleo (kernel) que se describirá es
simplemente un enfoque computacional eficiente para implementar esta
idea.

6/9/2022 Miguel Mejía Puente 94


Máquina de Vectores de Soporte - 2
La solución al problema del CVS en (PO2) involucra solo los productos
internos (producto escalar) de las observaciones, a diferencia de las
observaciones mismas. El producto interno de dos r-vectores a y b se define
como 𝑎𝑎, 𝑏𝑏 = ∑𝑟𝑟𝑖𝑖=1 𝑎𝑎𝑖𝑖 𝑏𝑏𝑖𝑖 .

Así, el producto interno de dos observaciones 𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ viene dado por
𝑝𝑝

𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ = � 𝑥𝑥𝑖𝑖𝑖𝑖 𝑥𝑥𝑖𝑖 ′ 𝑗𝑗 (𝑣𝑣)


𝑗𝑗=1

6/9/2022 Miguel Mejía Puente 95


Máquina de Vectores de Soporte - 3
Se puede demostrar que
• El CVS lineal se puede representar como
𝑛𝑛

𝑓𝑓 𝑥𝑥 = 𝛽𝛽0 + � 𝛼𝛼𝑖𝑖 𝑥𝑥, 𝑥𝑥𝑖𝑖 , (𝑣𝑣𝑣𝑣)


𝑖𝑖=1
donde hay 𝑛𝑛 parámetros 𝛼𝛼𝑖𝑖 , 𝑖𝑖 = 1, … , 𝑛𝑛, uno por observación de entrenamiento.
• Para estimar los parámetros 𝛼𝛼1 , … , 𝛼𝛼𝑛𝑛 y 𝛽𝛽0 , todo lo que necesitamos son 𝑛𝑛2 productos
internos 𝑥𝑥, 𝑥𝑥𝑖𝑖 entre todos los pares de observaciones de entrenamiento.

Note que en (𝑣𝑣𝑣𝑣 ), para evaluar la función 𝑓𝑓 𝑥𝑥 , necesitamos calcular el


producto interno entre el nuevo punto 𝑥𝑥 y cada uno de los puntos de
entrenamiento 𝑥𝑥𝑖𝑖 .
6/9/2022 Miguel Mejía Puente 96
Máquina de Vectores de Soporte - 4
Sin embargo, resulta que 𝛼𝛼𝑖𝑖 es distinto de cero solo para los vectores de
soporte en la solución; es decir, si una observación de entrenamiento no es
un vector de soporte, entonces su 𝛼𝛼𝑖𝑖 es igual a cero. Entonces, si 𝑆𝑆 es el
conjunto de índices de estos puntos de soporte, podemos reescribir
cualquier función solución de la forma (𝑣𝑣𝑖𝑖) como

𝑓𝑓 𝑥𝑥 = 𝛽𝛽0 + � 𝛼𝛼𝑖𝑖 𝑥𝑥, 𝑥𝑥𝑖𝑖 , (𝑣𝑣𝑣𝑣𝑣𝑣)


𝑖𝑖𝜖𝜖𝑆𝑆

que típicamente involucra muchos menos términos que en (𝑣𝑣𝑣𝑣).

6/9/2022 Miguel Mejía Puente 97


Máquina de Vectores de Soporte - 5
Para resumir, al representar el clasificador lineal 𝑓𝑓 𝑥𝑥 y al calcular sus
coeficientes, todo lo que necesitamos son productos internos.

Supongamos ahora que cada vez que aparece el producto interno (𝑣𝑣) en la
representación (𝑣𝑣𝑣𝑣), o en un cálculo de la solución para el CVS, lo
reemplazamos con una generalización del producto interior de la forma

𝐾𝐾 𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ , (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣)

donde 𝐾𝐾 es alguna función a la que nos referiremos como núcleo. Un núcleo


es una función que cuantifica la similitud de dos observaciones.
6/9/2022 Miguel Mejía Puente 98
Máquina de Vectores de Soporte - 6
Por ejemplo, podríamos simplemente tomar
𝑝𝑝

𝐾𝐾 𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ = � 𝑥𝑥𝑖𝑖𝑖𝑖 𝑥𝑥𝑖𝑖 ′ 𝑗𝑗 (𝑖𝑖𝑖𝑖)


𝑗𝑗=1

lo que nos devolvería el CVS. La ecuación (𝑖𝑖𝑖𝑖) se conoce como núcleo lineal
porque el CVS es lineal en las características; el núcleo lineal cuantifica
esencialmente la similitud de un par de observaciones utilizando la
correlación de Pearson (estándar). Pero en su lugar se podría elegir otra
forma para (𝑣𝑣𝑣𝑣𝑣𝑣𝑣𝑣).

6/9/2022 Miguel Mejía Puente 99


Máquina de Vectores de Soporte - 7
𝑝𝑝
Por ejemplo, uno podría reemplazar cada instancia de ∑𝑗𝑗=1 𝑥𝑥𝑖𝑖𝑖𝑖 𝑥𝑥𝑖𝑖 ′ 𝑗𝑗 con la
cantidad
𝑑𝑑
𝑝𝑝

𝐾𝐾 𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ = 1 + � 𝑥𝑥𝑖𝑖𝑖𝑖 𝑥𝑥𝑖𝑖 ′ 𝑗𝑗 (𝑥𝑥)


𝑗𝑗=1

Esto se conoce como núcleo polinomial de grado 𝑑𝑑, donde 𝑑𝑑 es un número


entero positivo.

6/9/2022 Miguel Mejía Puente 100


Máquina de Vectores de Soporte - 8
El uso de un núcleo de este tipo con 𝑑𝑑 > 1, en lugar del núcleo lineal estándar
(𝑖𝑖𝑥𝑥), en el algoritmo CVS conduce a un límite de decisión mucho más flexible.
Esencialmente equivale a ajustar un CVS en un espacio de mayor dimensión
que involucra polinomios de grado 𝑑𝑑, en lugar del espacio de características
original.

6/9/2022 Miguel Mejía Puente 101


Máquina de Vectores de Soporte - 9
Cuando el CVS se combina con un núcleo no lineal como (𝑥𝑥), el clasificador
resultante se conoce como MVS. Tenga en cuenta que en este caso la función
(no lineal) tiene la forma
𝑓𝑓 𝑥𝑥 = 𝛽𝛽0 + � 𝛼𝛼𝑖𝑖 𝐾𝐾 𝑥𝑥, 𝑥𝑥𝑖𝑖 (𝑥𝑥𝑥𝑥)
𝑖𝑖𝜖𝜖𝑆𝑆

El panel izquierdo de la Figura 9 muestra un ejemplo de MVS con un núcleo


polinomial aplicado a los datos no lineales de la Figura 8. El ajuste es una
mejora sustancial sobre el CVS lineal. Cuando 𝑑𝑑 = 1, entonces la MVS se
reduce al CVS.

6/9/2022 Miguel Mejía Puente 102


Figura 9
A la izquierda, se aplica una MVS con
un núcleo polinomial de grado 3 a los
datos no lineales de la Figura 8, lo
que da como resultado una regla de
decisión mucho más apropiada.

A la derecha, se aplica una MVS con


un núcleo radial. En este ejemplo,
cualquiera de los núcleos es capaz de
capturar el límite de decisión.

6/9/2022 Miguel Mejía Puente 103


Máquina de Vectores de Soporte - 10
El núcleo polinomial que se muestra en (𝑥𝑥) es un ejemplo de un posible
núcleo no lineal, pero abundan las alternativas. Otra opción popular es el
núcleo radial, que toma la forma
𝑝𝑝
2
𝐾𝐾 𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ = 𝑒𝑒𝑒𝑒𝑒𝑒 −𝛾𝛾 � 𝑥𝑥𝑖𝑖𝑖𝑖 −𝑥𝑥𝑖𝑖 ′ 𝑗𝑗 (𝑥𝑥𝑥𝑥𝑥𝑥)
𝑗𝑗=1

En (𝑥𝑥𝑥𝑥𝑥𝑥), 𝛾𝛾 es una constante positiva. El panel de la derecha de la Figura 9


muestra un ejemplo de una MVS con un núcleo radial en estos datos no
lineales; también hace un buen trabajo separando las dos clases.

6/9/2022 Miguel Mejía Puente 104


Máquina de Vectores de Soporte - 11
¿Cómo funciona realmente el núcleo radial (𝑥𝑥𝑥𝑥𝑥𝑥)?

∗ ∗ ∗ ∗ 𝑇𝑇
Si una observación de prueba dada 𝑥𝑥 = 𝑥𝑥1 , 𝑥𝑥2 , … , 𝑥𝑥𝑝𝑝 está
lejos de ser
una observación de entrenamiento 𝑥𝑥𝑖𝑖 en términos de distancia euclidiana,
entonces

2
∑𝑝𝑝𝑗𝑗=1 𝑥𝑥𝑗𝑗∗ − 𝑥𝑥𝑖𝑖𝑖𝑖 será grande, y así
𝑝𝑝 2

𝐾𝐾 𝑥𝑥 , 𝑥𝑥𝑖𝑖 = 𝑒𝑒𝑒𝑒𝑒𝑒 −𝛾𝛾 ∑𝑗𝑗=1 𝑥𝑥𝑗𝑗∗ −𝑥𝑥𝑖𝑖𝑗𝑗 será muy pequeño.

6/9/2022 Miguel Mejía Puente 105


Máquina de Vectores de Soporte - 12
Esto significa que en (𝑥𝑥𝑖𝑖), 𝑥𝑥𝑖𝑖 prácticamente no jugará ningún papel en 𝑓𝑓 𝑥𝑥 ∗ .
Recuerde que la etiqueta de clase pronosticada para la observación de
prueba 𝑥𝑥 ∗ se basa en el signo de 𝑓𝑓 𝑥𝑥 ∗ .

En otras palabras, las observaciones de entrenamiento que están lejos de 𝑥𝑥 ∗


esencialmente no desempeñarán ningún papel en la etiqueta de clase
predicha para 𝑥𝑥 ∗ . Esto significa que el núcleo radial tiene un comportamiento
muy local, en el sentido de que solo las observaciones de entrenamiento
cercanas tienen efecto en la etiqueta de clase de una observación de prueba.

6/9/2022 Miguel Mejía Puente 106


Máquina de Vectores de Soporte - 13
¿Cuál es la ventaja de usar un núcleo en lugar de simplemente ampliar el
espacio de características usando funciones de las características originales,
como en el (PO3)?

Una ventaja es computacional, y consiste en el hecho de que al usar núcleos,


uno solo necesita calcular 𝐾𝐾 𝑥𝑥𝑖𝑖 , 𝑥𝑥𝑖𝑖 ′ para todos los 𝑛𝑛2 pares distintos 𝑖𝑖, 𝑖𝑖 ′ .

6/9/2022 Miguel Mejía Puente 107


Máquina de Vectores de Soporte - 14
Esto se puede hacer sin trabajar explícitamente en el espacio de funciones
ampliado. Esto es importante porque en muchas aplicaciones de MVS, el
espacio de funciones ampliado es tan grande que los cálculos son intratables.

Para algunos núcleos, como el núcleo radial (𝑥𝑥), el espacio de características


es implícito y de dimensión infinita, así que nunca podríamos hacer los
cálculos allí de todos modos.

6/9/2022 Miguel Mejía Puente 108


Ejemplo de Máquina de Vectores de Soporte - 1

Para ajustar una MVS usando un núcleo no lineal, una vez más usamos
la función svm(). Sin embargo, ahora usaremos un valor diferente del
parámetro kernel. Para ajustar un MVS con un núcleo polinómico
usamos kernel = "polynomial", y para encajar un MVS con un núcleo
radial usamos kernel = "radial". En el primer caso también usamos el
argumento degree para especificar un grado para el núcleo polinómico,
esto es 𝑑𝑑 en (𝑥𝑥), y en el segundo caso usamos gamma para especificar
un valor de 𝛾𝛾 para el núcleo de base radial 𝑥𝑥𝑥𝑥𝑥𝑥 .

6/9/2022 Miguel Mejía Puente 109


Ejemplo de Máquina de Vectores de Soporte - 2
# Generar las observaciones
set.seed(1)
x <- matrix(rnorm(200*2), ncol = 2)
x[1:100, ] <- x[1:100, ] + 2
x[101:150, ] <- x[101:150, ] - 2
y <- c(rep(1, 150), rep(2, 50))

# Crear un marco de datos


dat <- data.frame(x = x, y = as.factor(y))

# Comprobar si el límite de clase no es lineal


plot(x, col = y)

6/9/2022 Miguel Mejía Puente 110


6/9/2022 Miguel Mejía Puente 111
Ejemplo de Máquina de Vectores de Soporte - 3

Los datos se dividen aleatoriamente en grupos de entrenamiento y


prueba. Luego ajustamos los datos de entrenamiento usando la función
svm() con un núcleo radial y 𝛾𝛾 = 1:

# Datos de entrenamiento
train <- sample(200, 100)

# Abrir la librería que contiene a la función svm()


library (e1071)
# Ejecutar la máquina de vectores de soporte con cost = 1
svmfit <- svm(y~., data = dat[train, ], kernel = "radial", gamma = 1, cost
= 1)

6/9/2022 Miguel Mejía Puente 112


Ejemplo de Máquina de Vectores de Soporte - 4
# Graficar los resultados
plot(svmfit, dat[train, ])

El gráfico muestra que el MVS resultante tiene un límite decididamente


no lineal.

6/9/2022 Miguel Mejía Puente 113


6/9/2022 Miguel Mejía Puente 114
Ejemplo de Máquina de Vectores de Soporte - 5

La función summary() se puede utilizar para obtener información sobre


el ajuste MVS: Call:
svm(formula = y ~ ., data = dat[train, ], kernel = "radial",
gamma = 1, cost = 1)
# Información del ajuste
Parameters:
summary(svmfit) SVM-Type: C-classification
SVM-Kernel: radial
cost: 1

Number of Support Vectors: 31


( 16 15 )

Number of Classes: 2

Levels:
1 2
6/9/2022 115
Ejemplo de Máquina de Vectores de Soporte - 6

Podemos ver en la figura que hay un buen número de errores de


entrenamiento en este ajuste MVS. Si aumentamos el valor del costo,
podemos reducir el número de errores de entrenamiento. Sin embargo,
esto tiene un costo en el límite de decisión más irregular que parece
estar en riesgo de sobreajustar los datos.

6/9/2022 116
Ejemplo de Máquina de Vectores de Soporte - 7
# Ejecutar la máquina de vectores de soporte con cost = 10000
svmfit <- svm(y~., data = dat[train, ], kernel = "radial", gamma = 1, cost
= 1e5)

# Graficar los resultados


plot(svmfit, dat[train, ])

6/9/2022 117
6/9/2022 Miguel Mejía Puente 118
Ejemplo de Máquina de Vectores de Soporte - 8

Podemos realizar la validación cruzada utilizando tune() para


seleccionar la mejor opción de 𝛾𝛾 y cost para una MVS con un núcleo
radial:

# Validación cruzada
set.seed(1)
tune2 <- tune(svm, y~., data = dat[train, ], kernel = "radial", ranges =
list(cost = c(0.1, 1, 10,100, 1000), gamma = c(0.5, 1, 2, 3, 4)))

# Información de la validación cruzada


summary(tune2)

6/9/2022 Miguel Mejía Puente 119


Ejemplo de Máquina de Vectores de Soporte - 9
Parameter tuning of ‘svm’:
- sampling method: 10-fold cross validation
11 1e-01 2.0 0.27 0.15670212
- best parameters:
12 1e+00 2.0 0.07 0.08232726
cost gamma
13 1e+01 2.0 0.11 0.07378648
1 0.5
14 1e+02 2.0 0.12 0.13165612
- best performance: 0.07
15 1e+03 2.0 0.16 0.13498971
- Detailed performance results:
16 1e-01 3.0 0.27 0.15670212
cost gamma error dispersion
17 1e+00 3.0 0.07 0.08232726
1 1e-01 0.5 0.26 0.15776213
18 1e+01 3.0 0.08 0.07888106
2 1e+00 0.5 0.07 0.08232726
19 1e+02 3.0 0.13 0.14181365
3 1e+01 0.5 0.07 0.08232726
20 1e+03 3.0 0.15 0.13540064
4 1e+02 0.5 0.14 0.15055453
21 1e-01 4.0 0.27 0.15670212
5 1e+03 0.5 0.11 0.07378648
22 1e+00 4.0 0.07 0.08232726
6 1e-01 1.0 0.22 0.16193277
23 1e+01 4.0 0.09 0.07378648
7 1e+00 1.0 0.07 0.08232726
24 1e+02 4.0 0.13 0.14181365
8 1e+01 1.0 0.09 0.07378648
25 1e+03 4.0 0.15 0.13540064
9 1e+02 1.0 0.12 0.12292726
10 1e+03 1.0 0.11 0.11005049
6/9/2022 Miguel Mejía Puente 120
Ejemplo de Máquina de Vectores de Soporte - 10

Por lo tanto, la mejor elección de parámetros implica cost = 1 y gamma


= 0.5. Podemos ver las predicciones del conjunto de pruebas para este
modelo aplicando la función predict() a los datos. Observe que para
hacer esto subconfiguramos el marco de datos dat usando -train como
un conjunto de índices.

6/9/2022 Miguel Mejía Puente 121


Ejemplo de Máquina de Vectores de Soporte - 10
# Predicción con el mejor modelo
table(true = dat[-train,"y"], pred = predict(tune2$best.model, newx =
dat[-train ,]))
pred
true 1 2
1 54 23
2 17 6

60 de las observaciones de prueba se clasifican correctamente y 40 se


clasifican incorrectamente.

6/9/2022 Miguel Mejía Puente 122


Máquina de Vectores de
Soporte con más de dos
clases
James, Gareth; Witten, Daniela; Hastie, Trevor; Tibshirani,
Robert (2013). An Introduction To Statistical Learning with
Applications in R.
Máquina de Vectores de Soporte con más de
dos clases
Hasta ahora, hemos visto el caso de clasificación binaria: es decir, la
clasificación en el escenario de dos clases. ¿Cómo podemos extender
las MVS al caso más general en el que tenemos un número arbitrario
de clases? Resulta que el concepto de separación de hiperplanos en los
que se basan las MVS no se presta naturalmente a más de dos clases.
Aunque se han realizado varias propuestas para extender las MVS al
caso de la clase K, las dos más populares son los enfoques uno contra
uno y uno contra todos.

6/9/2022 Miguel Mejía Puente 124


Clasificación uno contra uno
Supongamos que nos gustaría realizar una clasificación utilizando MVS y hay
K > 2 clases. Un enfoque de uno contra uno o de todos los pares construye
𝑘𝑘
2
MVS, cada uno de los cuales compara un par de clases. Por ejemplo, una
MVS de este tipo podría comparar la k-ésima clase, codificada como +1, con
la k-ésima clase, codificada como −1. Clasificamos una observación de
prueba utilizando cada uno de los 𝑘𝑘2 clasificadores y contamos el número
de veces que la observación de prueba se asigna a cada una de las K clases.
La clasificación final se realiza asignando la observación de prueba a la clase
a la que se asignó con mayor frecuencia en estas 𝑘𝑘2 clasificaciones por
pares.
6/9/2022 Miguel Mejía Puente 125
Clasificación uno contra todos
El enfoque de uno contra todos es un procedimiento alternativo para aplicar
MVS en el caso de K > 2 clases. Ajustamos K MVS, comparando cada vez una
de las K clases con las K-1 clases restantes. Sean 𝛽𝛽𝑜𝑜𝑜𝑜 , 𝛽𝛽1𝑘𝑘 ,… 𝛽𝛽𝑝𝑝𝑘𝑘 denota los
parámetros que resultan de ajustar una MVS comparando la k-ésima clase
(codificada como +1) con las otras (codificadas como −1). Sea 𝑥𝑥 ∗ una
observación de prueba. Asignamos la observación a la clase para la cual
𝛽𝛽𝑜𝑜𝑜𝑜 + 𝛽𝛽1𝑘𝑘 𝑥𝑥1∗ + 𝛽𝛽2𝑘𝑘 𝑥𝑥2∗ +…+ 𝛽𝛽𝑝𝑝𝑝𝑝 𝑥𝑥𝑝𝑝∗ es mayor, ya que esto equivale a un alto
nivel de confianza de que la observación de prueba pertenece a la k-ésima
clase en lugar de cualquiera de las otras clases.

6/9/2022 Miguel Mejía Puente 126


Ejemplo de Máquina de Vectores de Soporte
con más de dos clases - 1
Si la respuesta es un factor que contiene más de dos niveles, entonces
la función svm() realizará la clasificación de varias clases utilizando el
enfoque de uno contra uno. Exploramos ese escenario aquí generando
una tercera clase de observaciones.

6/9/2022 Miguel Mejía Puente 127


Ejemplo de Máquina de Vectores de Soporte
con más de dos clases - 2
# Generar las observaciones
set.seed(1)
x <- matrix(rnorm (200*2), ncol = 2)
x[1:100,] = x[1:100, ] + 2
x[101:150,] = x[101:150, ] - 2
y <- c(rep(1 ,150), rep (2 ,50) )

x <- rbind(x, matrix (rnorm(50*2), ncol = 2))


y <- c(y, rep (0, 50) )
x[y == 0, 2] = x[y == 0, 2] + 2

# Crear un marco de datos


dat <- data.frame(x = x, y = as.factor (y))

6/9/2022 Miguel Mejía Puente 128


Ejemplo de Máquina de Vectores de Soporte
con más de dos clases - 3
# Comprobar si el límite de clase no es lineal
par(mfrow = c(1, 1))
plot(x, col = y + 1)

6/9/2022 Miguel Mejía Puente 129


6/9/2022 Miguel Mejía Puente 130
Ejemplo de Máquina de Vectores de Soporte
con más de dos clases - 4
Ahora ajustamos una MVS a los datos:
# Ejecutar la máquina de vectores de soporte con cost = 10
svmfit <- svm(y~., data = dat, kernel ="radial", cost = 10, gamma = 1)

# Graficar los resultados


plot(svmfit, dat)

6/9/2022 Miguel Mejía Puente 131


6/9/2022 Miguel Mejía Puente 132
ANALYTICS 2
FIN DE LA PRESENTACIÓN

También podría gustarte