2013-12-10 31 views
7

Ho giocato con alcune implementazioni SVM e mi chiedo: qual è il modo migliore per normalizzare i valori delle funzionalità per adattarli a un intervallo? (Da 0 a 1)Normalizzazione dei valori delle funzioni per SVM

Supponiamo Ho 3 caratteristiche con valori in intervalli di:

  1. 3 - 5.

  2. 0,02 - 0,05

  3. 10-15.

Come posso convertire tutti quei valori in campo di [0,1]?

Cosa fare Se, durante l'allenamento, il valore più alto della funzione numero 1 che incontrerò è 5 e dopo che inizierò a utilizzare il mio modello su serie di dati molto più grandi, incapperò in valori fino a 7? Quindi nell'intervallo convertito, sarebbe superiore a 1 ...

Come normalizzare i valori durante l'allenamento per tenere conto della possibilità di "valori in natura" che superano i valori più alti (o più bassi) del modello "visto" durante formazione? Come reagirà il modello a questo e come lo farò funzionare correttamente quando ciò accadrà?

risposta

7

Si normalizza un vettore convertendolo in un vettore unitario. Questo allena l'SVM sui valori relativi delle caratteristiche, non sulle grandezze. L'algoritmo di normalizzazione funzionerà su vettori con qualsiasi valore.

Per convertire in un vettore unità, divide each value by the length of the vector. Ad esempio, un vettore di [4 0.02 12] ha una lunghezza di 12,6491. Il vettore normalizzato è quindi [4/12.6491 0.02/12.6491 12/12.6491] = [0.316 0.0016 0.949].

Se "in the wild" si incontra un vettore di [400 2 1200] si normalizzerà allo stesso vettore di unità come sopra. La magnitudo delle caratteristiche è "cancellata" dalla normalizzazione e restiamo con valori relativi tra 0 e 1.

+0

Grazie. Questo è stato molto utile. – user3010273

+1

Se questo ha risolto il tuo problema per favore [accetta la risposta] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) così altri sanno che tu no più bisogno di aiuto. – Tim

+0

c'è almeno un altro modo per ridimensionare le tue funzionalità - dai uno sguardo a questi [metodi] (http://en.wikipedia.org/wiki/Feature_scaling#Methods) – arturomp

7

Oltre a ridimensionare il metodo di lunghezza unità fornito da Tim, standardization viene spesso utilizzato nel campo dell'apprendimento automatico. Si prega di notare che quando arrivano i dati del test, ha più senso usare il valore medio e la deviazione standard dai campioni di allenamento per eseguire questo ridimensionamento. Se si dispone di una grande quantità di dati di allenamento, è lecito ritenere che obbediscano alla normale distribuzione, quindi la possibilità che i nuovi dati di test non rientrino nell'intervallo non sarà così elevata. Fare riferimento a questo post per ulteriori dettagli.

Problemi correlati