2013-03-18 9 views
7

Dire che si sta cercando di classificare le case in base a determinate caratteristiche:Come gestire il vettore di caratteristiche di lunghezza variabile?

  • Superficie totale
  • Numero di camere
  • Garage

Ma non tutte le case hanno i garage. Ma quando lo fanno, la loro area totale crea una caratteristica molto discriminante. Qual è un buon approccio per sfruttare le informazioni contenute in questa funzione?

risposta

5

È possibile includere una variabile zero/una variabile fittizia che indica se è presente un garage, così come il prodotto incrociato dell'area del garage con il manichino (per le case senza garage, impostare l'area a zero).

+2

Non vedo come la variabile dummy cambi nulla se si impostano le aree del garage a zero. Il problema che vedo con l'impostazione di aree garage inesistenti a 0 è che saranno visualizzate come simili a garage estremamente piccoli, il che è inaccurato. – jessems

+0

@ ty4: È qui che entra in gioco il manichino. Ad esempio, se si dovesse montare un modello lineare, grazie al manichino si otterrebbe un'intercetta diversa per le case con e senza garage. A pensarci bene, probabilmente non hai nemmeno bisogno del prodotto incrociato. – NPE

1

L'approccio migliore consiste nel creare il set di dati con tutte le funzionalità e nella maggior parte dei casi è sufficiente riempire con zero quelle colonne che non sono disponibili.

Usando il tuo esempio, sarebbe qualcosa di simile:

Total area Number of rooms Garage area 
100   2    0 
300   2    5 
125   1    1.5 

Spesso, l'algoritmo di apprendimento che si è scelto sarebbe stato abbastanza potente da usare quelle zeri per classificare correttamente quella voce. Dopo tutto, l'assenza di valore è ancora informazione per l'algoritmo. Questo potrebbe diventare un problema se i tuoi dati sono distorti, ma in tal caso devi comunque indirizzare l'asimmetria.

EDIT:

Ho appena rendo conto che ci sono stati un'altra risposta con un commento di voi di essere paura di usare zeri, in considerazione del fatto che potrebbe essere confusa con piccoli garage. Anche se non vedo ancora un problema (ci dovrebbe essere abbastanza differenza tra un piccolo garage e zero), puoi comunque usare la stessa struttura che segna il garage dell'area non esistente con un numero negativo (diciamo -1).

Anche la soluzione indicata nell'altra risposta è perfettamente plausibile, avendo una caratteristica in più che indica se la casa dispone di garage o meno funzionerebbe bene (specialmente in algoritmi basati su decisioni). Preferisco semplicemente mantenere la dimensionalità dei dati più bassa possibile, ma alla fine questa è più una preferenza piuttosto che una decisione tecnica.

0

Dovrai incorporare una funzione di indicatore di zero. Cioè, una caratteristica che è 1 quando la dimensione del garage è 0 e 0 per qualsiasi altro valore.

Il tuo vettore di funzionalità sarà quindi: area | num_rooms | garage_size | garage_exists

Il tuo algoritmo di apprendimento automatico sarà quindi in grado di vedere questa caratteristica (non lineare) delle dimensioni del garage.

Problemi correlati