0% found this document useful (0 votes)
39 views52 pages

Taz TFG 2016 2057

El documento es un trabajo de fin de grado que introduce las máquinas de vector soporte (SVM) en el contexto del aprendizaje supervisado, destacando su capacidad para clasificar datos mediante la construcción de un hiperplano que separa óptimamente diferentes clases. Se discuten las variantes de SVM, su formulación matemática, y se presentan aplicaciones prácticas, incluyendo un caso clínico en medicina para la detección de tumores. Además, se abordan extensiones como clasificadores multicategoría y SVM para regresión, junto con un análisis de software relacionado.

Uploaded by

alan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views52 pages

Taz TFG 2016 2057

El documento es un trabajo de fin de grado que introduce las máquinas de vector soporte (SVM) en el contexto del aprendizaje supervisado, destacando su capacidad para clasificar datos mediante la construcción de un hiperplano que separa óptimamente diferentes clases. Se discuten las variantes de SVM, su formulación matemática, y se presentan aplicaciones prácticas, incluyendo un caso clínico en medicina para la detección de tumores. Además, se abordan extensiones como clasificadores multicategoría y SVM para regresión, junto con un análisis de software relacionado.

Uploaded by

alan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

Introducción a las máquinas de vector

soporte (SVM) en aprendizaje


supervisado

Elena Campo León


Trabajo de fin de grado en Matemáticas
Universidad de Zaragoza

Director del trabajo: José Tomás Alcalá Nalvaiz


Prólogo

El aprendizaje estadístico supervisado es un conjunto de técnicas para deducir una función a par-
tir de datos de entrenamiento y es una de las herramientas principales de la minería de datos y del
aprendizaje automático. Los datos de entrenamiento, ejemplos o instancias consisten en pares de ob-
jetos (normalmente vectores) en los que una componente del par son los datos de entrada y el otro,
los resultados deseados. El objetivo es crear o estimar una función capaz de predecir el valor deseado
correspondiente a cualquier objeto de entrada válida después de haber visto una serie de ejemplos. Para
ello, tiene que generalizar a partir de los datos presentados anteriormente a las nuevas situaciones no
vistas previamente. La salida de la función puede ser un valor numérico (como en los problemas de
regresión) o una etiqueta de clase (como en los de clasificación) [WAS].

En este contexto, las máquinas de vector soporte (Support Vector Machines, SVMs) son un con-
junto de algoritmos de aprendizaje estadístico supervisado pertenecientes a la familia de los clasificado-
res lineales desarrollados por Vladimir Vapnik y su equipo en los laboratorios AT &T entorno a 1995.

Sin pérdida de generalidad, suponiendo que tenemos ejemplos de sólo dos categorías una SVM
construye un hiperplano en un espacio de dimensionalidad muy alta o incluso infinita. Este hiperplano
separa de forma óptima los puntos de una clase de la de otra. En el concepto de “separación óptima”
es donde reside la característica fundamental de las SVM, se busca el hiperplano que tenga la máxima
distancia (margen) con los puntos que estén más cerca de él mismo. Por eso también a veces se les
conoce a las SVM como clasificadores de margen máximo [WSVM].

Las SVM se desarrollaron inicialmente para resolver problemas de clasificación. Sin embargo, se
han reformulado de múltiples formas a lo largo de los años, sus variantes mas conocidas son: SVM para
regresión, SVM para resolución de ecuaciones integrales, SVM para estimar el soporte de una densidad,
SVMs que usan diferentes costes de margen blando y parámetros. También se han ensayado otras for-
mulaciones del problema dual (ver [BL]). Las técnicas de óptimización cuadrática son fundamentales a
la hora de resolver estos problemas.

Actualmente, las SVM tienen utilidad en una extensa variedad de áreas. Algunas de sus aplicaciones
mas importantes son el reconocimiento de caracteres, detección de intrusos, reconocimiento del habla o
la bioinformática.

III
Summary

The Support Vector Machine (SVM) algorithm is probably the most widely used kernel learning
algorithm. It achieves relatively robust pattern recognition performance using well established concepts
in optimization theory. The pattern recognition has a wide range of applications including optical cha-
racter recognition, intrusion detection, speech recognition, and bioinformatics.

Statistical learning is consolidated as a branch of Statistics around 1995 when Vladimir Vapnik pu-
blished his renowned book “The Nature of Statistical Learning Theory”. Supervised statistical learning
is the machine learning task of inferring a function from labeled training data. The training data consist
of a set of training examples. Each example or instance is a pair consisting of an input object, typically
a vector x, and a desired output value y. A supervised learning algorithm analyzes the training data and
produces an inferred function, which can be used for mapping new examples. An optimal scenario will
allow for the algorithm to correctly determine the class labels for unseen instances. This requires the
learning algorithm to generalize from the training data to unseen situations. The parallel task in human
and animal psychology is often referred to as concept learning.

This work shows an introduction to the extensive field of support vector machines and its utility as
classifiers. In addition, we will see a practical application in medicine to a clinical case of patients with
breast cancer. The model is build using learnig algorithms. In this way if a new patient is received, our
classifier will be able to predict if she is suffering a malignant or benign tumor.

In chapter 1, we present the earliest pattern regognition systems, binary classifiers. For each pat-
tern x ∈ Rd is given a class y ∈ {−1, 1}. These examples have the property of being perfectly and
linearly separable, so they will be classified without error by a linear discriminant function D(x) =
(w1 x1 + . . . + wd xd ) + b, where w ∈ Rd and b is a real coefficient. When a training set is linearly sepa-
rable there usually is an infinity of separating hyperplanes. Vapnik and other authors propose to choose
the separating hyperplane that maximizes the margin, that is to say the hyperplane that leaves as much
room as possible between the hyperplane and the closest example. Formally, this situation is represen-
ted as an optimization problem in which we minimize the norm of the hyperplane’s directional vector w
under some constraints. However this state of perfect separability does not happen in real life. Usually
all examples may not be correctly classified. In that case we have two solutions, the choice of each one
depend on the degree of separability of the examples.

In the first situation, when the problem is very noisy is usually to address it by allowing some
examples to violate the margin constraints in the optimization problem. These potential violations are
represented using positive slack variables ξi , i = 1, . . . , n. An additional parameter called cost C controls
the compromise between large margins and small margin violations.

V
VI Capítulo 0. Summary

The formulation of the optimization problem is the following:

n
1
mı́n kwk2 +C ∑ ξi
2 i=1
(1)
s.a yi (hw, xi i + b) + ξi − 1 ≥ 0,
ξi ≥ 0, i = 1, . . . , n.

In the second case the set of examples cannot be separated by a linear function, so we use the so-
called kernel functions, which represent a scalar product. Kernel function induces a high dimensional
Hilbert space, called features space. Each pattern x is transformed into a feature vector Φ(x) ∈ Rm , so
the linear discriminant function will be D0 (x) = (w1 φ1 (x + · · · + wm φm (x)) + b. In the original space this
hyperplane will be transformed into a non linear decision boundary. The Reproducing Kernel Hilbert
Spaces theory states that, although the corresponding feature space has infinite dimension, if we know
the kernel function, all computations can be performed without ever computing a feature vector Φ(x).

In both cases the optimization problem (primal) is transformed to its dual, so we can solve it by qua-
dratic optimization techniques. Dual problem is computationally easier because the number of variables
to optimize in the primal problem is directly proportional to the dimensionality of the examples while
in the dual problem it is directly proportional with the size of the sample, so the constraints are much
simple.

In chapter 2, we present two main extensions of SVM: multiclass classifiers and SVR for regres-
sion. Support vector machine originally separates the binary classes with a maximized margin criterion.
However, real-world problems often require the discrimination for k ≥ 2 categories. The most used
multiclass solving technique is SimMSVM. This method designs a unique objective function that trains
simultaneously k(k−1)
2 binary classifiers and through a voting strategy is assigned to each example its la-
bel. We obtain a quadratic optimization problem with a higher misclassification rate than other methods,
in exchange of, reducing the number of variables to the number of examples. In conclusion SimMSVM
approach can greatly speed up the training process, while maintaining a competitive classification accu-
racy.

The other extension, SVR, is the adaptation of the original SVM problem to solving a regression
problem. In this case we have yi ∈ R, for i = 1 . . . , n, instead of a class label. We define a loss function
L that controls the error between the predicted and actual value. This function only takes non-zero
values when the separation distance between the regression hyperplane and the example is greater than
the parameter . In the same way to the classification problem the slack variables associated to each
example are used to allow certain prediction error.

In chapter 3 we make a brief summary about currently packages containing SVM related software
and specially for the statistical software package R, the e1071 library among others. Using a popular
dataset of patients with breast cancer, we optimize several models for different kernel functions and we
obtain the corresponding ROC curves to analyze the quality of each one. In all three models, we have
excellent results about the accuracity of the true diagnosis with respect to the type of tumor (malignant
or benign) for a new patient.
Índice general

Prólogo III

Summary V

1. SVM para clasificación binaria 1


1.1. Ejemplos separables linealmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Ejemplos cuasi-separables linealmente . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Ejemplos no separables linealmente . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1. Solución del problema OR-exclusivo mediante SVMs . . . . . . . . . . . . . 9

2. Clasificación multinomial y regresión 11


2.1. Caso multinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1. Métodos indirectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2. Métodos directos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2. SVM para regresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3. Aplicaciones prácticas 19
3.1. Introducción al software para SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2. Aplicación al cáncer de mama: datos WDBC . . . . . . . . . . . . . . . . . . . . . . 20

Anexos 25

A. Optimización cuadrática 27

B. Descripción variables del conjunto de datos 31

C. Script R y salidas no incluidas en la memoria 33


C.1. Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
C.2. Salidas no incluidas en la memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Bibliografía 43

VII
Capítulo 1

SVM para clasificación binaria

1.1. Ejemplos separables linealmente

Consideramos un conjunto de elementos representados por el par (xi , yi ) que llamaremos ejemplos,
cada uno con una serie de características que se almacenan en un vector xi . Además tienen asignada una
categoría que es la segunda componente de (xi , yi ). Observemos la figura 1.1 (a), tenemos dos clases de
ejemplos, si podemos separar todos los ejemplos a través de un hiperplano, de forma que, cada uno este
en el semiplano de la clase correcta, entonces diremos que el conjunto de ejemplos es separable.

Dado un conjunto separable de ejemplos, S = {(x1 ; y1 ), · · · , (xn ; yn )}, donde xi ∈ Rd e yi ∈ {−1, 1},
se define un hiperplano de separación como una función lineal que es capaz de separar dicho conjunto
sin error:

D(xi ) = (w1 x1 + . . . + wd xd ) + b = hw, xi i + b, (1.1)

donde w ∈ Rd y b es un coeficiente real. Las restricciones que debe satisfacer un hiperplano de separa-
ción para todo ejemplo del conjunto de entrenamientos son:

hw, xi i + b > 0, si yi = +1,


hw, xi i + b 6 0, si yi = −1.

Equivalentemente,

yi D(xi ) > 0, i = 1, . . . , n. (1.2)

Sin embargo existen infinitos hiperplanos (ver figura 1.1 (b)) que satisfacen la restricción anterior, de-
bemos buscar un criterio que nos proporcione una regla de decisión sobre el conjunto de ejemplos, de
forma que hallemos el hiperplano separador óptimo.

1
2 Capítulo 1. SVM para clasificación binaria

Figura 1.1: Hiperplanos de separación en un espacio bidimensional de un conjunto de ejemplos separa-


bles en dos clases: (a) un hiperplano de separación (b) algunos hiperplanos de separación, de entre los
infinitos posibles. [Fuente: Figura 1 [C2014]]

Se define el margen τ, como la mínima distancia entre el hiperplano de separación y el ejemplo


mas próximo a él de cualquiera de las dos clases. Vapnik y Lerner [VL1963] propusieron en 1963
tomar como hiperplano separador óptimo aquel que maximizara el margen. En tal caso, el hiperplano
separador óptimo queda completamente caracterizado:

Proposición. Un hiperplano separador se dirá óptimo si y solo si equidista del ejemplo más cercano
de cada clase.

Demostración. La demostración se puede hacer por reducción al absurdo. Supongamos que la distancia
del hiperplano óptimo al ejemplo más cercano de la clase +1 fuese menor que la correspondiente al
ejemplo más cercano de la clase -1. Esto significa que se puede alejar el hiperplano del ejemplo de la
clase +1 una distancia tal que la distancia del hiperplano a dicho ejemplo sea mayor que antes y, a su vez,
siga siendo menor que la distancia al ejemplo más cercano de la clase -1. Llegamos a contradicción, pues
podemos aumentar el tamaño del margen cuando inicialmente suponíamos que éste era máximo.

Figura 1.2: Margen de un hiperplano de separación: (a) hiperplano de separación no-óptimo y su margen
asociado (no máximo) (b) hiperplano de separación óptimo y su margen asociado (máximo). [Fuente:
Figura 2 [C2014]]
Introducción a las SVM - Elena Campo León 3

Veamos la formulación matemática de esta nueva restricción sobre el hiperplano separador:


La distancia entre un hiperplano de separación D(x) y un ejemplo x0 viene dada por

|D(x0 )|
,
kwk2

que junto con (1.2) obtenemos que todos los ejemplos de entrenamiento deben cumplir:

yi D(xi )
>τ i = 1, . . . , n. (1.3)
kwk2

De la expresión anterior se deduce que encontrar el hiperplano separador óptimo equivale a hallar el w
que maximiza el margen. Puesto que existen infinitas soluciones que difieren solo en la escala de w se
fija por convenio que
τkwk2 = 1.

Así llegamos a la conclusión de que maximizar el margen equivale a disminuir la norma de w y por
tanto la condición (1.3) queda
yi D(xi ) > 1, i = 1, . . . , n. (1.4)

La búsqueda del hiperplano de separación óptimo se formaliza como un problema de optimización de


tipo cuadrático:

mı́n f (w) = 1/2(kwk2 )2 = 1/2(hw, wi)


(1.5)
s.a yi (hw, xi i + b) − 1 > 0, i = 1, . . . , n.

Observar que las restricciones de (1.2) quedan incluidas en (1.4). El hiperplano definido por w y b que
minimizan el problema (1.5) recibe el nombre de hiperplano de separación de margen duro (hard
margen). Resolver este problema de optimización cuadrática es difícil debido a la complejidad de las
restricciones, por ello haremos uso de la teoría de optimización.

Un problema de optimización, primal, tiene una forma dual si la función a optimizar y las restric-
ciones son estrictamente convexas. En ese caso resolver el problema dual es equivalente a obtener la
solución del primal (véase Apéndice A). En el caso que nos ocupa se puede demostrar que tanto la
función objetivo como las restricciones son funciones estrictamente convexas, por tanto admite un dual.
Para hallarlo haremos uso de la función de Lagrange:
n
L(w, b, α) = 1/2(hw, wi) − ∑ αi (yi (hw, xi i + b) − 1), i = 1, . . . , n, (1.6)
i=1

donde αi ≥ 0 son los multiplicadores de Lagrange. Aplicamos las condiciones de Karush-Kuhn-Tucker


(KKT), derivando (1.6) respecto a las variables sobre las que optimizamos en el primal (primera condi-
ción de KKT) e igualando a cero los productos por los multiplicadores de Lagrange (condición comple-
mentaria):

∂ L(w∗ , b∗ , α) n
≡ w∗ − ∑ αi yi xi = 0, i = 1, . . . , n,
∂w i=1
(1.7)
∂ L(w∗ , b∗ , α) n
≡ ∑ αi yi = 0, i = 1, . . . , n,
∂b i=1

αi [(1 − yi (hw∗ , xi i + b∗ )] = 0, i = 1, . . . , n. (1.8)


4 Capítulo 1. SVM para clasificación binaria

De (1.7) obtenemos la expresión de w∗ en términos de los multiplicadores de Lagrange y sus restriccio-


nes,
n
w∗ = ∑ αi∗ yi xi , i = 1, . . . , n, (1.9)
i=1
n
∑ αi∗ yi = 0, i = 1, . . . , n. (1.10)
i=1
Haciendo uso de (1.9) y (1.10) aplicados a (1.6) obtenemos la función a maximizar en el problema dual.
Añadiendo las restricciones de no negatividad asociadas a los multiplicadores de Lagrange junto con
(1.11) el problema dual es el siguiente:
n
1 n
máx L(α) = ∑ αi − αi α j yi y j (hxi , xj i)
i=1 2 i,∑
j=1
n
(1.11)
s.a ∑ αi yi ≥ 0, αi ≥ 0, i = 1, . . . , n.
i=1
En general, la principal ventaja de resolver el problema dual es que el coste computacional es mucho
menor, esto se debe a que en el problema dual el número de variables es directamente proporcional al
tamaño de la muestra n, en cambio el problema primal lo es con la dimensionalidad de los ejemplos.

El vector direccional w∗ del hiperplano óptimo lo obtenemos sustituyendo la solución del dual en
(1.9)
n
D(x) = ∑ αi∗ yi (hx, xi i) + b∗ , i = 1, . . . , n. (1.12)
i=1
Un ejemplo se dirá separable si satisface la restricción (1.4). Llamaremos vectores soporte (ver figura
1.3) a aquellos ejemplos que satisfacen (1.4) con igualdad. Caracterizamos estos ejemplos, para ello nos
fijamos de nuevo en la condición complementaria de KKT (1.8) y se deduce que si en un ejemplo αi > 0
entonces
yi (hw∗ , xi i + b∗ ) = 1,
por consiguiente, se puede afirmar que sólo los ejemplos que tengan asociado un αi > 0 serán vectores
soporte y por tanto son los únicos ejemplos que intervienen en la construcción del hiperplano. Además
al ser los más cercanos al hiperplano de separación serán los mas difíciles de clasificar.

Figura 1.3: Distancia de cualquier ejemplo, xi , al hiperplano de separación óptimo, viene dada por |D(xi )|
kwk .
En particular, si dicho ejemplo pertenece al conjunto de vectores soporte (identifcados por siluetas
1
sólidas), la distancia a dicho hiperplano será siempre kwk . Además, los vectores soporte aplicados a la
función de decisión siempre cumplen que |D(xi )| = 1. [Fuente: Figura 3 [C2014]]
Introducción a las SVM - Elena Campo León 5

La determinación de b∗ la realizamos a partir de (1.8), de tal forma que si αi > 0, es decir, estamos
con un vector soporte del problema, en ese caso

yi (hw∗ , xi i + b∗ ) = 1,

y si despejamos b∗ , obtenemos

b∗ = yvs − hw∗ , xvs i,

donde (xvs , yvs ) representa la tupla de cualquier ejemplo que satisfaga la igualdad anterior, es decir que
sea vector soporte. En la práctica es más robusto obtener b∗ promediando a partir de todos los vectores
soporte, sea vs dicho conjunto de índices y Nvs su cardinal, en tal caso

1
b∗ = ∑ (yi − hw∗ , xi i).
Nvs i∈vs

1.2. Ejemplos cuasi-separables linealmente

En la realidad es muy frecuente disponer de ejemplos que no son perfecta y linealmente separa-
bles. Cortes y Vapnik [CV1995] demuestran en 1995 que este tipo de problemas son mejores de tratar
si permitimos que algunos ejemplos no verifiquen las restricciones sobre el margen formuladas en el
problema primal (1.5). Dicho de otra forma, podemos relajar el grado de separabilidad entre los con-
juntos de ejemplos permitiendo que haya errores de clasificación en algunos ejemplos del conjunto de
entrenamiento. En este contexto se pueden dar dos situaciones para un ejemplo: cae dentro del margen
asociado a la clase correcta, de acuerdo a la frontera de decisión que define el hiperplano de separación
y en el otro caso, el ejemplo cae al otro lado de dicho hiperplano. En ambos casos se dice que el ejemplo
es no-separable, pero en el primer caso es clasificado de forma correcta y en el segundo, no lo es.

Para abordar este problema introducimos un conjunto de variables reales positivas ξi , i = 1, . . . n


llamadas variables de holgura, cada una asociada a un ejemplo, de forma que podemos controlar el
numero de ejemplos no separables. Las restricciones relajadas que deberá verificar cada ejemplo del
conjunto de entrenamientos serán:

yi (hw, xi i + b∗ ) > 1 − ξi , i = 1, . . . , n. (1.13)

Podemos entender la variable de holgura asociada a cada ejemplo (xi , yi ) como la desviación de la
situación separable, medida desde el margen de la clase correspondiente a dicho ejemplo. Estas variables
representan el potencial incumplimiento de las restricciones sobre el margen para cada ejemplo. Los
ejemplos se pueden clasificar (ver figura 1.4) en separables si su variable de holgura correspondiente
toma valor cero, si toma valor entre cero y uno, no separables pero correctamente clasificados y si es
mayor que uno son ejemplos no separables y mal clasificados. Por tanto es fácil deducir que ∑ni=1 ξi
permite medir el coste asociado al numero de ejemplos no-separables, cuanto mayor sea el valor de esta
suma, mayor sera el número de ejemplos no separables.
6 Capítulo 1. SVM para clasificación binaria

Figura 1.4: Los ejemplos xi , xj y xk son, cada uno de ellos, no separables (ξi , ξ j , ξk > 0). Sin embargo, xi
está correctamente clasificado, mientras que xj y xk están en el lado incorrecto de la frontera de decisión
y, por tanto, mal clasificados. [Fuente: Figura 4 [C2014]]

En el caso que nos ocupa la función a optimizar debe incluir los errores de clasificación que comete
el hiperplano de separación, es decir:

n
1
f (w, ξ ) = kwk2 +C ∑ ξi , (1.14)
2 i=1

donde C es una constante suficientemente grande, cuyo valor se determina manualmente y que permite
controlar en qué grado influye el término del coste de ejemplos no-separables en la minimización de la
norma, es decir, permitirá regular el compromiso entre el grado de sobreajuste del clasificador final y la
proporción del número de ejemplos no separables (complejidad y error empírico o de entrenamiento).
La elección de una C u otra determinará en cierto modo la calidad del clasificador como veremos en el
último capítulo. En consecuencia el nuevo problema de optimización es:

n
1
mı́n kwk2 +C ∑ ξi
2 i=1
(1.15)
s.a yi (hw, xi i + b∗ ) + ξi − 1 ≥ 0,
ξi ≥ 0, i = 1, . . . , n.

El hiperplano de separación, definido por w y b, resultante de resolver el problema (1.15) se deno-


mina hiperplano de separación de margen blando (soft margin).

Vapnik y Chervonenkis [VCh1989] demostraron en 1989 que el aumento de la complejidad de la


función separadora provoca una disminución del error de clasificación del conjunto de entrenamientos
sin embargo esto nos lleva a un sobreentrenamiento de la SVM de forma que aumenta el riesgo de error
cuando se aplica sobre ejemplos de prueba, es decir se pierde generalidad. Podemos ver la expresión a
minimizar en 1.15 como un compromiso entre la complejidad de la SVM inversamente proporcional a
kwk y el sobreentrenamiento controlado por la suma de las variables de holgura.

La resolución del problema primal (1.15) es similar al caso separable de la sección anterior con la
principal diferencia de que al tener dos familias de restricciones en (1.15) aparecerán dos familias de
multiplicadores de Lagrange. La resolución detallada se puede consultar en [C2014]. El problema dual
Introducción a las SVM - Elena Campo León 7

que se obtiene es:


n n
1
máx ∑ αi − 2 ∑ αi α j yi y j hxi , xj i
i=1 i, j=1
n
(1.16)
s.a ∑ αi yi = 0,
i,=1

0 ≤ αi ≤ C, i = 1, . . . , n.
Observar que ahora tenemos una clasificación aún más completa, que en el caso separable, de los vec-
tores soportes dado que los multiplicadores de Lagrange αi tienen cota superior. El razonamiento (ver
[C2014]) discurre paralelamente al de la obtención de una expresión para el calculo de b∗ y se deduce
principalmente del criterio de optimalidad (1.13) y de aplicar las KKT al problema primal.

Tenemos dos tipos de ejemplos de entrenamiento para los que αi > 0, luego satisfacen la restric-
ción (1.13) con igualdad, es decir, son vectores soporte y por tanto intervienen en la construcción del
hiperplano separador óptimo:
si 0 < αi∗ < C se tiene que ξi = 0 por tanto son ejemplos separables. Se denotan vectores soporte
"normales" (free support vectors).
si αi∗ = C, entonces 0 < ξi luego son ejemplos no separables y clasificados correctamente si
0 < ξi < 1 o mal clasificados si ξi > 1. Reciben el nombre de vectores soporte acotados (bounded
support vectors).
Los ejemplos de entrenamiento tales que αi = 0, no son vectores soporte. Además, verifican ξi = 0 y
por tanto corresponden a los ejemplos separables.

1.3. Ejemplos no separables linealmente


Cuando el conjunto de ejemplos no se puede separar por medio de una función lineal, un hiperplano
separador, recurrimos a una nueva técnica consistente en la transformación del espacio original mediante
una función no lineal hacia un espacio Hilbert dotado de un producto escalar denominado función kernel
(ver figura 1.5). Llamaremos espacio de entradas al espacio original de los ejemplos x. El espacio
transformado (de alta dimensionalidad) se llama espacio de características y se definirá a partir de un
conjunto de funciones base no lineales.

Figura 1.5: El problema de la búsqueda de una función de decisión no lineal en el espacio de entradas,
se puede transformar en un nuevo problema consistente en la búsqueda de una función de decisión lineal
(hiperplano) en un nuevo espacio transformado, el espacio de características. [Fuente: Figura 5 [C2014]]
8 Capítulo 1. SVM para clasificación binaria

Sea Φ : X −→ F la función de transformación que hace corresponder a cada vector de entrada x con
un punto en el espacio de características F , donde Φ(x) = [φ1 (x), . . . , φm (x)] y ∃ φi (x), i = 1, . . . , m tal
que φi (x) es una función no lineal. Por definición una función kernel es una función K : X × X −→ R
que a cada par de elementos del espacio de entrada X, le asigna, un valor real correspondiente al pro-
ducto escalar de las imágenes de dichos elementos en el espacio de las características F :

K(x, x0 ) = hΦ(x), Φ(x0 )i = φ1 (x)φ1 (x0 ) + · · · + φm (x)φm (x0 ). (1.17)

La teoría de Espacios de Hilbert con Núcleo Reproductor [A1944], muestra que las funciones Ker-
nel se corresponden con un producto escalar y que este induce un espacio lineal con mayor dimensión
que el espacio original, posiblemente infinita. La respuesta de como transformar el espacio de entradas,
de dimensión finita, en otro espacio de dimensión infinita nos la da el siguiente teorema.

Teorema (de Aronszajn). Para cualquier función K : X × X −→ R que sea simetrica1 y semidefinida
positiva2 , existe un espacio Hilbert y una función Φ : X −→ F tal que

K(x, x0 ) = hΦ(x), Φ(x0 )i ∀ x, x0 ∈ X. (1.18)

Boser, Guyon y Vapnik [BGV1992] demostraron en 1992 que como consecuencia de este teorema
para construir una función kernel no es necesario hacerlo a partir de un conjunto de funciones base
Φ(x) = [φ1 (x), . . . , φm (x)], simplemente basta definir una función que cumpla las dos condiciones del
teorema. De esta forma el kernel representa el producto escalar hφ (x), φ (x0 )i que induce un espacio de
alta dimensionalidad. Por tanto, para evaluar una función kernel no se necesitara conocer dicho conjunto
de funciones base.

Este hecho nos permite reproducir cualquier algoritmo lineal en un espacio de Hilbert o equivalen-
temente para cualquier algoritmo existe una versión no lineal, donde la transformación (no lineal) es Φ.
Este hecho se conoce como el truco de los kernels.

Algunos ejemplos de funciones kernel son:

Kernel lineal: K(x, x0 ) = hx, x0 i.

Kernel polinómico de grado-p: Kp (x, x0 ) = [γhx, x0 i + τ] p .

Kernel gaussiano: K(x, x0 ) = exp(−γkx − x0 k2 ), γ > 0. En la práctica, cualquier separador puede


construirse usando este kernel.

Kernel sigmoidal: K(x, x0 ) = tanh(γhx, x0 i + τ).

A los parámetros γ, τ y p se les denomina parámetros del kernel.

Una caracterización de las funciones kernel la proporciona el teorema de Mercer [J1982], que nos
asegura que toda función K(u, v) que verifica
Z
K(u, v)g(u)g(v) du dv > 0,
uv

para toda función g(.) de cuadrado integrable, es una función kernel.

1 Una función K : X × X −→ R es simetrica si K(x, x0 ) = K(x0 , x) ∀x, x0 ∈ X


2 Una n n
función K : X × X −→ R es semidefinida positiva si ∑i=1 ∑ j=1 ci c j K(xi , xj ) ≥ 0 para cualesquiera conjuntos
x1 , . . . , xn ∈ X y c1 , . . . , cn ∈ R, siendo n > 0
Introducción a las SVM - Elena Campo León 9

Volvemos a la formulación del problema en el caso no separable linealmente. La idea es construir


un hiperplano de separación lineal en el espacio de las características. La frontera de decisión lineal
obtenida en el nuevo espacio se transformará en una frontera de decisión no lineal en el espacio original
de entradas. En este contexto el hiperplano separador en el espacio de características viene dada por

D(x) = w1 φ1 (x) + · · · + wm φm (x) = hw, Φ(x)i. (1.19)

Observar que omitimos el parámetro b dado que se puede incluir en la base de funciones de transforma-
ción con la función constante φ1 (x) = 1.

El planteamiento del problema es igual que en la sección anterior, basta sustituir en el dual (1.16) el
producto escalar por la función Kernel:
n n
1
máx ∑ αi − 2 ∑ αi α j yi y j K(xi , xj )
i=1 i, j=1
n
(1.20)
s.a ∑ αi yi = 0,
i,=1

0 ≤ αi ≤ C, i = 1, . . . , n.

La razón por la que, ahora, el problema de optimización se expresa sólo en su forma dual, es la posible
dimensionalidad infinita del espacio de características ya que la solución del dual no depende de la
dimensionalidad del espacio sino de la cardinalidad del conjunto de ejemplos.
La función de decisión vendrá dada por:
n
D(x) = ∑ αi∗ yi K(x, xi ), i = 1, . . . , n, (1.21)
i=1

donde el valor de los parámetros αi , i = 1, . . . n se obtendrán como solución al problema de optimización


cuadrática dado por (1.20). Como ya mencionamos, no existe una forma teórica de encontrar el valor del
parámetro de regularización C. Sólo existe la heurística de usar un valor grande. La forma de determinar
C y el resto de parámetros del kernel se basa en técnicas de validación cruzada como veremos en el
último capítulo.

1.3.1. Solución del problema OR-exclusivo mediante SVMs


El problema or-exclusivo pertenece al caso de problemas separables no-linealmente. Se define
como el problema de encontrar un hiperplano de separación que clasifique sin error los siguientes 4
ejemplos:

Ejemplo x = (x1 , x2 ) y
1 (+1, +1) +1
2 (−1, +1) −1
3 (−1, −1) +1
4 (+1, −1) −1

Cuadro 1.1: ejemplos del problema OR-exclusivo

La resolución que se propone para el problema es crear un clasificador SVM usando un Kernel
polinómico con p = 2,γ = 1 y τ = 1, K2 (x, x0 ) = [hx, x0 i + 1]2
10 Capítulo 1. SVM para clasificación binaria

Una vez resuelto el problema dual


4 4
1
máx ∑ αi − 2 ∑ αi α j yi y j K2 (x, xi )
i=1 i, j=1
4 (1.22)
s.a ∑ αi yi = 0,
i,=1

0 ≤ αi ≤ C, i = 1, . . . , 4,

la solución queda αi = 0,125, i = 1, . . . 4 y la funcion de decisión lineal D(x) = 0,125 ∑4i=1 yi K2 (x, xi ).
Dado que ningún i cumple αi∗ = 0, podemos afirmar que todos los ejemplos son vectores soporte. Haga-
mos un estudio de la función kernel y el conjunto de funciones base (las operaciones se pueden consultar
en [C2014]).

K(x, x0 ) = hΦ(x), Φ(x0 )i = K2 (x, x0 ) =


√ √ √ √ √ √ 2 2
= [hx, x0 i + 1]2 = h(1, 2x1 , 2x2 , 2x1 x2 , x1 2 , x2 2 ), (1, 2x10 , 2x20 , 2x10 x20 , x10 , x20 )i.

La base de funciones de transformación al espacio de características es:


√ √ √
φ1 (x1 , x2 ) = 1, φ2 (x1 , x2 ) = 2x1 , φ3 (x1 , x2 ) = 2x2 , φ4 (x1 , x2 ) = 2x1 x2 , φ5 (x1 , x2 ) = x1 2 φ6 (x1 , x2 ) = x2 2 .

Finalmente, la función de decisión puede expresarse como


4
1
D(x) = 0,125 ∑ yi K2 (x, xi ) = √ φ4 (x).
i=1 2
A partir de esto podemos afirmar que de las seis dimensiones del espacio de características en el
que se ha transformado el espacio bidimensional original, la función de decisión lineal se expresa en
términos de sólo una φ4 . Basta una dimensión del espacio transformado para separar los 4 ejemplos del
conjunto de entrenamiento original (ver figura 1.6). Es fácil comprobar√ que φ4 (x) = 0 es
(ver [C2014]) √
el hiperplano de separación en el espacio de características y φ4 (x) = 2, φ4 (x) = − 2 delimitan los
margenes. En el espacio original la función de decisión no lineal es x1 x2 = 0 y los márgenes son las
hipérbolas x1 x2 = 1, x1 x2 = −1.

Figura 1.6: Solución al problema XOR: (a) hiperplano de separación en el espacio de características,
junto con su margen asociado (los cuatro ejemplos son vectores soporte) (b) función de decisión no
lineal en el espacio de ejemplos original resultante de transformar el hiperplano obtenido en (a) en
coordenadas del espacio original.[Fuente: Figura 7 [C2014]]
Capítulo 2

Clasificación multinomial y regresión

En este capítulo vamos a introducir dos extensiones de las SVM especialmente útiles en la práctica:
la clasificación en más de dos categorías y la predicción de una respuesta continua, es decir, un modelo
de regresión.

2.1. Caso multinomial


Las SVM fueron inicialmente diseñadas para clasificación binaria. Sin embargo los problemas reales
a menudo requieren discernir en mas de dos categorías.

Para extender SVM al caso de clasificación múltiple han sido propuestos muchos modelos. A gran-
des rasgos podemos diferenciar las técnicas existentes en métodos directos e indirectos.

2.1.1. Métodos indirectos


Los problemas de clasificación múltiple se suelen descomponer en una sucesión de problemas bina-
rios de forma que podemos aplicar el método estándar de resolución de SVM a cada uno por separado.
Los dos métodos más representativos de esta técnica son uno frente al resto (1VR) y uno frente a uno
(1V1). Ambos métodos son casos particulares de los Códigos Correctores de Errores de Salida (ECOC)
[BD1995], los cuales, descomponen el problema multiclase en un conjunto de problemas binarios.

Uno frente al resto (one-versus-rest)

Suponer que tenemos un problema de clasificación con k clases diferentes, el método 1VR construye
(entrena) k hiperplanos separadores. Para construir el m-ésimo clasificador binario, dado por fm (x) =
wm T Φ(x) + bm se consideran los ejemplos de entrenamiento de la m-ésima clase como de tipo positivo
y los restantes ejemplos de las k − 1 clases como negativos. De entre los k clasificadores el que nos
proporciona el máximo valor de fi (xnew ), i ∈ 1, . . . , k es elegido para determinar la etiqueta (clase) del
ejemplo de prueba xnew . El principal problema de la técnica uno frente al resto es el desequilibrio del
conjunto de entrenamientos: si suponemos que de cada clase hay el mismo numero de ejemplos de
1
entrenamientos la ratio de ejemplos positivos frente a negativos sera de k−1 , por tanto la simetría del
problema original se pierde.

Uno frente a uno (one-versus-one)

Dada una clase el método uno frente a uno estudia todos los posibles pares de clases, entre la dada y
cada una de las restantes induciendo un clasificador para cada uno de ellos. Se generan por tanto k(k−1)
2

11
12 Capítulo 2. Clasificación multinomial y regresión

clasificadores. Consideramos un ejemplo de prueba xnew y evaluamos cada clasificador, comparamos


ambas clases y a la clase ganadora se le da un voto, el ejemplo de prueba se clasificará en la clase que
más votos tenga. El número de clasificadores creados con este método es mucho mayor que con el ante-
rior, sin embargo en el problema dual de optimización cuadrática el número de variables escala en cada
caso con el número de ejemplos y consideramos dos clases, por tanto el tamaño del problema es mucho
menor que en el caso 1VR. Esto hace posible un entrenamiento más rápido. Para decidir la categoría de
cada ejemplo probamos k − 1 hiperplanos.

2.1.2. Métodos directos

Los métodos directos de clasificación múltiple basados en SVM enfocan el problema a un único
proceso de optimización, a través de combinar problemas de clasificación binaria en una única función
objetivo, de forma que se logra simultáneamente una clasificación de todas las clases. Sin embargo esto
conlleva una mayor complejidad a nivel computacional debido al tamaño del problema de optimización
cuadrática resultante.

SVM multinomial de Weston y Watkin

Vapnik [V1998], Weston y Watkin [WW1999] proponen que para un problema de clasificación
de k-clases se diseñe una única función objetivo que entrene las k SVMs binarias simultáneamente y
maximice los márgenes de cada cada clase con el resto de ejemplos. A grandes rasgos, es la idea del
método uno frente al resto unificado en una sola función objetivo. Dado un conjunto de l ejemplos
S = {(x1 , y1 ), . . . , (xl , yl )}, xi ∈ Rd correspondientes a k clases distintas, yi ∈ {1, . . . , k}, la formulación
general del problema primal en el espacio de características es:

1 k l
mı́n ∑ kwm k2 +C ∑ ∑ ζi,t
2 m=1 i=1 t6=yi
(2.1)
s.a wyi T Φ(xi ) + byi ≤ wyi T Φ(xi ) + bt + 2 − ζi,t ,
ζi,t ≥ 0, i = 1, . . . , l , t ∈ 1, . . . , k r yi ,

donde wm son cada uno de los vectores direccionales del hiperplano separador en el espacio Hilbert
correspondiente para cada problema de clasificación binario, b ∈ Rk son los términos independientes
para cada uno de los k clasificadores lineales, que se almacenan en un vector y la matriz ζ ∈ Rl×k las
variables de holgura. Las variables de holgura ζi,m = 1 − fyi (xi ) + fm (xi ), m ∈ 1, . . . , k r yi , si son positi-
vas representan la desviación respecto al margen correcto entre la clase i y otra clase m (ver figura 2.1).
Considerar la función [.]+ ≡ max(0, .), definimos la función de pérdida como ξi (1) = ∑m6=yi [ζi,m ]+ . La
función de decisión resultante es:

argmax fm (x) = argmax(wm T Φ(x) + bm ).


m m

La principal desventaja de este método es que el tiempo computacional puede ser muy grande dado
la enorme cantidad de variables en el problema de optimización cuadrática.
Introducción a las SVM - Elena Campo León 13

SVM multinomial de Crammer y Singer

Crammer y Singer [CS2001] presentaron en 2001 el siguiente plantamiento:

1 k l
mı́n ∑ kwm k2 +C ∑ ξi
2 m=1 i=1
(2.2)
s.a wyi T Φ(xi ) − wyi T Φ(xi ) ≤ 1 − δyi ,t − ξi ,
i = 1, . . . , l, t ∈ 1, . . . , k,

donde δi, j es la delta de Kronecker, y ξ ∈ Rl . Notar que las restricciones ξi ≥ 0, i = 1, . . . , l están


implícitamente en (2.2) cuando t = yi . En este caso la función de pérdida se define como la mayor de
las variables de holgura, es decir, ξi (2) = [máxm6=yi ζi,m ]+ . La función de decisión es:

argmax fm (x) = argmax(wm T Φ(x)).


m m

Aunque este método nos de un conjunto compacto de restricciones, el número de variables en el


problema dual es todavía elevado l × k.

La siguiente técnica se basa en estos algoritmos [CS2001] para desarrollar un método mas simplifi-
cado llamado SimMSVM, mediante la relajación de las restricciones. Dicho de otro modo resolver un
único problema de programación cuadrática de l variables es suficiente para resolver un problema de
clasificación multiclase.

SimMSVM

Con el objetivo de reducir el tamaño del problema, el número de restricciones debe ser proporcio-
nal al número de ejemplos l en lugar de l × k. Para construir el clasificador multiclase de SimMSVM
introducimos las siguientes funciones de pérdida relajadas,

k
1
ξi (3) = [ ∑ ζi,m ]+ .
k − 1 m=1,m6=yi

La pérdida sufrida es linealmente proporcional a la media de las distancias entre el ejemplo y el margen
correspondiente a su clase. La relación entre las funciones de pérdida ξi (1) , ξi (2) , ξi (3) es la que sigue:

ξi (1) ≥ ξi (2) ≥ ξi (3) .

Es de esperar que la función de pérdida relajada ξi (3) incurra en mas errores de clasificación (recor-
dar capítulo 1) en el sentido de que la pérdida para cada ejemplo puede no estar entre 0 y 1, y por tanto
el ejemplo estar mal clasificado. Sin embargo en la práctica estamos dispuestos a admitir cierto numero
tolerable de errores de clasificación pues de esta forma obtenemos una velocidad significativa durante
el proceso de entrenamiento.
14 Capítulo 2. Clasificación multinomial y regresión

Figura 2.1: Clasificación multiclase. Representamos tres clases con círculos, rectángulos y triángulos.
Las lineas de trazo grueso representan posibles frontera de decisión. Las lineas punteadas son margenes
positivos para cada par de clases delimitadas por la frontera de decisión. Observar que para un ejemplo
correctamente clasificado como x1 tenemos que ξi (1) = ξi (2) = ξi (3) = 0 puesto que las variables de
holgura son negativas ζ1,2 < 0, ζ1,3 < 0. En el caso opuesto el ejemplo x2 esta mal clasificado y viola
las dos fronteras de los margenes ζ2,1 > 0, ζ2,3 > 0. Los tres métodos generan una pérdida [Modificado
de Fuente: Figura 2.1 [WX2014]]

Tras la aplicación de las nuevas funciones de pérdida, el problema (2.2) de Crammer y Singer queda:

1 k 2
l
mı́n ∑ mkw k +C ∑ ξi
2 m=1 i=1
1 (2.3)
s.a wyi T Φ(xi ) − wm T Φ(xi ) ≤ 1 − ξi ,
k − 1 m6∑
=yi

ξi ≥ 0, i = 1, . . . , l.

Para transformar el problema a su dual usamos los argumentos habituales de KKT (ver capítulo 2
de [WX2014]). La función de decisión resultante es

argmax fm ∗ (x) = argmax ∑ αi ∗ K(xi , x),


m m i:yi =m

donde K(xi , xj ) es el elemento i,j de la matriz kernel.

Los métodos propuestos por Weston y Watkins, Crammer y Singer satisfacen el rango [0,1] de
la función de pérdida. Sin embargo en la práctica son de una gran complejidad a nivel computacional
debido al gran tamaño del problema de optimización cuadrática cuyo número de variables es el producto
del numero de ejemplos l por el numero de clases k. SimMSVM reduce el tamaño del problema dual
de l × k a l variables introduciendo una cota del error de clasificación relajada. En conjuntos de datos
reales SimMSVM alcanza una velocidad satisfactoria durante el proceso de entrenamiento, al mismo
tiempo que mantiene a la hora de clasificar una exactitud muy competitiva frente a los otros métodos de
resolución de problemas multiclase.
Introducción a las SVM - Elena Campo León 15

2.2. SVM para regresión


En esta sección estudiaremos la aplicaciónde las SVM en la resolución de problemas de regresión.
En estos casos, suelen llamarse SVR (Support Vector Regression).

Dado un conjunto de ejemplos de entrenamiento S = {(x1 , y1 ) . . . (xn , yn )}, donde xi ∈ Rd e yi ∈ R,


en el que se asume que los valores yi de todos los ejemplos de S se pueden ajustar (o cuasi-ajustar)
mediante un hiperplano, nuestro objetivo es encontrar los parámetros w = (w1 , . . . , wd ) que permitan
definir el hiperplano de regresión f (x) = (w1 x1 + · · · + wd xd ) + b = hw, xi + b.

Definimos el ruido o perturbación aleatoria  ∼ N (0, σ ) como el error en la medición del valor
y, es decir y = f (x) + . Para permitir cierto ruido en los ejemplos de entrenamiento se puede relajar la
condición de error entre el valor predicho por la función y el valor real. Para esto se utiliza la función
de perdida -insensible, L , definida por:


0 si |y − f (x)| ≤ ,
L (x) = (2.4)
|y − f (x)| −  en otro caso.

Es una función lineal con una zona insensible de anchura 2, en la que la función de pérdida toma valor
nulo. Eligiendo esta función permitimos cierta flexibilidad en la función solución, de forma que todos
los ejemplos que quedan confinados en la región tubular no serán considerados vectores soporte, pues
como hemos visto el coste asociado a la función de pérdida es 0. En la práctica es muy difícil lograr
un modelo de regresión lineal con error de predicción cero por ello recurriremos al concepto de margen
blando introducido en el capitulo 1.

Definimos las variables de holgura como la distancia al ejemplo medida desde la zona tubular del
hiperplano de regresión. Las variables de holgura ξi + y ξi − permitirán cuantificar el error de predicción
que se esta dispuesto a admitir para cada ejemplo de entrenamiento y con la suma de todas ellas el coste
asociado a los ejemplos con un error de predicción no nulo. Tomaremos ξi + > 0 cuando la predicción del
ejemplo f (xi ) es mayor que su valor real, yi , en una cantidad superior a  equivalentemente f (xi ) − yi >
. Análogamente ξi − > 0 cuando el valor real del ejemplo es mayor que su predicción en una cantidad
superior a , es decir, yi − f (xi ) > . En cualquier otro caso las variables de holgura toman valor cero.
Notar que ambas variables no pueden tomar simultáneamente valor distinto de cero, ocurre siempre que

ξi + ξ˙i = 0 (ver figura 2.2).

Figura 2.2: SVR con margen blando: se muestra la relación entre las variables de holgura, ξi − ,ξ j + ,
asociadas a ejemplos que quedan fuera de la zona tubular -insensible y la función de pérdida, L .
[Fuente: Figura 8 [C2014]]
16 Capítulo 2. Clasificación multinomial y regresión

Con todo esto ya podemos plantear el problema a optimizar. Nuestro objetivo es minimizar la su-
ma de las funciones de pérdida asociadas, cada una a un ejemplo del conjunto de entrenamientos 1
∑ni=1 L (yi , f (xi )) = ∑i∈zona no tubular |yi − f (xi )| − . Esto es equivalente a maximizar la zona tubular
definida por la función de pérdida, en la cual esta toma valor nulo2 por tanto maximizar  equivale a
minimizar kwk. Todo ello unido a la penalización impuesta por las variables de holgura definen un pro-
blema de optimización análogo al problema de clasificación con margen blando (1.15) con la salvedad
de que ahora tenemos dos tipos de variables de holgura:

n
1
mı́n kwk2 +C ∑ (ξi + + ξi − )
2 i=1
s.a (hw, xi i + b) − yi −  − ξi + ≤ 0, (2.5)

yi − (hw, xi i + b) −  − ξi ≤ 0,
ξi + , ξi − ≥ 0, i = 1, . . . , n.

La transformación al problema dual (ver [C2014]) es análoga a las vistas hasta ahora con la diferencia
de que consideraremos cuatro familias de multiplicadores de Lagrange: αi + , αi − , βi + , βi − .

n n n
1
máx ∑ (αi − − αi + )yi −  ∑ (αi − + αi + ) − 2 ∑ (αi − − αi + )(α j − − α j + )hxi , xj i
i=1 i=1 i, j=1
n
(2.6)
s.a ∑ (αi + − αi − ) = 0,
i=1
0 ≤ αi + , αi − ≤ C, i = 1, . . . , n.

El regresor obtenido es:


n
∑ (αi − − αi + )hx, xi i + b∗ . (2.7)
i=1

El valor óptimo de b∗ se obtiene (ver [C2014]) a partir de las restricciones resultantes de la aplicación
de la segunda condición KKT y las restricciones sobre el dual, de forma que:

b∗ = yi − hw∗ , xi i + , si 0 < αi + < C,


b∗ = yi − hw∗ , xi i − , si 0 < αi − < C.

Observar que para definir el hiperplano de regresión tenemos en cuenta los ejemplos con función de
pérdida no nula, es decir, los que se encuentran en el exterior de la región tubular. Visto en términos de
los parámetros introducidos anteriormente, para los vectores soporte se deduce de las condiciones KKT
que αi + αi − = 0, entonces
para los ejemplos que están fuera de la zona tubular se cumplirá ξi + ξi − = 0, si ξi − = 0 y ξi + > 0
entonces αi + = C y αi − = 0 y si ξi − > 0 y ξi + = 0 entonces αi − = C y αi + = 0.

los vectores soporte que caen justo en la frontera de la zona de sensibilidad verifican que si
0 < αi + < C entonces αi − = 0, en ese caso debe ser ξi + = 0 y ξi − = 0. Análogamente para el
otro caso.
1 Enla práctica se minimiza ∑i∈zona no tubular (yi − f (xi )2 dada la complejidad en el manejo del valor absoluto.
2 Observar 1
que la zona tubular juega en el problema de regresión el mismo papel que el margen τ = kwk en el problema de
clasificación.
Introducción a las SVM - Elena Campo León 17

Los ejemplos para los que αi + = αi − = 0, no son considerados vectores soporte, se encuentran dentro
de la región tubular.

Kernelización de las SVR

Cuando los ejemplos no pueden ajustarse por una función lineal, recurrimos al igual que en el pro-
blema de clasificación, al uso de funciones Kernel. A través de un Kernel adecuado se induce un espacio
Hilbert, denominado también espacio de características, en este sí es posible ajustar los ejemplos trans-
formados mediante un regresor lineal, que sera de la forma:

n
f (x) = ∑ (αi − − αi + )K(x, xi ). (2.8)
i=1

Los coeficientes αi + , αi − se obtienen como resultado de resolver el problema dual que resulta de (2.6)
con los productos escalares sustituidos por las funciones Kernel.

n n
1 n
máx ∑ (αi − − αi + )yi −  ∑ (αi − + αi + ) − 2 i,∑
(αi − − αi + )(α j − − α j + )K(xi , xj )
i=1 i=1 j=1
n
(2.9)
s.a ∑ (αi + − αi − ) = 0,
i=1
0 ≤ αi + , αi − ≤ C, i = 1, . . . , n.

En problemas de clasificación tenemos que elegir un Kernel adecuado y un parámetro C. Para re-
solver problemas de regresión mediante SVRs a lo anterior, se añade la selección de un adecuado .
Ambos parámetros C y  afectan a la complejidad del modelo. En el caso de problemas de regresión
con ruido, el parámetro  debería ser elegido de forma que refleje la varianza del ruido de los datos.
Puesto que en la mayoría de casos prácticos es posible obtener una medida aproximada de la varianza
del ruido a partir de los datos de entrenamiento. Para problemas de regresión sin ruido (problemas de
interpolación) el valor  corresponde a la exactitud preestablecida de interpolación, de forma que, cuan-
to mayor sea el valor de , menor número de vectores soporte se necesitarán, y viceversa. Por otro lado,
la metodología usada para seleccionar los valores óptimos de C y el resto de parámetros del kernel, se
basa normalmente en técnicas de validación cruzada al igual que en clasificación.
Capítulo 3

Aplicaciones prácticas

3.1. Introducción al software para SVM


Los clasificadores SVM son uno de los métodos mas populares y eficientes de clasificación y re-
gresión actualmente disponibles, su implementación existe en prácticamente todos los lenguajes de
programación mas usados.

Las variaciones de SVM para los que existe solución implementada son los siguientes:

C-clasificación: la descrita en el capítulo 1 con el parámetro C que refleja el compromiso entre el


error de entrenamiento y la complejidad.

ν-clasificación, este modelo permite un mayor control sobre el numero de vectores soporte espe-
cificando un parámetro adicional ν que aproxima la proporción de vectores soporte.

Clasificación de clase única (novelty detection). Este modelo trata de encontrar el soporte de una
distribución y por lo tanto permite la detección de valores atípicos.

clasificación multiclase, vista en el capítulo 2.

-regresión, es la presentada en el capítulo 2.

ν-regresión, con modificaciones en el modelo, análogas al caso de ν- clasificación.

En cuanto a los kernels, el gaussiano y el laplaciano son generalmente usados cuando no hay ningún
conocimiento previo del conjunto de datos dada su validez general. El kernel lineal es útil cuando trata-
mos grandes vectores con datos muy dispersos, como es el problema de la categorización de un texto.
El kernel polinomial es comúnmente usado para el procesamiento de imagenes y el sigmoide para redes
neuronales. Por último los splines y el kernel anova se suelen emplear en problemas de regresión. (ver
[KMH2006])

La mayor parte del software existente esta escrito en C o C++, como la biblioteca libsvm [M2015],
ganadora del premio ’IJCNN 2001 Challenge’, que proporciona una robusta y rápida implementación de
SVM y produce resultados muy competentes en la mayoría de problemas de regresión y clasificación.
También destacan SVMlight, SVMTorch, Royal Holloway Support Vector Machines, mySVM y
M-SVM. Otras bibliotecas proveen de interfaces para MATLAB como The MathWorks, SVM and
Kernel Methods Matlab Toolbox o MATLAB Support Vector Machine Toolbox y la SVM toolbox
for Matlab (para más detalle ver [KMH2006]).

19
20 Capítulo 3. Aplicaciones prácticas

Actualmente existen en R cuatro bibliotecas con las funciones necesarias para estimar SVM.

La primera implementación de SVM en R se introdujo en la biblioteca e1071 que proporciona


una interfaz para libsvm. Incluye algoritmos para la resolución del problema C-SVM clasifica-
ción, ν-clasificación. En regresión para - clasificación, ν-clasificación y novelty detection. Para
problemas multiclase tenemos los algoritmos de 1VR y 1V1. Estos problemas los resuelve a tra-
vés del optimizador SMO (consultar Apéndice A).

La biblioteca kernlab proporciona una interfaz para ksvm. Dispone de una gran cantidad de
funciones kernel y permite la resolución de los problemas del apartado anterior y además C-
BSVM (C-clasificación con una restricción sobre las cotas) y su análogo en regresión -BSVM.
Además el optimizador utilizado también es SMO.

klaR incluye una interfaz para SVMlight. Esta biblioteca es aplicable a C-SVM para clasificación
y -SVM en regresión. En clasificación multiclase SVMlight usa el método 1VR. Los problemas
de optimización cuadrática anteriores se resuelven con el método chuncking (consultar Anexo A).

Finalmente svmpath implementa un algoritmo con un coste computacional mínimo, que resuelve
el problema de C-clasificación en el caso binario para todos los valores del parámetro regulador
del coste λ = C1 . En este caso los únicos kernels utilizados son el gaussiano y el polinomial.

Resumiendo kernlab es una implementación muy flexible que incluye la gran mayoría de formula-
ciones y kernels de SVM, sin embargo carece de la herramienta necesaria para la selección de un modelo
adecuado. e1071 incluye una herramienta de selección de modelos, pero no ofrece tanta flexibilidad en
la elección del kernel. La biblioteca klaR proporciona una interfaz muy básica para SVMlight y esta
permitida solo para uso no comercial. svmpath se usa fundamentalmente como herramienta explorato-
ria para encontrar el valor óptimo del parámetro regulador del coste λ = C1

3.2. Aplicación al cáncer de mama: datos WDBC


Veamos una aplicación práctica de las máquinas SVM en el campo de la medicina. Disponemos
del conjunto de datos wdbc.data que se puede encontrar en el repositorio UCI [UCIMLR]. Estos datos
proceden de un estudio realizado en la Universidad de Wisconsin, en 1995 con 569 pacientes diagnos-
ticadas con cáncer de mama. Para cada paciente tenemos 32 variables: el número de historia clínica, el
diagnóstico y atributos de interés médico relativos a las células tumorales. Todas las variables son de
tipo numérico excepto, la variable dicotómica Diagnosis (V2), que indica el diagnóstico del tumor, ma-
ligno M o benigno B. La proporción real de tumores es 357 benignos y 212 malignos (para más detalle
consultar Apéndice B).

Nuestro objetivo es a partir de este conjunto de datos construir una máquina SVM que diagnostique
con la mayor certeza posible el tipo de tumor que padece una nueva paciente. Para ello usaremos la
biblioteca e1071 disponible en R. Comenzaremos realizando una partición del conjunto de datos inicial
(dataset), en dos subconjuntos:

trainset: son los ejemplos con los que entrenamos, es decir, con los que construiremos el modelo.
El tamaño de trainset es entorno al 70 % del volumen de ejemplos de dataset y son seleccionados
al azar.

testset: ejemplos con los que comprobaremos la calidad de la máquina obtenida. Es el 30 % res-
tante de dataset.

Las ordenes que usamos en R son las siguientes (fijando previamente una semilla para garantizar la
reproducibilidad de los resultados obtenidos):
Introducción a las SVM - Elena Campo León 21

index <- 1:nrow(dataset)


set.seed(150516)
testindex <- sample(index, trunc(length(index)*30/100))
testset <- dataset[testindex,]
trainset <- dataset[-testindex,]

La búsqueda de los parámetros óptimos, tanto del kernel como el del coste C, se realiza mediante
técnicas de validación cruzada con k = 10 bloques. La función tune.svm crea un mallado de tantas
dimensiones como parámetros a optimizar. Para cada tupla del mallado, se divide el conjunto de datos
trainset en k bloques. Se ajustan k modelos de SVM considerando como conjuntos de de entrenamiento
k-1 bloques, y con el k-ésimo bloque, se prueba el modelo hallado, obteniéndose el error. El error de
la validación cruzada para esa tupla de parámetros del mallado, se halla realizando la media aritmética
de los errores de los k modelos. La salida que da R es la tupla de parámetros del kernel y el coste, que
proporcionan el mínimo error.

En este caso, estudiaremos la calidad del clasificador sobre tres tipos de kernels: polinómico, radial
y sigmoide. Aplicamos tune.svm sobre trainset para obtener los parámetros óptimos propios de cada
kernel (las ordenes que mostraremos a lo largo del capítulo son para un kernel radial. El script completo
con las sentencias para el kernel sigmoide y polinómico se pueden consultar en el Apéndice C).

set.seed(150516)
tuned1 <- tune.svm(V2~., data = trainset, gamma = 10^(-6:2), cost =10^(0:3),
kernel="radial")

Obtenemos la siguiente tabla:

Kernel Error óptimo γ C τ p


Radial 0,0225 0,001 100 − −
Sigmoide 0,025 0,001 1000 −1 −
Polinómico 0,0225 0,01 10 1 2

Cuadro 3.1: parámetros óptimos para cada tipo de kernel seleccionado. R denota a los parámetros de la
siguiente forma γ ≡ gamma, C ≡ cost, τ ≡ coef0, p ≡ degree
.

Seguidamente usamos la función svm para ajustar el modelo óptimo para cada kernel.

model1 <- svm(V2~., data = trainset, kernel = "radial", gamma = 0.001,


cost = 100, probability=TRUE)

Para comparar la calidad de cada modelo generado, libre del peligro de un sobreajuste, usamos las
funciones predict y tab aplicadas sobre testset que nos proporcionan una matriz de confusión, una
herramienta muy útil en la visualización del rendimiento de un algoritmo de aprendizaje estadístico.

prediction1 <- predict(model1, testset[,-2],probability = TRUE)


tab1 <- table(pred = prediction1, true = testset[,2])

Sin pérdida de generalidad, en el ámbito médico podemos considerar cuatro posibles conceptos
asociados a cada elemento de la matriz de confusión:

Verdadero Positivo (TP), el paciente da positivo en la prueba diagnóstica de la enfermedad,


siendo cierto que la padece. En nuestro caso, se le predice tumor maligno, cuando realmente lo
tiene.
22 Capítulo 3. Aplicaciones prácticas

Falso Positivo (FP), el paciente da positivo, siendo falso que padece la enfermedad. Se le predice
que tiene tumor maligno, cuando tiene tumor benigno.
Verdadero negativo (TN), el paciente da negativo, siendo verdad que no posee la enfermedad.
Se le predice tumor benigno, siendo cierto.
Falso negativo (FN), el paciente da negativo en la prueba, cuando realmente esta enfermo. Se le
predice que tiene tumor maligno, cuando tiene tumor benigno.
Esta información la recoge la matriz de confusión de la siguiente forma:

Figura 3.1: matriz de confusión

Ahora, a partir de la matriz mostrada en la Figura 3.1, es posible obtener una serie de métricas útiles
para estimar el rendimiento del clasificador:
Sensibilidad: es la probabilidad de que para un sujeto enfermo se obtenga en una prueba diag-
nóstica un resultado positivo. La sensibilidad caracteriza la capacidad de la prueba para detectar
la enfermedad en sujetos enfermos.
TP
Sensibilidad =
T P + FN
Especificidad: es la probabilidad de que un sujeto sano tenga un resultado negativo en la prueba.
La especificidad caracteriza la capacidad de la prueba para detectar la ausencia de la enfermedad
en sujetos sanos.
TN
Especificidad =
T N + FP
Precisión:
TP
Precisión =
T P + FP
En el cuadro 3.2 podemos comparar nuestros clasificadores en función de la sensibilidad, especifi-
cidad y precisión.

Modelo Sensibilidad Especificidad Precisión AUC


Kernel Radial 0,9531 0,9811 0,9682 0,9847
Kernel Sigmoide 0,9531 0,9716 0,9531 0,9828
Kernel Polinómico 0,9687 0,9716 0,9538 0,9844

Cuadro 3.2: sensibilidad, especificidad, precisión y AUC para cada modelo estimado.

Puesto que los valores anteriores son mejores cuanto mas próximos están a 1, observamos que los
tres clasificadores son buenos, sin embargo, para compararlos y decidir cual de ellos es el mejor, nece-
sitamos introducir una nueva herramienta, las curvas ROC.
Introducción a las SVM - Elena Campo León 23

Una curva ROC (Receiver Operating Characteristics), es una descripcion bidimensional del ren-
dimiento de un clasificador, basada en la evolución conjunta de la sensibilidad y la especificidad. El
análisis de las curvas ROC ha sido principalmente usado en el área de la medicina con el fin de anali-
zar la utilidad de una prueba diagnóstica. El objetivo es determinar el ”punto de corte” para el que se
alcanza la sensibilidad y especificidad más alta. Para formular el diagnóstico de una determinada enfer-
medad, la prueba diagnostica se apoya sobre ese punto de corte a partir del cuál se decide la presencia
del diagnostico [F2005]. Recientemente, el uso de curvas ROC se ha generalizado al área del aprendi-
zaje estadístico, debido a que a partir del análisis de las métricas anteriores se obtiene la evaluación del
rendimiento de un modelo de clasificación.

Para construir la curva ROC usamos la función roc de la biblioteca pROC, previamente habremos
tomado de prediction el bloque de probabilidades relativo a la probabilidad estimada de que la varia-
ble diagnosis tome valor M. La razón de tomar probabilidades es que de esta forma podemos hacer un
barrido con todos los posibles puntos de corte. Cada punto de corte se corresponde con un punto en la
curva ROC, para el que se calcula el índice de Youden, definido como Sensibilidad + Especificidad-1.
Se elige como punto de corte óptimo el que maximiza el índice anterior. Observar que en la matriz de
confusión el punto de corte esta preestablecido en 0.5 de forma que si un ejemplo supera dicho umbral
se considera automáticamente que da positivo en la prueba.
pred.prob1<-attr(prediction1,"probabilities")[,1]
library(pROC)
rocCurve1 <- roc(response=testset[,2],predictor=pred.prob1)

El indicador mas utilizado para la comparación de distintas curvas ROC es el área bajo la curva
ROC o AUC. El AUC de un clasificador es equivalente a la probabilidad de que el clasificador ordene o
puntúe un ejemplo positivo elegido aleatoriamente más alto que uno negativo. La función auc nos da el
área bajo la curva y ci.auc el intérvalo de confianza de este indicador.
auc(rocCurve1)
ci.roc(rocCurve1)

En medicina un test se considera excelente cuando el AUC esta entre 0.97 y 1. Observando la colum-
na AUC del cuadro 3.2 podemos deducir que la calidad de nuestros clasificadores es excelente, siendo
el mejor el de kernel radial.

Por último representamos la curva ROC usando la orden plot:


plot(rocCurve1,legacy.axes=TRUE, print.thres=TRUE)

Figura 3.2: Curva ROC obtenida en R, representa el rendimiento del modelo con kernel radial.
24 Capítulo 3. Aplicaciones prácticas

En la figura 3.2 observamos que el punto de corte para el que se maximiza el índice de Youden es
0.624, para el que se alcanza una sensibilidad y especificidad de 0.953 y 1. Por tanto se produce una
ligera mejora respecto a los resultados obtenidos por defecto con el umbral 0.5. En principio podríamos
tomar como punto de corte para la prueba diagnóstica el obtenido mediante curvas ROC.

Nuestros resultados, tras haber optimizado por validación cruzada los parámetros del modelo nos
dan un rendimiento muy similar al obtenido en [AAS2012], donde se usan métodos de clasificación
combinados con el objetivo de mejorar el rendimiento individual de cada uno.
Anexos

25
Apéndice A

Optimización cuadrática

En este anexo se hace un resumen de las principales ideas de la teoría de optimización, orientado a
la resolución de problemas asociados con el uso de SVMs (para mayor detalle consultar [F1987]).

Sean f y gi , i = 0, . . . , n funciones convexas, consideramos el siguiente problema de optimización


denominado problema primal:

mı́n f (x) x∈Ω


(A.1)
s.a gi (x) ≤ 0, i = 1, . . . , n.

donde f es la función a optimizar y las gi son las restricciones. La solución del problema primal, x∗ ,
cumplirá que gi (x∗ ) ≤ 0 y f (x∗ ) ≤ f (x) ∀x t.q. gi (x) ≤ 0, donde i = 1, . . . , n. Se define la función de
Lagrange como:
n
L(x, α) = f (x) + ∑ αi gi (x),
i=1
donde los coeficientes αi ≥ 0 reciben el nombre de multiplicadores de Lagrange. Esta función incorpora
la función objetivo o función a optimizar y las funciones restricción en una única función. A partir de la
función de Lagrange se puede definir el problema dual como:

máx ϕ(α) = ı́nf L(x, α)


x∈Ω (A.2)
s.a αi (x) ≥ 0, i = 1, . . . , n.

La teoría de la optimalidad asegura que bajo ciertas condiciones resolver el problema dual es equivalente
a hallar la solución del primal asociado y viceversa. La ventaja de esta transformación es que normal-
mente el problema dual es más fácil de resolver que el primal. Los dos siguiente teoremas muestran la
relación existente entre las soluciones de los dos problemas.
Teorema. Sean x y α vectores tales que satisfacen las restricciones respectivas del problema primal y
dual, es decir, gi (x) ≤ 0 y αi ≥ 0, con i = 1, . . . , n, entonces ϕ(α) ≤ f (x).
Del teorema anterior se pueden extraer dos corolarios. El primero establece que el problema dual
está acotado superiormente por el problema primal. El segundo permite afirmar que si ϕ(α) = f (x),
entonces α y x son soluciones, respectivamente, del problema dual y primal.

Este teorema establece una heurística para resolver, simultáneamente, el problema primal y dual.
De forma que estaremos más cerca de la solución, a medida que la diferencia sea más pequeña. La solu-
ción se alcanza cuando la diferencia |ϕ(α) − f (x)| sea más pequeña. La solución se alcanza cuando la
diferencia es nula. Esta solución corresponde a un punto silla de la función lagrangiana, caracterizado

27
28 Capítulo A. Optimización cuadrática

por ser simultáneamente un mínimo de L(x, α) respecto de x y un máximo de L(x, α) respecto de α.

El segundo teorema, denominado teorema de Karush-Kuhn-Tucker establece las condiciones sufi-


cientes (condiciones KKT) para que un punto x∗ sea solución del problema primal.
Teorema (de Karush-Kuhn-Tucker). Si en el problema primal (A.1), las funciones f : Rd −→ R y
gi : Rd −→ R, i = 1, . . . , n son todas ellas funciones convexas, y existen constantes αi ≥ 0, i = 0, . . . , n
tales que:

∂ f (x∗ ) n
∂ gi (x∗ )
+ ∑ αi = 0, j = 1, . . . , d,
∂ xj i=1 ∂ xj
αi∗ gi (x∗ ) = 0, i = 1, . . . , n,

entonces (x∗ , α ∗ ) es la solución óptima del problema.


La primera condición surge como consecuencia de la definición de la función ϕ(α) como el ínfimo
de la función Lagrangiana, punto en el que las derivadas parciales respecto de x deben ser cero. La
segunda condición, denominada condición complementaria, es la que garantizará que los óptimos del
problema primal y dual coincidan (ϕ(α ∗ ) = f (x∗ )), ya que, de ser cierta la condición, todos los suman-
dos del sumatorio de la función Lagrangiana serían nulos.

El interés del Teorema de Karush-Kuhn-Tucker es que establece las condiciones que han de cum-
plirse para poder resolver el problema primal gracias al dual. Así, partiendo del problema primal, se
construye la función lagrangiana. Seguidamente, se aplica la primera condición del teorema de KKT a
dicha función y esto permite obtener un conjunto de relaciones que, sustituidas en la función de Lagran-
ge, harán desaparecer todas las variables primales de dicha función. Este paso es equivalente a calcular
ϕ(α) = ı́nfx∈Ω L(x, α). La función dual así obtenida, sólo dependerá de los multiplicadores de Lagran-
ge. También es posible que, del conjunto de relaciones obtenido al aplicar la primera condición KKT,
surjan restricciones adicionales para las variables duales (multiplicadores de lagrange).

Finalmente la solución del problema primal la obtenemos sustituyendo el resultado obtenido al


resolver el problema dual, en las relaciones que anteriormente se obtuvieron al aplicar la primera con-
dición KKT a la función lagrangiana.

En el caso de que la función f sea cuadrática y las gi restricciones lineales, el problema (A.1) se
dice que es de optimización cuadrática:

1
mı́n f (x) = xT Qx + cT x
2
s.a gi (x) = ai T x + bi ≤ 0, i = 1, . . . , k, (A.3)

hi (x) = di T x + ei = 0, i = 1, . . . , l,

donde los vectores x, c, ai y di ∈ Rd , la matriz Q ∈ Rm×m es semidefinida positiva y bi y ei son constantes.


Puesto que hay dos tipos de restricciones tenemos dos familias de multiplicadores de Lagrange αi y βi ,
de forma que la función de Lagrange queda:
k l
L(x, α, β ) = f (x) + ∑ αi gi (x) + ∑ βi hi (x),
i=1 i=1

donde α = (α1 , . . . , αk )T , αi ≥ 0 para i = 1, . . . , k y β = (β1 , . . . , βl )T .


Introducción a las SVM - Elena Campo León 29

Cuando el problema de optimización es cuadrático, como caso particular del Teorema de Karush-
Kuhn-Tucker se deduce el siguiente corolario:

Corolario. Sea el problema de optimización cuadrática (A.3), la solución óptima (x∗ , α ∗ , β ∗ ) existe si
y solo si se satisfacen las siguientes condiciones:

∂ f (x∗ ) n
∂ gi (x∗ ) n
∂ hi (x∗ )
+ ∑ αi + + ∑ βi = 0, j = 1, . . . , m,
∂ xj i=1 ∂ xj i=1 ∂ xj
αi∗ gi (x∗ ) = 0, i = 1, . . . , k,
αi∗ ≥ 0, i = 1, . . . , k,

hi (x ) = 0, i = 1 . . . , l.

Una vez hemos transformado el problema (A.3) a su dual se procede a su resolución mediante
técnicas de programación cuadrática. Realizamos una breve reseña sobre algunos de los algoritmos más
utilizados, para mayor detalle consultar [KMH2006],[AFP].

El método chunking, permite resolver un problema de optimización cuadrático con un pequeño


conjunto (chunk) de variables o ejemplos de entrenamiento en nuestro caso. Si particularizamos a
la resolución de problemas cuadráticos de SVMs, los ejemplos cuyos multiplicadores de Lagrange
asociados, αi , toman valor 0 o C, son excluidos y el problema de optimización se resuelve con
el resto de ejemplos. Este procedimiento se repite hasta que se alcanza la solución óptima del
problema cuadrático.

SMO (Sequential Minimization Optimization). Este algoritmo esta basado en el método anterior
con la diferencia de que ahora, en cada iteración, se resuelve de forma analítica un problema
cuadrático usando únicamente dos ejemplos (conjunto activo). De esta forma en cada iteración
se actualizan los valores de los αi correspondientes a los ejemplos para los que se ha resuelto el
problema. Actualmente, las bibliotecas más potentes, con las funciones necesarias para estimar
SVM, utilizan SMO como optimizador cuadrático.
30 Capítulo A. Optimización cuadrática
Apéndice B

Descripción variables del conjunto de


datos

Los datos de Wisconsin Diagnostic Breast Cancer (WDBC) fueron recogidos para un estudio rea-
lizado por el Dr. William H. Wolberg, W. Nick Street y Olvi L. Mangasarian, investigadores de la
universidad de Wisconsin en Noviembre de 1995. El objetivo de dicho estudio consistía en diagnosticar
mediante técnicas de aprendizaje estadístico el tipo de tumor de mama de cada paciente dependiendo de
las características de los núcleos celulares extraídos.

Para cada uno de los 569 pacientes se tomó una imagen de tejido tumoral procedente de la mama.
De las 32 variables del conjunto de datos las dos primeras son relativas a la identificación del paciente
y el diagnóstico de su tumor:
Número de historia clínica.
Diagnóstico o diagnosis del tumor del paciente (M = maligno, B = benigno). Esta variable se
denota V2 en el conjunto de datos dataset, indica la etiqueta de cada ejemplo.
En cada imagen se recogió información sobre 10 características de cada núcleo celular del tejido:
radio, es la media de las distancias del centro a los puntos de su perímetro.
textura, es la desviación estándar de los valores de la escala de gray.
perímetro.
área.
suavidad, es la variación local de las longitudes del radio.
perímetro2
compactitud, definida por area−1 .

concavidad, es la severidad de las porciones cóncavas del contorno.


puntos cóncavos, es el número de porciones cóncavas del contorno.
simetría.
dimensión fractal, definida por coastline approximation − 1.
Los datos que visualizamos se obtuvieron computando para cada una de las características anteriores
la media, la desviación típica y el peor valor de los núcleos de la imagen, de forma que obtenemos 30
variables. A modo de ejemplo la variable 3 indica la media de los radios, la 13 la desviación estandar de
los radios y la 23 el peor de los radios en la imagen de cada paciente. Además cada uno de los valores
que toman las variables esta codificado con 4 dígitos y no hay datos ausentes.

31
32 Capítulo B. Descripción variables del conjunto de datos
Apéndice C

Script R y salidas no incluidas en la


memoria

C.1. Script
dataset <- read.csv("C:/Users/Vaio/Desktop/TFG/aplicaciones practicas
TFG/dataset.txt", header=FALSE)
View(dataset)

#separamos dataset en un conjunto de entrenamiento y otro de prueba, fijando


una semilla

index <- 1:nrow(dataset)


set.seed(150516)
testindex <- sample(index, trunc(length(index)*30/100))

testset <- dataset[testindex,]

trainset <- dataset[-testindex,]

#instalamos el paquete e1071 y lo cargamos

install.packages(’e1071’, dependencies = TRUE)


library(e1071)

#para el kernel radial hallamos los parámetros gamma y coste usando la técnica
de validación cruzada
#fijamos la semilla antes de cada simulación

set.seed(150516)

tuned1 <- tune.svm(V2~., data = trainset, gamma = 10^(-6:2), cost = 10^(-1:3),


kernel="radial")
summary(tuned1)

#obtenemos para el kernel radial los parámetros optimos gamma=0.001,coste=100


#para ellos, creamos el modelo tomando probability=TRUE ası́ podremos hacer
un barrido con todos los puntos de corte en las curvas ROC.

33
34 Capítulo C. Script R y salidas no incluidas en la memoria

model1 <- svm(V2~., data = trainset, kernel = "radial", gamma = 0.001 ,


cost = 100, probability=TRUE)

summary(model1)

#usando la orden predict y tab construimos la matriz de confusión

prediction1 <- predict(model1, testset[,-2],probability = TRUE)


tab1 <- table(pred = prediction1, true = testset[,2])
show(tab1)

#cogemos la parte de probabilidades de prediction y la primera columna


asociada a M

pred.prob1<-attr(prediction1,"probabilities")[,1]

#construimos la curva ROC

library(pROC)
rocCurve1 <- roc(response=testset[,2],predictor=pred.prob1)
auc(rocCurve1)
ci.roc(rocCurve1)
plot(rocCurve1,legacy.axes=TRUE,print.thres=TRUE)

#kernel sigmoide

set.seed(150516)
tuned2 <- tune.svm(V2~., data = trainset, gamma = 10^(-6:2), cost =10^(-1:3),
coef0=(-2:2),kernel="sigmoid")
summary(tuned2)

model2 <- svm(V2~., data = trainset, kernel = "sigmoid", gamma = 0.001 ,


cost = 1000, coef0=-1, probability=TRUE)
summary(model2)

prediction2 <- predict(model2, testset[,-2],probability = TRUE)


tab2 <- table(pred = prediction2, true = testset[,2])
show(tab2)

pred.prob2<-attr(prediction2,"probabilities")[,1]

library(pROC)
rocCurve2 <- roc(response=testset[,2],predictor=pred.prob2)
auc(rocCurve2)
ci.roc(rocCurve2)
plot(rocCurve2,legacy.axes=TRUE,print.thres=TRUE)

#kernel polinomial

set.seed(150516)
Introducción a las SVM - Elena Campo León 35

tuned3 <- tune.svm(V2~., data = trainset, gamma = 10^(-5:0), cost =10^(1:3),


coef0=(-1:1),degree=(0:4),kernel="polynomial")
summary(tuned3)

model3 <- svm(V2~., data = trainset, kernel = "polynomial", gamma = 0.01 ,


cost = 10, coef0=1, degree=2 , probability=TRUE)
summary(model3)

prediction3<- predict(model3, testset[,-2],probability = TRUE)


tab3 <- table(pred = prediction3, true = testset[,2])
show(tab3)

pred.prob3<-attr(prediction3,"probabilities")[,1]

library(pROC)
rocCurve3 <- roc(response=testset[,2],predictor=pred.prob3)
auc(rocCurve3)
ci.roc(rocCurve3)
plot(rocCurve3,legacy.axes=TRUE,print.thres=TRUE)

C.2. Salidas no incluidas en la memoria


Radial

> library(e1071)
> set.seed(150516)
> tuned1 <- tune.svm(V2~., data = trainset, gamma = 10^(-6:2),
cost = 10^(-1:3),kernel="radial")
> summary(tuned1)

Parameter tuning of ‘svm’:

- sampling method: 10-fold cross validation

- best parameters:
gamma cost
0.001 100

- best performance: 0.0225

- Detailed performance results:


gamma cost error dispersion
1 1e-06 1e-01 0.3709615 0.07259428
2 1e-05 1e-01 0.3709615 0.07259428
3 1e-04 1e-01 0.3709615 0.07259428
4 1e-03 1e-01 0.2832051 0.07817465
5 1e-02 1e-01 0.0525000 0.03809710
6 1e-01 1e-01 0.0775641 0.04624279
7 1e+00 1e-01 0.3709615 0.07259428
8 1e+01 1e-01 0.3709615 0.07259428
9 1e+02 1e-01 0.3709615 0.07259428
36 Capítulo C. Script R y salidas no incluidas en la memoria

10 1e-06 1e+00 0.3709615 0.07259428


11 1e-05 1e+00 0.3709615 0.07259428
12 1e-04 1e+00 0.2755769 0.08212662
.
.
.

> model1 <- svm(V2~., data = trainset, kernel = "radial",


gamma = 0.001 , cost = 100, probability=TRUE)
> summary(model1)

Call:
svm(formula = V2 ~ ., data = trainset, kernel = "radial", gamma = 0.001,
cost = 100, probability = TRUE)

Parameters:
SVM-Type: C-classification
SVM-Kernel: radial
cost: 100
gamma: 0.001

Number of Support Vectors: 39

( 19 20 )

Number of Classes: 2

Levels:
B M
> prediction1 <- predict(model1, testset[,-2],probability = TRUE)
> tab1 <- table(pred = prediction1, true = testset[,2])
> show(tab1)
true
pred B M
B 104 3
M 2 61

#Sensibilidad=61/(61+3)= 0,9531
#Especificidad=104/(104+2)= 0,9811
#Precisión=61/(61+2)= 0,9682

> pred.prob1<-attr(prediction1,"probabilities")[,1]
> library(pROC)
> rocCurve1 <- roc(response=testset[,2],predictor=pred.prob1)
> auc(rocCurve1)
Area under the curve: 0.9847
> ci.roc(rocCurve1)
95\% CI: 0.9614-1 (DeLong)
> plot(rocCurve1,legacy.axes=TRUE,print.thres=TRUE)
Introducción a las SVM - Elena Campo León 37

Call:
roc.default(response = testset[, 2], predictor = pred.prob1)

Data: pred.prob1 in 106 controls (testset[, 2] B) < 64 cases (testset[, 2] M).


Area under the curve: 0.9847

Figura C.1: Curva ROC obtenida en R, representa de rendimiento del modelo con kernel radial.

Sigmoide

> set.seed(150516)
> tuned2 <- tune.svm(V2~., data = trainset, gamma = 10^(-6:2), cost =10^(-1:3),
coef0=(-2:2),kernel="sigmoid")
> summary(tuned2)

Parameter tuning of ‘svm’:

- sampling method: 10-fold cross validation

- best parameters:
gamma coef0 cost
0.001 -1 1000

- best performance: 0.025

- Detailed performance results:


gamma coef0 cost error dispersion
1 1e-06 -2 1e-01 0.37096154 0.07259428
2 1e-05 -2 1e-01 0.37096154 0.07259428
3 1e-04 -2 1e-01 0.37096154 0.07259428
4 1e-03 -2 1e-01 0.37096154 0.07259428
5 1e-02 -2 1e-01 0.36339744 0.07649301
6 1e-01 -2 1e-01 0.10012821 0.04393591
7 1e+00 -2 1e-01 0.09769231 0.04770196
8 1e+01 -2 1e-01 0.08269231 0.02893860
9 1e+02 -2 1e-01 0.08256410 0.04081006
10 1e-06 -1 1e-01 0.37096154 0.07259428
38 Capítulo C. Script R y salidas no incluidas en la memoria

11 1e-05 -1 1e-01 0.37096154 0.07259428


12 1e-04 -1 1e-01 0.37096154 0.07259428
.
.
.

> model2 <- svm(V2~., data = trainset, kernel = "sigmoid", gamma = 0.001,
cost = 1000, coef0=-1, probability=TRUE)
> summary(model2)

Call:
svm(formula = V2 ~ ., data = trainset, kernel = "sigmoid", gamma = 0.001,
cost = 1000, coef0 = -1, probability = TRUE)

Parameters:
SVM-Type: C-classification
SVM-Kernel: sigmoid
cost: 1000
gamma: 0.001
coef.0: -1

Number of Support Vectors: 34

( 15 19 )

Number of Classes: 2

Levels:
B M
> prediction2 <- predict(model2, testset[,-2],probability = TRUE)
> tab2 <- table(pred = prediction2, true = testset[,2])
> show(tab2)
true
pred B M
B 103 3
M 3 61

#Sensibilidad=61/(61+3)= 0,953125
#Especificidad =103/(103+3)= 0,9716
#Precisión=61/(61+3)= 0,953125

> pred.prob2<-attr(prediction2,"probabilities")[,1]

> library(pROC)
> rocCurve2 <- roc(response=testset[,2],predictor=pred.prob2)
> auc(rocCurve2)
Area under the curve: 0.9828
> ci.roc(rocCurve2)
95\% CI: 0.9581-1 (DeLong)
Introducción a las SVM - Elena Campo León 39

> plot(rocCurve2,legacy.axes=TRUE,print.thres=TRUE)

Call:
roc.default(response = testset[, 2], predictor = pred.prob2)

Data: pred.prob2 in 106 controls (testset[, 2] B) < 64 cases (testset[, 2] M).


Area under the curve: 0.9828

Figura C.2: Curva ROC obtenida en R, representa de rendimiento del modelo con kernel sigmoide.

Polinomial

tuned3 <- tune.svm(V2~., data = trainset, gamma = 10^(-5:0), cost =10^(1:3),


coef0=(-1:1),degree=(0:4),kernel="polynomial")
> summary(tuned3)

Parameter tuning of ‘svm’:

- sampling method: 10-fold cross validation

- best parameters:
degree gamma coef0 cost
2 0.01 1 10

- best performance: 0.0225

- Detailed performance results:


degree gamma coef0 cost error dispersion
1 0 1e-05 -1 10 0.37096154 0.07259428
2 1 1e-05 -1 10 0.36596154 0.07675757
3 2 1e-05 -1 10 0.37096154 0.07259428
4 3 1e-05 -1 10 0.15269231 0.06584304
5 4 1e-05 -1 10 0.38852564 0.05716796
6 0 1e-04 -1 10 0.37096154 0.07259428
7 1 1e-04 -1 10 0.06250000 0.04750731
8 2 1e-04 -1 10 0.65685897 0.07181271
9 3 1e-04 -1 10 0.05000000 0.03535534
10 4 1e-04 -1 10 0.69942308 0.05443097
40 Capítulo C. Script R y salidas no incluidas en la memoria

11 0 1e-03 -1 10 0.37096154 0.07259428


12 1 1e-03 -1 10 0.03000000 0.02581989
.
.
.

> model3 <- svm(V2~., data = trainset, kernel = "polynomial", gamma = 0.01,
cost = 10, coef0=1, degree=2 , probability=TRUE)
> summary(model3)

Call:
svm(formula = V2 ~ ., data = trainset, kernel = "polynomial", gamma = 0.01,
cost = 10, coef0 = 1, degree = 2, probability = TRUE)

Parameters:
SVM-Type: C-classification
SVM-Kernel: polynomial
cost: 10
degree: 2
gamma: 0.01
coef.0: 1

Number of Support Vectors: 43

( 18 25 )

Number of Classes: 2

Levels:
B M
> prediction3<- predict(model3, testset[,-2],probability = TRUE)
> tab3 <- table(pred = prediction3, true = testset[,2])
> show(tab3)
true
pred B M
B 103 2
M 3 62
#Sensibilidad =62/(62+2)=0.9687
#Especificidad =103/(103+3)=0.9716
#Precisión=62/(62+3)=0.9538
> pred.prob3<-attr(prediction3,"probabilities")[,1]
> library(pROC)
> rocCurve3 <- roc(response=testset[,2],predictor=pred.prob3)
> auc(rocCurve3)
Area under the curve: 0.9844
> ci.roc(rocCurve3)
95\% CI: 0.9609-1 (DeLong)
> plot(rocCurve3,legacy.axes=TRUE,print.thres=TRUE)
Introducción a las SVM - Elena Campo León 41

Call:
roc.default(response = testset[, 2], predictor = pred.prob3)

Data: pred.prob3 in 106 controls (testset[, 2] B) < 64 cases (testset[, 2] M).


Area under the curve: 0.9844

Figura C.3: Curva ROC obtenida en R, representa de rendimiento del modelo con kernel polinomial.
Bibliografía

[AAS2012] M.B.A BDELHALIM , M.A BD - ELGHANY Z EID , G.I. S ALAMA, Breast Cancer Diagnosis
on Three Different Datasets Using Multi-Classifiers,International Journal of Computer and Infor-
mation Technology, 1, 1, September 2012.

[A1944] N. A RONSZAJN, La théorie générale des noyaux réproduisants et ses applications. Procee-
dings of the Cambridge Philosophical Society, 39, 133–153, 1944.

[AFP] A.A RTÉS ,A.R.F IGUEIRAS Y F.P ÉREZ, Double Chunking for Solving SVMs for Very Large Da-
tasets

[BD1995] G. BAKIRI Y T. D IETTERICH Solving multiclass learning problems via error-correcting


output codes. J. Artif. Intell. Res. 2, 263–286, 1995.

[BGV1992] B.E. B OSER , I.M. G UYON , AND V.N. VAPNIK, A training algorithm for optimal margin
classifiers Proceedings of the 5th Annual ACM Workshop on Computational Learning Theory,
144–152, 1992.

[BL] L. B OTTOU Y C H . L IN, Support Vector Machine Solvers

[C2014] E. C ARMONA, Tutorial sobre Máquinas de Vectores Soporte (SVM), ETS de Ingeniería Infor-
mática, Universidad Nacional de Educación a Distancia, Madrid, 2014.

[CV1995] C. C ORTES AND V.N. VAPNIK . Support vector networks. Machine Learning, 20, 1–25,
1995.

[VCh1989] A.JA . C HERVONENKIS Y V.N. VAPNIK The necessary and sufficient conditions for con-
sistency of the method of empirical risk minimization. Yearbook of the Academy of Sciences of
the USSR on recognition, Classification, and Forecasting 2, Moscow 207-249, 1989.

[CS2001] K. C RAMMER , Y. S INGER On the algorithmic implementation of multiclass kernel-based


vector machines. J. Mach. Learn. 2, 265–292, 2001.

[F2005] T. FAWCET An Introduction to ROC Analysis. In Pattern Recognition Letters, 861-874, 2005.

[F1987] R.F LETCHER Practical Methods of Optimization. John Wiley and Sons, Chichester,second
edition, 1987.

[KMH2006] K. H ORNIK , A. K ARATZOGLOU Y D. M EYER, Support Vector Machines in R, Journal


of Statistical Software, 15, 9, April 2006.

[J1982] K.J ÖRGENS Linear integral operators, Pitman, Boston, 1982

[VL1963] A. L ERNER Y V.N. VAPNIK . Pattern recognition using generalized portrait method. Auto-
mation and Remote Control, 24, 774–780, 1963.

[M2015] D. M EYER, Support Vector Machines The Interface to libsvm in package e1071, FH Techni-
kum Wien, Austria, 2015.

43
44 Capítulo C. Bibliografía

[V1995] V.N. VAPNIK . The Nature of Statistical Learning Theory. Springer, New York, 1995.

[V1998] V.N. VAPNIK Statistical Learning Theory. Wiley, New York, 1998.

[WX2014] Z. WANG Y X. X UE, Support Vector Machines Applications, Springer, 2014.

[WW1999] C.WATKINS Y J. W ESTON, Multi-class support vector machines Proceedings of


ESANN99, 1999.

[WSVM] M ÁQUINAS DE VECTORES DE SOPORTE , https://es.wikipedia.org/wiki/


Máquinas_de_vectores_de_soporte.

[WAS] A PRENDIZAJE SUPERVISADO , https://es.wikipedia.org/wiki/Aprendizaje_


supervisado

[UCIMLR] UCI, M ACHINE L EARNING R EPOSITORY, https://archive.ics.uci.edu/ml/


datasets/Breast+Cancer+Wisconsin+(Diagnostic)

You might also like