Quando si utilizzano SVM, perché devo ridimensionare le funzionalità?


9

Secondo la documentazione dell'oggetto StandardScaler in scikit-learn:

Ad esempio, molti elementi utilizzati nella funzione obiettivo di un algoritmo di apprendimento (come il kernel RBF di Support Vector Machines o i regolarizzatori L1 e L2 dei modelli lineari) presuppongono che tutte le funzioni siano centrate attorno a 0 e abbiano una varianza nello stesso ordine. Se una funzione presenta una varianza di ordini di grandezza maggiori di altre, potrebbe dominare la funzione obiettivo e rendere lo stimatore incapace di apprendere correttamente da altre funzionalità come previsto.

Dovrei ridimensionare le mie caratteristiche prima della classificazione. C'è un modo semplice per mostrare perché dovrei farlo? I riferimenti ad articoli scientifici sarebbero ancora migliori. Ne ho già trovato uno, ma probabilmente ce ne sono molti altri.

Risposte:


16

Tutti i metodi del kernel sono basati sulla distanza. La funzione del kernel RBF è (usando per semplicità).κ(u,v)=exp(uv2)γ=1

Dati 3 vettori di funzioni:

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

quindi , ovvero è presumibilmente più simile a a .κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Le differenze relative tra e: x1

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

Quindi, senza ridimensionamento, concludiamo che è più simile a che a , anche se le differenze relative per funzione tra e sono molto più grandi di quelli di e .x1x3x2x1x3x1x2

In altre parole, se non si ridimensionano tutte le funzionalità su intervalli comparabili, le funzioni con l'intervallo più ampio domineranno completamente nel calcolo della matrice del kernel.

Puoi trovare semplici esempi per illustrarlo nel seguente documento: Una guida pratica per supportare la classificazione dei vettori (Sezione 2.2).


potresti anche voler discutere di regolarizzazione: la scala dei pesi dipende dalla scala degli input ...
seanv507,

L'effetto della regolarizzazione è che diversi ridimensionamenti implicano una ottimale diversa , che è in qualche modo ortogonale a questo particolare problema. C
Marc Claesen,

2
Ma potrebbe davvero essere che la prossimità lungo una dimensione sia più importante. Quindi l'obiettivo non è davvero quello di avere la stessa varianza in tutte le funzionalità, ma di ridimensionarle in modo tale che le distanze lungo ogni caratteristica abbiano circa la stessa importanza rispetto all'attività.
Isarandi,

@Marc Claesen, se le tue variabili sono di diversi ordini di grandezza, anche i tuoi pesi saranno di diversi ordini di grandezza e la norma l2 si concentrerà sugli input che hanno una varianza piccola e pesi corrispondenti di grandi dimensioni. in altre parole, la regolarizzazione delle norme di peso assicura che gli input "piccoli" abbiano piccoli effetti. Questo ha senso solo se hai standardizzato "piccolo" (attraverso i tuoi input), ad esempio normalizzando le tue variabili
seanv507,

1
@ seanv507 che si applica solo a SVM lineare.
Marc Claesen,

0

Dipende dal kernel che stai usando. Di gran lunga il più comunemente usato (a parte lineare) è il kernel gaussiano, che ha la forma

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

Un SVM utilizza questa funzione e la utilizza per confrontare la somiglianza di un punto ( ) con ogni altro punto dell'insieme di training sommando le differenze come:x1

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

dove è il tuo esempio e i valori di sono i punti di riferimento.xl

Se la funzione varia da 0 a 50.000 mentre la funzione varia da 0 a 0,01, puoi vedere che dominerà quella somma mentre non avrà praticamente alcun impatto. Per questo motivo è necessario ridimensionare le funzionalità prima di applicare il kernal.x1x2x1x2

Se vuoi saperne di più, ti consiglio il modulo 12 (Support Vector Machines) del corso online di Stanford sull'apprendimento automatico a Coursera (gratuito e disponibile in qualsiasi momento): https://www.coursera.org/course/ml

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.