Máquina de vectores de soporte (ensayo)

1. Máquina de vectores de soporte (SVM)

Support vector machine es un modelo de aprendizaje automático potente y completo que puede realizar clasificaciones lineales o no lineales, regresión e incluso tareas de detección atípicas. SVM es particularmente adecuado para la clasificación de conjuntos de datos complejos pequeños y medianos.
¿Qué es una máquina? ¿Qué es un vector? ¿Qué es el soporte? Máquina significa algoritmo, ¿por qué no llamarlo por algunas razones históricas? Un vector es un vector, y cada muestra está representada por un vector cuando se realiza la clasificación. Apoyo significa aguantar y decidir. Al hacer la clasificación, generalmente encontramos un hiperplano de clasificación (línea en el caso de dos latitudes), y el lado del hiperplano es el lado de la clase positiva y la clase negativa. Lo que es un vector de soporte es un vector que determina este hiperplano de clasificación. Por lo tanto, la máquina del vector de soporte puede entenderse de la siguiente manera: es un algoritmo de clasificación: este algoritmo se clasifica mediante un hiperplano, que está determinado por el vector de soporte.

El modelo SVM tiene dos parámetros muy importantes C y gamma. Donde C es el coeficiente de penalización, que es la tolerancia a los errores . Cuanto mayor sea la c, más intolerable es el error y es fácil de sobreajustar. Cuanto más pequeña es la C, aparecen los errores más tolerantes y fácil de adaptar.
Gamma es un parámetro que viene con la función RBF como núcleo. Determina implícitamente la distribución de los datos después del mapeo en un nuevo espacio de características: cuanto mayor es el gamma, menos son los vectores de soporte y cuanto menor es el valor de gamma, más son los vectores de soporte. El número de vectores de soporte afecta la velocidad de entrenamiento y predicción.

1.1 Clasificación SVM lineal

SVM es muy sensible a la escala de las funciones. A diferencia del clasificador de regresión logística, el clasificador SVM no genera la probabilidad de cada categoría. Como se muestra en la Figura 5-2, en la imagen de la izquierda, la escala vertical es mucho más grande que la escala horizontal, por lo que la calle más ancha posible está cerca de la horizontal. Después de la escala de características (por ejemplo, usando el Escalador Estándar de Scikit-Learn), el límite de decisión se ve mucho mejor (ver a la derecha).
Inserte la descripción de la imagen aquí

Clasificación de intervalo suave:

Si evitamos estrictamente que todas las instancias estén en la calle y en el lado derecho, esta es una clasificación de partición difícil. Existen dos problemas principales con la clasificación de intervalo duro: en primer lugar, solo es eficaz cuando los datos son linealmente separables y, en segundo lugar, es muy sensible a los valores atípicos.
Para evitar estos problemas, es mejor usar un modelo más flexible. El objetivo es encontrar un buen equilibrio entre mantener la calle amplia y restringir las violaciones de intervalo (es decir, instancias que están en la calle o incluso en el lado equivocado) tanto como sea posible. Esta es la clasificación de intervalo suave.
El hiperparámetro C puede controlar este equilibrio: cuanto menor es el valor de C, más ancha es la calle, pero más violaciones de intervalo. Si se sobreajusta, el valor de c se puede reducir para regularizar.

Inserte la descripción de la imagen aquí

1.2 Clasificación SVM no lineal

Una forma de tratar con conjuntos de datos no lineales es agregar más características, como características polinómicas, que en algunos casos pueden hacer que el conjunto de datos se vuelva linealmente separable.Después de agregar una función x ^ 2, se vuelve separable

Núcleo polinomial

Agregar características polinómicas es muy simple de implementar y muy efectivo para todos los algoritmos de aprendizaje automático. Pero si el polinomio tiene un orden demasiado bajo, no puede manejar conjuntos de datos muy complejos, y el orden superior creará una gran cantidad de características, lo que hará que el modelo se vuelva demasiado lento.
El resultado de la técnica del núcleo es lo mismo que agregar muchas características polinómicas, incluso características polinómicas de orden muy alto, pero en realidad no es necesario agregarlas. Como en realidad no se agregan características, no hay características combinatorias que exploten en cantidad. Esta técnica es implementada por la clase SVC.

Agregar características similares

Otra técnica para resolver problemas no lineales es agregar características similares. Estas características se calculan mediante una función de similitud, que puede medir la similitud entre cada instancia y un punto de referencia específico.
Función del núcleo gaussiano RBF La función de la función del
núcleo: transformar el problema completamente inseparable en un estado separable o aproximadamente separable.
(Gauss) Kernel de función de base radial (inglés: kernel de función de base radial), o kernel RBF, es una función de kernel de uso común. Es la función de kernel más utilizada en la clasificación de máquinas de vectores de soporte.
Inserte la descripción de la imagen aquí
Hay dos puntos de referencia -2, 0 al principio, X 1 = - 1 x_1 = -1 , la distancia desde las dos coordenadas es 1 y 2, por lo que su nueva característica es:
Inserte la descripción de la imagen aquí
Después de agregar nuevas funciones, la separación es fácil
la forma más sencilla de seleccionar un punto de referencia es crear un punto de referencia en la ubicación de cada instancia, pero si el conjunto de entrenamiento es muy grande, obtendrá Gran cantidad de características.

Complejidad computacional

Con tantas funciones del kernel, ¿cómo decides cuál usar? Una
regla general es comenzar siempre con una función de núcleo lineal (recuerde, LinearSVC es
mucho más rápido que SVC (kernel = "linear")), especialmente cuando el conjunto de entrenamiento es muy grande o tiene muchas características
. Si el conjunto de entrenamiento no es demasiado grande, puede probar el kernel Gaussian RBF,
que es muy útil en la mayoría de los casos . Si aún tiene tiempo extra y poder de cómputo, puede usar la
validación cruzada y la búsqueda de cuadrícula para probar otras funciones del núcleo, especialmente aquellas que son específicas de la
estructura de datos de su conjunto de datos
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Regresión SVM

SVM no solo admite la clasificación lineal y no lineal, sino que también admite la regresión lineal y no lineal.
La regresión ya no es un intento de encajar en la calle más amplia posible entre dos categorías mientras se limitan las violaciones de intervalos. Lo que hace la regresión SVM es colocar tantas instancias como sea posible en la calle y las violaciones de intervalo límite (es decir, no en la calle Ejemplo)
Agregar más instancias en el intervalo no afectará la predicción del modelo, por lo que este modelo se llama ε-insensible.
Inserte la descripción de la imagen aquí

metro yo norte      1 2 w 2 2 + C i = 1 m ξ i min \; \; \ frac {1} {2} || w || _2 ^ 2 + C \ sum \ limits_ {i = 1} ^ {m} \ xi_i s . t .      y i ( w ϕ ( x i ) + b ) 1 ξ i      ( i = 1 , 2 , . . . m ) S t \;\; y_i (w \ bullet \ phi (x_i) + b) \ geq 1 - \ xi_i \; \; (i = 1,2, ... m) ξ i 0      ( i = 1 , 2 , . . . m ) \ xi_i \ geq 0 \; \; (i = 1,2, ... m)

El problema

1. ¿Cuál es la idea básica de la máquina de vectores de soporte?

Respuesta: La idea básica de las máquinas de vectores de soporte es ajustar la "calle" más amplia posible entre categorías. En otras palabras, su propósito es maximizar el intervalo entre los límites de decisión, separando así los ejemplos de entrenamiento de las dos categorías (regresión inversa). Cuando SVM realiza una clasificación de intervalo suave, en realidad se compromete entre la clasificación perfecta y el ajuste de calle más amplio (es decir, permite que algunas instancias terminen en la calle). Hay un punto clave en la formación conjunto de datos no lineal, recuerde que debe utilizar la función del núcleo .

2. ¿Qué es un vector de soporte?

Respuesta: Después de completar la capacitación de la máquina de vectores de soporte, la instancia en la "calle" (consulte la respuesta anterior) se denomina vector de soporte (es decir, está fuera de las dos líneas y está dentro de las dos líneas al regresar) Instancias en la frontera. El límite de decisión está completamente determinado por el vector de soporte. Las instancias de vectores no compatibles (es decir, instancias fuera de la calle) no tienen ningún efecto, puede optar por eliminarlas y agregar más instancias, o alejarlas, siempre y cuando estén siempre fuera de la calle, no serán El límite de decisión no tiene efecto. Calcular el resultado de la predicción solo implicará el vector de soporte, no todo el conjunto de entrenamiento.

3. ¿Por qué es importante escalar el valor de entrada cuando se usa SVM?

Respuesta: La máquina de vectores de soporte se ajusta a la "calle" más amplia posible entre categorías, por lo que si el conjunto de entrenamiento no se escala, el SVM tenderá a ignorar las características con valores más pequeños (ver Figura 5-2).

4. Si el conjunto de entrenamiento tiene decenas de millones de instancias y cientos de características, ¿debería usar el problema SVM original o el problema dual para entrenar el modelo?

Respuesta: Este problema solo se aplica a máquinas de vectores de soporte lineal, porque el kernel SVM solo puede usar el problema dual. Para el problema SVM, la complejidad computacional de la forma original es proporcional al número de ejemplos de entrenamiento, mientras que la complejidad computacional de su forma dual es proporcional a un número entre m2 y m3. Entonces, si el número de instancias es de millones, asegúrese de usar el problema original, ya que el problema dual será muy lento.

5. Suponga que entrena un clasificador SVM con kernel RBF, parece que no se ajusta suficientemente al conjunto de entrenamiento, ¿debería aumentar o disminuir γ (gamma)? ¿Qué hay de C?

Respuesta: Si una máquina de vectores de soporte que utiliza el entrenamiento de kernel RBF no se ajusta suficientemente al conjunto de entrenamiento, puede ser causada por una regularización excesiva. Necesita aumentar gamma o C (o ambos) para reducir la regularización. (Ver explicación detallada en la parte superior)

Nota

Como soy un principiante, todavía no sé mucho acerca de los parámetros del algoritmo, así que tomo prestado mucho de los extractos y los fusiono, por lo que no tengo una fuente famosa aquí. Espero entenderlo. No escribí mucho código, principalmente porque sentí que la escritura haría que el espacio fuera demasiado grande, y no escribí mucho razonamiento en las fórmulas (la clave es que era un estudiante de primer año, la mayoría de ellos no pueden entenderlo), así que escribí algunos conocimientos básicos de manera concisa. Si desea participar en algoritmos internos, creo que este artículo se puede vincular al texto original: https://blog.csdn.net/v_JULY_v/article/details/7624837
Además, este artículo se refiere principalmente a "Combate de aprendizaje automático: basado en Scikit-Learn y TensorFlow" Si hay una demanda de este libro (todavía hay mucha información sobre Python y el aprendizaje automático), puede seguirme y enviarme un correo privado, y se entregará uno por uno.
Después de todo, novatos, si tienen errores, aún quieren iluminarse y apoyarlos, no les gusta rociar y esperan encontrar amigos que escriban con ideas afines y aprendan juntos.

Publicado 2 artículos originales · elogiado 5 · visitas 113

Supongo que te gusta

Origin blog.csdn.net/weixin_45755332/article/details/105423765
Recomendado
Clasificación