Está en la página 1de 4

Mquinas de soporte vectorial (SVM)

Son un conjunto de algoritmos de aprendizaje supervisado desarrollados


por Vladimir Vapnik y su equipo en los laboratorios AT&T. Aunque
originariamente las SVMs fueron pensadas para resolver problemas de
clasificacin binaria, actualmente se utilizan para resolver otros tipos de
problemas (regresin, agrupamiento, multi-clasificacin). Tambin son diversos
los campos en los que han sido utilizadas con xito, tales como visin artificial,
reconocimiento de caracteres, categorizacin de texto e hipertexto,
clasificacin de protenas, procesamiento de lenguaje natural, anlisis de series
temporales.(1) De hecho, desde su introduccin, han ido ganando un merecido
reconocimiento gracias a sus slidos fundamentos tericos. Aunque estos
fundamentos tericos pueden ser muy pesados computacionalmente siguen
siendo uno de los favoritos en el rea de inteligencia artificial, compitiendo
muy cercanamente con las redes neuronales.
Dentro de la tarea de clasificacin, las SVMs pertenecen a la categora de los
clasificadores lineales, puesto que inducen separadores lineales o hiperplanos,
ya sea en el espacio original de los ejemplos de entrada, si stos son
separables o cuasi-separables (ruido), o en un espacio transformado (espacio
de caractersticas), si los ejemplos no son separables linealmente en el espacio
original. (2)
Mientras la mayora de los mtodos de aprendizaje se centran en minimizar los
errores cometidos por el modelo generado a partir de los ejemplos de
entrenamiento (error emprico), el sesgo inductivo asociado a las SVMs radica
en la minimizacin del denominado riesgo estructural. (3) La idea es
seleccionar un hiperplano de separacin que equidista de los ejemplos ms
cercanos de cada clase para, de esta forma, conseguir lo que se denomina un
margen mximo a cada lado del hiperplano. Adems, a la hora de definir el
hiperplano, slo se consideran los ejemplos de entrenamiento de cada clase
que caen justo en la frontera de dichos mrgenes. Estos ejemplos reciben el
nombre de vectores soporte.

Se ha encontrado que los hiperplanos de separacin son buenos clasificadores


cunado los ejemplos son perfectamente separables
o cuasi-separables.
Cuando los ejemplos no son separables el algoritmo SVM posee otro tipo de
procesamiento: traslada las caractersticas a un nuevo plano, un espacio
transformado de alta dimensionalidad y busca hiperplanos de separacin
optima, en dichos espacios transformados. A cada uno de estos espacios se le
denomina espacio de caractersticas, para diferenciarlo del espacio de
ejemplos de entrada (espacio-x).

Por definicin, una funcin kernel es una funcin matemtica que permiten
convertir lo que sera un problema de clasificacin no lineal en el espacio
dimensional original, a un sencillo problema de clasificacin lineal en un
espacio dimensional mayor (espacio de caractersticas).

Existen distintas funciones kernel por ejemplo:

Kernel lineal:

kernel polinmico de grado-p:

kernel gaussiano:

kernel sigmoidal:

La librera LIBSVM es un paquete software pensado para resolver problemas de


clasificacin y regresin mediante mquinas de vectores soporte. Entre sus
principales caractersticas, cabe citar que es un software de cdigo abierto;
implementa diferentes formulaciones SVM con la posibilidad de usar diferentes
tipos de kernels; permite la clasificacin multiclase y la posibilidad de usar
tcnicas de validacin cruzada para la seleccin de modelos. Tambin ofrece
interfaces para una gran cantidad de lenguajes de programacin (Python, R,
MATLAB, Perl, Ruby, Weka, Common LISP, CLISP, Haskell, OCaml, LabVIEW, y
PHP).
Las opciones con las que cuenta libsvm son :
Para seleccionar que tipo de anlisis realizaras a travs de SVM se define el
siguiente apartado:
-s tipo de SVM
0
1
2
3
4

------

C-SVC
nu-SVC
one-class
epsilon-SVR
nu-SVR

C-Support Vector Classification


-Support Vector Classification
SVM Distribution Estimation (One-class SVM)
e-Support Vector Regression (e-SVR)
-Support Vector Regression (-SVR)

Para configurar la funcin kernel se tienen la siguiente estructura:


-t kernel_type : set type of kernel function (default 2)
0 -- linear:
u'*v
1 -- polynomial:
(gamma*u'*v + coef0)^degree
2 -- radial basis function:
exp(-gamma*|u-v|^2)
3 -- sigmoid:
tanh(gamma*u'*v + coef0)

Las dos principales subrutinas de libsvm son svmtrain y svmpredict. Svmtrain


es donde podemos configurar la librera SVM para ajustarlo a las caractersticas
de nuestros datos, se corrern varios bases de datos para establecer la
exactitud y el rendimiento de nuestro clasificador SVM.
Base de datos
Iniciado con un ejemplo sencillo con una de las bases de datos con las que
cuenta esta librera encontramos un conjunto de datos de corazn de 270
instancias.
[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
model = svmtrain(heart_scale_label, heart_scale_inst, '-t 2 -c 100 -g 1');
[predict_label,
accuracy,
dec_values]
=
svmpredict(heart_scale_label,
heart_scale_inst, model);
Accuracy = 100% (270/270) (classification)
Estas sentencias indican la exactitud de nuestro clasificador utilizando el total
de las instancias para ver el rendimiento de nuestro sistema. El siguiente
conjunto de sentencias se desarrollara
para separar los datos en
entrenamiento y test para evaluar nuestro clasificador con la misma
configuracin.
[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
train_data = heart_scale_inst(1:150,:);
train_label = heart_scale_label(1:150,:);
test_data = heart_scale_inst(151:270,:);
test_label = heart_scale_label(151:270,:);
Para la funcin kernel lineal:
model_linear = svmtrain(train_label, train_data, '-t 0');
[predict_label_L, accuracy_L, dec_values_L] = svmpredict(test_label, test_data,
model_linear);
Accuracy = 81.6667% (98/120) (classification)
Para la funcin kernel polinomial:
Accuracy = 82.5% (99/120) (classification)
Para la funcin kernel gaussiana :
Accuracy = 84.1667% (101/120) (classification)
Para la funcin kernel sigmoidea: :
Accuracy = 73.3333% (88/120) (classification)
Como se observo es posible cambiar el rendimiento de nuestra mquina de
soporte vectorial variando la configuracin y los parmetros del modelo
Concrete.mat
Definir la configuracin que se obtuvo:
model = svmtrain(re,datos1, '-s 3 -c 10 -t 2 -g 1 -r 1 -d 3 ');
[predict_label, accuracy, dec_values] = svmpredict(re,datos1, model);
Para regresin se obtuvo un Mean squared error = 5.57271 (regression);
Pakinson.mat

Para SVM en regresin se obtuvo un Mean squared 52.2007 (regression) lo que


coincide con las redes neuronales evaluadas en el trabajo previo.

Conclusin

Las mquinas de soporte vectorial son una eficiente forma de evaluar


problemas de clasificacin y regresin. Aunque sus mtodos son complicados y
difciles de entender,
es una herramienta que con un entrenamiento
relativamente fcil a nivel de cdigo como desventaja su aplicacin es difcil ya
que su coste computacional es alto. Otra desventaja en este modelo es que se
necesita una buena funcin kernel, es decir, se necesitan metodologas
eficientes para sintonizar los parmetros de inicializacin de la SVM.

Bibliografa
1. LIBSVM: A Library for Support Vector Machines, Chih-Chung Chang and
Chih-Jen Lin Department of Computer Science National Taiwan
University, Taipei, Taiwan.
2.

A Practical Guide to Support Vector Classification, Chih-Wei Hsu, ChihChung Chang, and Chih-Jen Lin Department of Computer Science
National Taiwan University, Taipei 106, Taiwan.
3. Tutorial sobre Mquinas de Vectores Soporte (SVM), Enrique J. Carmona
Surez.

También podría gustarte