Cuando uso SVM, ¿por qué necesito escalar las funciones?

9

De acuerdo con la documentación del objeto StandardScaler en scikit-learn:

Por ejemplo, muchos elementos utilizados en la función objetivo de un algoritmo de aprendizaje (como el núcleo RBF de Support Vector Machines o los regularizadores L1 y L2 de modelos lineales) suponen que todas las características están centradas alrededor de 0 y tienen una varianza en el mismo orden. Si una característica tiene una varianza que es de un orden de magnitud mayor que otras, podría dominar la función objetivo y hacer que el estimador no pueda aprender de otras características correctamente como se esperaba.

Debería escalar mis características antes de la clasificación. ¿Hay alguna manera fácil de mostrar por qué debería hacer esto? Las referencias a artículos científicos serían aún mejores. Ya encontré uno, pero probablemente hay muchos otros.

canalla
fuente

Respuestas:

16

Todos los métodos del núcleo se basan en la distancia. La función del núcleo RBF es (usando para sencillez).κ(u,v)=exp(uv2)γ=1

Dados 3 vectores de características:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

entonces , es decir, es supuestamente más similar a a .x 1 x 3 x 2κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Las diferencias relativas entre y: x 2[0.1,0,0],x1

x2[0.1,0,0],x3[0.05,10,10].

Entonces, sin escalar, concluimos que es más similar a que a , aunque las diferencias relativas por característica entre y son mucho más grandes que los de y .x 3 x 2 x 1 x 3 x 1 x 2x1x3x2x1x3x1x2

En otras palabras, si no escala todas las características a rangos comparables, las características con el rango más grande dominarán por completo en el cálculo de la matriz del núcleo.

Puede encontrar ejemplos simples para ilustrar esto en el siguiente documento: Una guía práctica para admitir la clasificación de vectores (Sección 2.2).

Marc Claesen
fuente
es posible que también desee analizar la regularización: la escala de los pesos depende de la escala de las entradas ...
seanv507
El efecto de la regularización es que diferentes escalas implican una óptima diferente , que es algo ortogonal a este problema en particular. C
Marc Claesen
2
Pero podría ser que la proximidad a lo largo de una dimensión es más importante. Por lo tanto, el objetivo no es realmente tener la misma variación en todas las características, sino que se escalen de manera que las distancias a lo largo de cada característica tengan aproximadamente la misma importancia en la tarea.
isarandi
@Marc Claesen, si sus variables son de diferentes órdenes de magnitud, entonces sus pesos también serán de diferentes órdenes de magnitud, y la norma l2 se enfocará en las entradas que tienen una varianza pequeña y pesos correspondientemente grandes. Dicho de otra manera, la regularización de la norma de peso asegura que las entradas 'pequeñas' tengan pequeños efectos. Esto solo tiene sentido si ha estandarizado 'pequeño' (a través de sus entradas), por ejemplo, normalizando sus variables
seanv507
1
@ seanv507 que solo se aplica a SVM lineal.
Marc Claesen
0

Depende de qué núcleo esté utilizando. Con mucho, el más utilizado (aparte de lineal) es el núcleo gaussiano, que tiene la forma

f=exp(||x1x2||22σ2)

Un SVM toma esta función y la usa para comparar la similitud de un punto ( ) con cualquier otro punto en el conjunto de entrenamiento al sumar las diferencias como:x1

(x1l1)2+(x2l2)2...+(xnln)2

donde es su ejemplo y los valores de son los puntos de referencia.lxl

Si la característica varía de 0 a 50,000, mientras que la característica varía de 0 a 0.01, puede ver que dominará esa suma mientras prácticamente no tendrá impacto. Por esta razón, es necesario escalar las características antes de aplicar el kernal. x 2 x 1 x 2x1x2x1x2

Si desea obtener más información, le recomiendo el módulo 12 (Support Vector Machines) del curso en línea de Stanford sobre aprendizaje automático en Coursera (gratuito y disponible en cualquier momento): https://www.coursera.org/course/ml

ralph346526
fuente