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=2x−max−minmax−min
  • μσ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.