SVM en Sklearn

SVM en Sklearn
Las máquinas de soporte-vector (SVMS, también conocidas como redes de vectores de soporte) en el aprendizaje automático son modelos de aprendizaje supervisados ​​con algoritmos correspondientes que evalúan los datos para la regresión y la clasificación. Los SVM, basados ​​en marcos de aprendizaje estadístico o la teoría de VC presentada por Chervonenkis y Vapnik, se encuentran entre las técnicas de predicción más confiables (1974). La implementación de SVM en Sklearn, así como sus beneficios y inconvenientes, se cubrirá en este artículo.

Que es svm?

SVM o Machine Vector de soporte es una técnica de aprendizaje automático supervisado para analizar los datos para la regresión y la clasificación. El objetivo del algoritmo SVM es definir el límite o línea de decisión óptima que puede clasificar el espacio N-dimensional, lo que nos permite clasificar nuevos puntos de datos en el futuro rápidamente. Este límite de decisión se conoce como hiperplano. Esto permite que su modelo ordene un conjunto de datos etiquetado y clasifique la entrada sin etiqueta. Es uno de los algoritmos de aprendizaje supervisados ​​más populares y se usa con frecuencia para clasificar las imágenes utilizando las características recuperadas por una red neuronal convolucional profunda.

Suponga que tiene algunos puntos linealmente separables en su papel que son de diferentes tipos. El SVM ubicará una línea recta que, en la medida de lo razonablemente posible, divide esos puntos en dos categorías. Imagina dos pares de puntos en un avión. Los primeros son rojos, mientras que el resto son azules. Para optimizar su distancia de ambas clases de puntos, una máquina de vectores de soporte busca una línea que divide los puntos rojos de los azules. Esto se conoce como el margen de diferencia más grande. Es importante medir la distancia desde la línea a los puntos en los bordes de los dos puntos para determinar el margen con la mayor diferencia. Se refieren a ellos como como Vectores de soporte. Los puntos deben ser separables por una línea, ya que deben estar separados por uno. El término para esto es separabilidad lineal. El truco del kernel es una adición crucial al algoritmo de máquina de vectores de soporte para superar esta restricción. Esto mueve los datos a un espacio de dimensión superior y utiliza una función lineal para segregarlos allí. A través de un llamado núcleo, se lleva a cabo la transformación. Esto solo es concebible porque el cálculo de la función lineal para separar los datos depende del producto DOT de los vectores de soporte/puntos '. En pocas palabras: para evitar el uso de una línea para dividir el rojo de los puntos azules, mezclarlos en el avión.

Levante los rojos, dejando atrás a los azules. Ahora es obvio que podría separar los puntos usando un avión. La técnica del núcleo logra esto. Altera los datos en una dimensión superior para presumiblemente ser linealmente separables. Levantamiento agregó una tercera dimensión (tres dimensiones), que separó los puntos por una línea en tres dimensiones, un avión, mientras que los puntos en el piso (dos dimensiones) no estaban.

Ventajas de SVM

  1. En espacios de alta dimensión, es más efectivo usar su memoria lo suficientemente bien.
  2. Adecuado para clases con márgenes distintos de distinción. Además, efectivo cuando los tamaños de muestra exceden las dimensiones generales.

Desventajas de SVM

  1. Cuando las características totales de cada punto de datos son mayores que las muestras de datos de entrenamiento, no funciona bien. Además, su técnica no es apropiada para conjuntos de datos más grandes.
  2. Un conjunto de datos comienza a retrasarse cuando las clases de destino se superponen, o más ruido. Además, la clasificación producida por el clasificador de vectores de soporte carece de una justificación probabilística.

Implementación de SVM en Sklearn

Importación de bibliotecas
de Sklearn.DataSets Import Make_Classification
de sklearn import svm
Creación de datos de datos
X, y = make_classification (random_state = 42)
Imprimir ('Los datos del tren son', x)
Imprimir ('Los datos de prueba son', y)

Producción

Los datos del tren son [[-2.02514259 0.0291022 -0.47494531 ... -0.33450124 0.86575519
-1.20029641]
[1.61371127 0.65992405 -0.15005559 ... 1.37570681 0.70117274
-0.2975635]
[0.16645221 0.95057302 1.42050425 ... 1.18901653 -0.55547712
-0.63738713]

[-0.03955515 -1.60499282 0.22213377 ... -0.30917212 -0.46227529
-0.43449623]
[1.08589557 1.2031659 -0.6095122 ... -0.3052247 -1.31183623
-1.06511366]
[-0.00607091 1.30857636 -0.17495976 ... 0.99204235 0.32169781
-0.66809045]]
Los datos de prueba son [0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0
0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0
1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0]
Creación del modelo SVM
modelo = svm.Svc ()
modelo.Fit (x, y)
Imprimir ('Los vectores de soporte son', modelo.Support_vectors_)
Imprimir ("Los vectores de soporte son", el modelo.apoyo_)

Producción

Los vectores de soporte son [[-2.02514259 0.0291022 -0.47494531 ... -0.33450124 0.86575519
-1.20029641]
[0.17989415 -0.22210005 0.10537551 ... -0.96834445 -0.22463315
0.5500521]
[-1.22576566 0.80742726 0.65232288 ... 0.88365994 -0.03850847
-0.1726273]

[0.2005692 -0.24878048 -1.07213901 ... 0.08614388 -0.36702784
-0.82759022]
[-0.6115178 -1.22532865 -0.85835778 ... 0.18483612 2.63238206
0.4933179]
[-0.22096417 -0.54561186 -0.57117899 ... 0.64084286 -0.28110029
1.79768653]]
Los índices para vectores de soporte son [0 4 5 6 8 11 12 13 18 21 22 23 24 27 29 30 31 32 33 34 36 47 52 54
58 67 73 78 79 81 83 89 92 95 2 3 7 9 10 14 25 35 38 39 40 42 45 49
51 57 59 60 61 62 63 68 72 74 75 76 80 85 86 88 91 93 94 96]

Conclusión

Revisamos la explicación de Support Vector Machines (SVM) junto con sus pros, contras e implementación. SVM dibuja hiperplanos entre puntos con el margen más grande y puede usarse para casos de clasificación y regresión. Vimos cómo Sklearn nos proporciona una manera fácil de implementar SVM y obtener detalles sobre los vectores de soporte.