La ciencia de datos: cómo configurar un modelo predictivo máquinas de vectores soporte en python

datos científicos consideran máquinas de vectores soporte (SVM) para ser una de las técnicas de aprendizaje automático más complejos y de gran alcance en su caja de herramientas, por lo que se suele encontrar este tema únicamente en manuales avanzados. Sin embargo, no debe apartarse de este gran algoritmo de aprendizaje debido a que el scikit-learn biblioteca que ofrece una amplia y accesible gama de clases supervisadas por la SVM para la regresión y clasificación.

Aunque SVM es compleja, es una gran herramienta. Después de encontrar la versión SVM más adecuado para su problema, hay que aplicarlo a sus datos y trabajar un poco para optimizar algunos de los muchos parámetros disponibles y mejorar sus resultados. La creación de un modelo de predicción de SVM de trabajo incluye los siguientes pasos generales:

  1. Elegir la clase SVM que va a utilizar.

  2. Entrenar a su modelo con los datos.

  3. Comprobar su error de validación y hacer que la línea de base.

  4. Probar diferentes valores para los parámetros de SVM.

  5. Compruebe si mejora su error de validación.

  6. Entrenar a su nuevo modelo de uso de los datos con los mejores parámetros.

Video: SVM - Ejemplo simple del algoritmo de máquina de soporte vectorial bajo R studio

En cuanto a la elección de la clase de SVM derecha va, usted tiene que pensar acerca de su problema. Por ejemplo, podría elegir una clasificación (adivinar una clase) o regresión (adivinar un número). Cuando se trabaja con una clasificación, se debe considerar si usted necesita para clasificar sólo dos grupos (de clasificación binaria) o más de dos (clasificación multiclase).

Otro aspecto importante a considerar es la cantidad de datos que hay que procesar. Después de tomar nota de todas sus necesidades en una lista, un rápido vistazo a continuación le ayudará a reducir sus opciones.

Video: Máquinas de Soporte Vectorial S.V.M

Claseel uso característicoLos parámetros clave
sklearn.svm.SVCclasificación binaria y multiclase cuando el número de
ejemplos es de menos de 10.000
C, kernel, grado, gamma
sklearn.svm.NuSVCSimilar a SVCnu, kernel, grado, gamma
sklearn.svm.LinearSVCclasificación binaria y multiclase cuando el número de
ejemplos es más de 10.000 datos escasos
Pena, pérdida, C
sklearn.svm.SVRproblemas de regresiónC, kernel, grado, gamma, epsilon
sklearn.svm.NuSVRAl igual que en la RVSNu, C, kernel, grado, gamma
sklearn.svm.OneClassSVMdetección de valores atípicosnu, kernel, grado, gamma

El primer paso es comprobar el número de ejemplos en los datos. Cuando se tiene más de 10.000 ejemplos, con el fin de evitar cálculos demasiado lentos y engorrosos, puede utilizar SVM y aún así obtener un rendimiento aceptable sólo para problemas de clasificación mediante el uso de sklearn.svm.LinearSVC. Si por el contrario lo que necesita para resolver un problema de regresión o la LinearSVC no es lo suficientemente rápido, es necesario utilizar una solución estocástica para la SVM.

El módulo scikit-learn SVM envuelve dos bibliotecas potentes escritos en C, libsvm y LIBLINEAR. Durante el montaje de un modelo, hay un flujo de datos entre Python y los dos bibliotecas externas. Una caché suaviza las operaciones de intercambio de datos. Sin embargo, si la caché es demasiado pequeño y tiene demasiados puntos de datos, la memoria caché se convierte en un cuello de botella!

Si tiene suficiente memoria, es una buena idea establecer un tamaño de caché mayor que el valor predeterminado de 200 MB (1000 MB, si es posible) utilizando la clase SVM tamaño del caché parámetro. Los números más pequeños de ejemplos sólo requieren que decidir entre la clasificación y la regresión.

En cada caso, tendrá dos algoritmos alternativos. Por ejemplo, para la clasificación, es posible utilizar sklearn.svm.SVC o sklearn.svm.NuSVC. La única diferencia con la versión Nu son los parámetros que se necesita y el uso de un algoritmo ligeramente diferente. Al final, se pone básicamente los mismos resultados, por lo que normalmente se elige la versión no-Nu.

Después de decidir sobre qué algoritmo a utilizar, se entera de que usted tiene un montón de parámetros para elegir, y el parámetro C es siempre entre ellos. El parámetro C indica hasta qué punto el algoritmo tiene que adaptarse a los puntos de entrenamiento.

Video: Estructuras de Datos - Arrays (Clase)

Cuando C es pequeña, la SVM se adapta menos a los puntos y tiende a tomar una dirección media, usando sólo algunos de los puntos y variables disponibles. Mayores valores de C tienden a forzar el proceso de aprendizaje para seguir más de los puntos de entrenamiento disponibles y para involucrarse con muchas variables.

El derecho C es por lo general un valor medio, y se puede encontrar después de un poco de experimentación. Si su C es demasiado grande, corre el riesgo de sobreajuste, una situación en la que el SVM se adapta demasiado a sus datos y no puede manejar adecuadamente los nuevos problemas. Si su C es demasiado pequeña, su predicción será más áspera e impreciso. Usted experimentará una situación llamada underfitting - su modelo es demasiado simple para el problema que desea resolver.

Después de decidir el valor C de usar, el bloque importante de parámetros para fijar es kernel, grado, y gamma. Los tres interconexión y su valor depende de la especificación del núcleo (por ejemplo, el núcleo lineal no requiere título o gamma, lo que puede utilizar cualquier valor). La especificación del núcleo determina si su modelo SVM utiliza una línea o una curva con el fin de adivinar la clase o la medida de punto.

Los modelos lineales son más simples y tienden a adivinar bien en nuevos datos, pero a veces su desempeño cuando las variables de los datos se relacionan entre sí de manera compleja. Porque no se puede saber de antemano si un modelo lineal que funciona para su problema, es una buena práctica para empezar con un núcleo lineal, fijar su valor de C, y usar ese modelo y su actuación como una línea de base para el ensayo de soluciones no lineales después.

Artículos Relacionados