Mischiare dati continui e binari con SVM lineare?


15

Quindi ho giocato con gli SVM e mi chiedo se questa è una buona cosa da fare:

Ho un set di funzionalità continue (da 0 a 1) e un set di funzionalità categoriche che ho convertito in variabili fittizie. In questo caso particolare, codifico la data della misurazione in una variabile fittizia:

Ci sono 3 periodi da cui ho i dati e ho prenotato 3 numeri di funzione per loro:

20: 21: 22:

Quindi, a seconda del periodo da cui provengono i dati, a diverse funzioni verrà assegnato 1; gli altri avranno 0.

SVM funzionerà correttamente con questa o questa è una brutta cosa da fare?

Uso SVMLight e un kernel lineare.


Funziona benissimo.
Marc Claesen,

Quello che hai fatto è abbastanza buono. Ho dato una risposta leggermente dettagliata qui - quora.com/Machine-Learning/…
TenaliRaman

@TenaliRaman, per favore, non pubblicare collegamenti a siti che richiedono uno per accedere prima di poter effettivamente leggere qualsiasi cosa.
Marc Claesen,

@MarcClaesen Ho replicato la risposta qui sotto.
TenaliRaman,

Risposte:


8

Le SVM gestiranno sia le variabili binarie che quelle continue, purché si esegua una preelaborazione: tutte le funzionalità devono essere ridimensionate o normalizzate. Dopo quel passaggio, dal punto di vista degli algoritmi, non importa se le funzionalità sono continue o binarie: per i binari, vede campioni che sono "lontani" o molto simili; per continuo ci sono anche i valori intermedi. Il kernel non ha importanza rispetto al tipo di variabili.


1
e quale sarebbe la migliore tecnica di normalizzazione?
Shlomi Schwartz,

23

Replica la mia risposta da http://www.quora.com/Machine-Learning/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together/answer/Arun-Iyer-1

  • Ridimensiona le funzioni continue limitate: tutti gli input continui che sono limitati, ridimensionali da a x = 2 x - max - min[1,1] .x=2xmaxminmaxmin
  • μσx=xμσ
  • Binarizza le caratteristiche categoriche / discrete: per tutte le caratteristiche categoriali, rappresentale come più funzioni booleane. Ad esempio, invece di avere una caratteristica chiamata marriage_status, hanno 3 caratteristiche booleane: married_status_single, married_status_married, married_status_divorced e impostate appropriatamente queste funzionalità su 1 o -1. Come puoi vedere, per ogni funzione categoriale, stai aggiungendo k funzione binaria dove k è il numero di valori che la funzione categoriale accetta.

Rn

Rn


Bene, questo articolo è piuttosto interessante per quanto riguarda le caratteristiche categoriche. Non si dice che la codifica one-hot sia la scelta migliore per le caratteristiche categoriche è ciò che sto ottenendo.
displayname

1
questa è un'ottima risposta, ho letto il link nel commento @displayname ed è un utile confronto. Dall'articolo, sembra che la codifica binaria sia la migliore (non quella descritta a caldo in questa risposta) e anche abbastanza semplice) Dal link "Binario: prima le categorie sono codificate come ordinali, quindi quegli interi vengono convertiti in binari codice, quindi le cifre di quella stringa binaria sono divise in colonne separate. Questo codifica i dati in meno dimensioni che uno a caldo, ma con una certa distorsione delle distanze. "
shelbypereira,

L'articolo fornito da @displayname è un buon articolo, ma non dovrebbe essere preso al valore nominale. La prima cosa da ricordare è che quasi tutti i metodi ML funzionano con somiglianza o misura della distanza. La scelta del metodo di codifica influenza direttamente il modo in cui le distanze o le somiglianze vengono misurate tra due punti. Una codifica a caldo 1 dice che un oggetto di una categoria è simile solo a se stesso o equivalentemente, mette tutte le categorie a uguale distanza l'una dall'altra. Tuttavia, ci sono casi in cui alcune categorie sono più vicine di altre. In tal caso, può essere utile una codifica diversa.
TenaliRaman,
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.