Hemos desarrollado una sencilla interfaz gráfica para nuestra implementación del algoritmo SVM, llamada SVM Classifier. Esta interfaz permite a los usuarios novatos descargar el software para su instalación local y aplicar fácilmente un sofisticado algoritmo de aprendizaje automático a sus datos. Implementamos una aplicación de acceso público que permite a los usuarios de SVM realizar el entrenamiento, la clasificación y la predicción de SVM. Para obtener detalles sobre el uso del software, el conjunto de datos de muestra y las explicaciones de los algoritmos subyacentes, remitimos a los lectores al sitio web y a las referencias que allí se indican. Los usuarios de SVM también podrían estar interesados en una serie de otras implementaciones de SVM con licencia que se han descrito anteriormente, incluyendo LIBSVM .
Utilizamos los algoritmos SVM implementados por el equipo Libsvm , como núcleo. Con el fin de maximizar la compatibilidad entre plataformas, el clasificador SVM se implementa en java utilizando las bibliotecas estándar de swing (Figura 1).
Figura 1
Captura de pantalla de la interfaz del clasificador SVM.
Se utilizan como herramientas de construcción el código abierto y multiplataforma Apache Ant, y la edición gratuita de Borland JBuilder 2005 Foundation. Aunque desarrollado en WinXP OS, SVM Classifier ha sido probado con éxito en Linux y otras plataformas de Windows, y se ejecutará en Mac OS9 con la extensión de Swing. Los usuarios son capaces de ejecutar SVM Classifier en cualquier ordenador con java 1.4 runtime o una versión superior.
La aplicación tiene dos marcos, la clasificación y el marco de predicción. En ambos marcos se puede importar el formato de los archivos de datos como «Etiquetado» o como formato de archivo de datos «Delimitado» (Figura 2 y Figura 3).
Figura 2
Captura de pantalla del formato de archivo de datos etiquetado. El formato del archivo de datos de entrenamiento y prueba es: <label><index1><valor1><index2><valor2><label> es el valor objetivo de los datos de entrenamiento. Para la clasificación, debe ser un número entero que identifique una clase (se admite la clasificación multiclase). Para la regresión, es cualquier número real. Para la SVM de una clase, no se utiliza, por lo que puede ser cualquier número. <index> es un número entero empezando por 1, <value> es un número real. Los índices deben estar en orden ascendente. Las etiquetas del archivo de datos de prueba sólo se utilizan para calcular la precisión o el error. Si no se conocen, basta con rellenar esta columna con un número.
Figura 3
Captura de pantalla del formato de archivo delimitado. El formato de archivo delimitado es un formato común para el experimento de microarrays. Se puede extraer de la mayoría de los experimentos de microarrays utilizando cualquier hoja de cálculo. El formato del archivo de datos de entrenamiento y prueba es: <label><label><label><valor1><valor2><valor3><label> es el valor objetivo de los datos de entrenamiento. Para la clasificación, debe ser un número entero que identifique una clase (se admite la clasificación multiclase). Para la regresión, es cualquier número real. Para la SVM de una clase, no se utiliza, por lo que puede ser cualquier número. <valor> es un número real. Los índices deben estar en orden ascendente. Las etiquetas del archivo de datos de prueba sólo se utilizan para calcular la precisión o el error. Si se desconocen, basta con rellenar esta columna con un número.
En el marco de la clasificación el usuario creará un modelo a partir del conjunto de datos de entrenamiento para la clasificación (C-SVC, nu-SVC), la regresión (epsilon-SVR, nu-SVR) y la estimación de la distribución.
En este marco el usuario puede importar el conjunto de datos de entrenamiento en la aplicación, seleccionar la ruta para guardar el archivo del modelo, seleccionar el tipo de SVM y kernel apropiado y crear un modelo para el conjunto de datos. El archivo del modelo puede utilizarse posteriormente para la predicción. También hay una opción para la validación cruzada. La técnica de validación cruzada (CV) se utiliza para estimar la precisión de cada combinación de parámetros en el rango especificado y nos ayuda a decidir los mejores parámetros para el problema de clasificación.
En el marco de la predicción el modelo se aplicará a los datos de prueba para predecir la clasificación de los datos desconocidos. También hemos proporcionado una herramienta para visualizar los datos bidimensionales a la que se puede acceder desde la barra de menú de visualización (Figura 4).
Figura 4
Captura de pantalla de visualización de datos bidimensionales.
Tipos de Núcleo
K(x i , x j ) = Φ(x i )TΦ(x j ) se denomina función de núcleo. Aquí los vectores de entrenamiento x i son mapeados en un espacio dimensional superior (probablemente infinito) por la función Φ. Existen los siguientes cuatro kernels básicos: lineal, polinómico, función básica radial (RBF) y sigmoide:
Lineal: K(x i , x j ) = x i Tx j
Polinómico: El núcleo polinómico de grado d es de la forma
K(x i , x j ) = (x i , x j )d
RBF: El kernel gaussiano, conocido también como función de base radial, es de la forma
Donde σ representa un ancho de ventana
Sigmoide: El kernel sigmoide es de la forma
K(x i , x j ) = tanh(k(x i x j ) + ϑ)
Cuando se utiliza el kernel sigmoide con la SVM se puede considerar como una red neuronal de dos capas.
Tipos de SVM
1. C-SVC: Clasificación por vectores de soporte (caso binario)
Dado un conjunto de entrenamiento de pares instancia-etiqueta (x i , y i ), i = 1,….,l donde x i ∈ Rny y ∈ {1, -1}l, ←las máquinas de vectores de soporte (SVM) requieren la solución del siguiente problema de optimización:
La SVM encuentra un hiperplano de separación lineal con el máximo margen en este espacio de mayor dimensión. C > 0 es el parámetro de penalización del término de error . La función de decisión es:
2. nu-SVC: Clasificación de vectores de soporte ν (caso binario)
El parámetro ν ∈ (0, 1) es un límite superior de la fracción de errores de entrenamiento y un límite inferior de la fracción de vectores de soporte . Dados los vectores de entrenamiento x i ∈ Rn, i = 1,…,l, en dos clases, y un vector y ∈ Rls tal que y i ∈ {1, -1}, la forma primal considerada es:
Y la función de decisión es:
3. epsilon-SVR: ε-Regresión de Vectores de Soporte (ε-SVR)
Una extensión de la SVM es la de la tarea de regresión. Un problema de regresión está dado siempre que Y = ℝ para el conjunto de datos de entrenamiento Z = {(x i , y i ) ∈ X × Y | i = 1,…,M} y nuestro interés es encontrar una función de la forma f: X → RD. La formulación primal para el SVR viene dada entonces por:
Tenemos que introducir dos tipos de variables de holgura ξ i y , una para controlar el error inducido por las observaciones que son mayores que el límite superior del tubo ε, y la otra para las observaciones menores que el límite inferior. La función aproximada es:
4. nu-SVR: ν-Regresión de Vectores de Soporte (ν-SVR)
Similar a ν-SVC, para la regresión, utiliza un parámetro ν para controlar el número de vectores de soporte. Sin embargo, a diferencia de ν-SVC donde C es reemplazado por ν aquí ν reemplaza el parámetro ε de ε-SVR. Entonces la función de decisión es la misma que la de ε-SVR.
5. SVM de una clase: estimación de la distribución
La diferencia de la clasificación de una clase con respecto al problema de clasificación estándar es que los datos de entrenamiento no están distribuidos de forma idéntica a los datos de prueba. El conjunto de datos contiene dos clases: una de ellas, la clase objetivo, está bien muestreada, mientras que la otra clase está ausente o muestreada muy escasamente. Schölkopf et al. han propuesto un enfoque en el que la clase objetivo está separada del origen por un hiperplano. La forma primal considerada es:
Y la función de decisión es:
Validación cruzada
El objetivo de utilizar la validación cruzada es identificar buenos parámetros para que el clasificador pueda predecir con precisión datos desconocidos .
Una forma común es separar los datos de entrenamiento en dos partes, una de las cuales se considera desconocida en el entrenamiento del clasificador. Entonces, la precisión de la predicción en este conjunto puede reflejar con mayor precisión el rendimiento en la clasificación de los datos desconocidos. Una versión mejorada de este procedimiento es la validación cruzada.
En la validación cruzada v-fold, el conjunto de entrenamiento se divide en v subconjuntos de igual tamaño. Secuencialmente, un subconjunto se prueba utilizando el clasificador entrenado en los restantes v – 1 subconjuntos. Así, cada instancia del conjunto de entrenamiento se predice una vez, de modo que la precisión de la validación cruzada es el porcentaje de datos que se clasifican correctamente. El procedimiento de validación cruzada puede evitar el problema de sobreajuste.
Cortar
Chang y Lin mencionaron que, dado que para muchos problemas el número de vectores de soporte libres (es decir 0 <α i < C) es pequeño, la técnica de encogimiento reduce el tamaño del problema de trabajo sin considerar algunas variables acotadas .
Cacheo
El cacheo es otra técnica para reducir el tiempo computacional. Dado que Q (Q es una matriz semidefinida positiva de l por l, Q ij = y i y j K(x i , x j )) es totalmente densa y puede no estar almacenada en la memoria del ordenador, los elementos Qij se calculan cuando se necesitan. Normalmente se utiliza un almacenamiento especial que utiliza la idea de caché para guardar los Qij utilizados recientemente.