Devo eliminare le variabili correlate / collineari prima di eseguire i kmean?


13

Sto correndo chilometri per identificare gruppi di clienti. Ho circa 100 variabili per identificare i cluster. Ognuna di queste variabili rappresenta la percentuale di spesa di un cliente in una categoria. Quindi, se ho 100 categorie, ho queste 100 variabili in modo tale che la somma di queste variabili sia del 100% per ogni cliente. Ora, queste variabili sono fortemente correlate tra loro. Devo lasciarne cadere alcuni per rimuovere la collinearità prima di correre kmean?

Ecco i dati di esempio. In realtà ho 100 variabili e 10 milioni di clienti.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
Hai provato l'analisi PCA per decorrelare i tuoi dati?
Miroslav Sabo,

2
"Collineare" non è esattamente lo stesso di "correlato". Quindi la tua domanda rimane poco chiara
ttnphns il

Risposte:


10

Non eliminare alcuna variabile, ma considera l'utilizzo di PCA. Ecco perché.

In primo luogo, come sottolineato da Anony-mousse, k-medie non è gravemente influenzato dalla collinearità / correlazioni. Non è necessario buttare via informazioni a causa di ciò.

In secondo luogo, se lasci cadere le variabili nel modo sbagliato, avvicinerai artificialmente alcuni campioni. Un esempio:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(Ho rimosso la notazione% e ho appena inserito valori compresi tra 0 e 1, vincolati in modo che tutti sommino a 1.)

La distanza euclidea tra ciascuno di quei clienti nel loro spazio 3d naturale è(10)2+(01)2+(00)2=2

Ora diciamo che lasci cadere CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

Ora la distanza tra i clienti 1 e 2 è ancora , ma tra i clienti 1 e 3 e 2 e 3, è solo . Hai reso artificialmente il cliente 3 più simile a 1 e 2, in un modo che i dati grezzi non supportano.2(10)2+(00)2=1

In terzo luogo, la collinerarietà / correlazioni non sono il problema. La tua dimensionalità è. 100 variabili sono abbastanza grandi che anche con 10 milioni di punti dati, temo che k-mean possa trovare modelli spuri nei dati e adattarsi a quello. Invece, pensa a usare PCA per comprimerlo fino a un numero più gestibile di dimensioni - diciamo 10 o 12 per iniziare (forse molto più in alto, forse molto più in basso) dovrai guardare la varianza lungo ciascun componente e giocare un po ', per trovare il numero corretto). Avvicinerai artificialmente alcuni campioni insieme facendo questo, sì, ma lo farai in modo da preservare la maggior parte della varianza nei dati e che rimuoverà preferenzialmente le correlazioni.

~~~~~

MODIFICARE:

Ri, commenti di seguito su PCA. Sì, ha assolutamente patologie. Ma è abbastanza veloce e facile da provare, quindi non mi sembra una scommessa sbagliata se vuoi ridurre la dimensionalità del problema.

In quella nota però, ho provato a gettare rapidamente alcuni insiemi di dati sintetici a 100 dimensioni in un algoritmo k-mean per vedere cosa ne è venuto fuori. Mentre le stime della posizione centrale del cluster non erano così accurate, l' appartenenza al cluster (ovvero se due campioni fossero assegnati allo stesso cluster o meno, il che sembra essere ciò a cui l'OP è interessato) era molto meglio di quanto pensassi. Quindi il mio istinto in precedenza era molto probabilmente sbagliato - k-significa che la luce del mattino funziona bene sui dati grezzi.


1
Penso che si debba fare molta attenzione quando si eliminano le variabili dal PCA. Prima di tutto le varianze devono essere normalizzate prima di tale eliminazione in quanto è possibile eliminare erroneamente le variabili solo perché hanno una scala diversa a causa delle loro unità. In secondo luogo, eliminerei solo quelle dimensioni che hanno una variazione minuscola, poiché poiché la PCA assume una base ortogonale se si ha una variazione in una direzione non ortogonale, questa verrà catturata con mezzi k ma eliminata dalla PCA.
Cagdas Ozgenc,

1
Una preoccupazione più fondamentale è che PCA sulle variabili indipendenti non fornisce alcuna informazione sulla variabile dipendente. È facile costruire esempi in cui questo approccio PCA eliminerà ogni variabile che conta e manterrà solo quelli che non lo fanno! Per vedere cosa sta succedendo, lascia una distribuzione normale bivariata con varianze di e correlazione e imposta . Un PCA sui dati da identificherà come componente principale ed eliminerà . La regressione di su sarà significativa. 1 ρ > 0 Y = X 1 - X 2 ( X 1 , X 2 ) X 1 + X 2 X 1 - X 2 Y X 1 + X 2(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2
whuber

1
È una discussione irrilevante in un ambiente senza supervisione. Per impostazioni supervisionate sì, PCA non si preoccupa della relazione con la variabile target. Se la direzione della dipendenza cade nella direzione della bassa varianza sfortuna.
Cagdas Ozgenc,

2

Su un esempio di giocattolo in 2d o 3d, non dovrebbe fare molta differenza, aggiunge semplicemente una ridondanza ai dati: tutti i punti sono su un iperpiano dimensionale (d-1). Lo sono anche i cluster. E la distanza in questo iperpiano dimensionale (d-1) è un multiplo lineare della stessa distanza, quindi non cambia nulla.

Se si costruisce artificialmente tali dati, ad esempio facendo poi si fa distorcere lo spazio, e sottolineare l'influenza di e . Se lo fai a tutte le variabili non importa; ma puoi facilmente cambiare peso in questo modo. Ciò enfatizza il fatto noto che la normalizzazione e la ponderazione delle variabili sono essenziali . Se hai correlazioni nei tuoi dati, questo è più importante che mai.x y(x,y)(x,y,x+y)xy

Diamo un'occhiata all'esempio più semplice: variabili duplicate.

Se si esegue PCA sul set di dati e si duplica una variabile, ciò significa in effetti assegnare un peso duplicato a questa variabile. La PCA si basa sul presupposto che la varianza in ogni direzione sia ugualmente importante - quindi, in effetti, si dovrebbe ponderare attentamente le variabili (tenendo conto delle correlazioni, fare anche qualsiasi altra preelaborazione necessaria) prima di eseguire la PCA.


1
Alla luce della mia analisi su stats.stackexchange.com/a/50583 , questo ragionamento sembra essere errato.
whuber

Ho migliorato molto la mia risposta, era troppo basata sui dati di esempio del giocattolo.
Ha QUIT - Anony-Mousse il

1

È consigliabile rimuovere le variabili se sono altamente correlate .

Indipendentemente dall'algoritmo di clustering o dal metodo di collegamento, una cosa che generalmente segui è quella di trovare la distanza tra i punti. Mantenere variabili che sono altamente correlate è tutt'altro che dare loro di più, raddoppiare il peso nel calcolare la distanza tra due punti (Poiché tutte le variabili sono normalizzate, l'effetto sarà generalmente doppio).

In breve, la forza delle variabili per influenzare la formazione del cluster aumenta se ha un'alta correlazione con qualsiasi altra variabile.

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.