È importante ridimensionare i dati prima del clustering?


44

Ho trovato questo tutorial , che suggerisce che è necessario eseguire la funzione di ridimensionamento sulle funzionalità prima del clustering (credo che converta i dati in z-score).

Mi chiedo se sia necessario. Lo sto chiedendo principalmente perché c'è un bel punto a gomito quando non ridimensiono i dati, ma scompare quando viene ridimensionato. :)

Risposte:


59

Il problema è ciò che rappresenta una buona misura della distanza tra i casi.

Se hai due caratteristiche, una in cui le differenze tra i casi sono grandi e l'altra piccola, sei pronto ad avere il primo come quasi l'unico driver della distanza?

Ad esempio, se hai raggruppato le persone sui loro pesi in chilogrammi e altezze in metri, una differenza di 1 kg è significativa quanto una differenza di 1 m in altezza? Importa che otterresti diversi raggruppamenti su pesi in chilogrammi e altezze in centimetri? Se le tue risposte sono rispettivamente "no" e "sì", probabilmente dovresti ridimensionare.

D'altra parte, se stavi raggruppando le città canadesi in base a distanze est / ovest e distanze nord / sud, allora, anche se in genere ci saranno differenze molto più grandi est / ovest, potresti essere felice di usare solo distanze non graduate in chilometri o miglia (anche se potresti voler regolare i gradi di longitudine e latitudine per la curvatura della terra).


33

Altre risposte sono corrette, ma potrebbe essere utile comprendere in modo intuitivo il problema visualizzando un esempio. Di seguito, generi un set di dati con due cluster chiari, ma la dimensione non cluster è molto più grande della dimensione cluster (notare le diverse scale sugli assi). Il clustering sui dati non normalizzati ha esito negativo. Il clustering sui dati normalizzati funziona molto bene.

Lo stesso vale per i dati raggruppati in entrambe le dimensioni, ma la normalizzazione aiuterebbe di meno. In tal caso, potrebbe essere utile eseguire un PCA, quindi normalizzarlo, ma ciò aiuterebbe solo se i cluster sono separabili linearmente e non si sovrappongono nelle dimensioni del PCA. (Questo esempio funziona solo in modo così chiaro a causa del basso numero di cluster)

dati di cluster sintetici, con k-mean clustering su entrambe le versioni normalizzate e non normalizzate

import numpy as np
import seaborn
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

rnorm = np.random.randn

x = rnorm(1000) * 10  
y = np.concatenate([rnorm(500), rnorm(500) + 5])

fig, axes = plt.subplots(3, 1)

axes[0].scatter(x, y)
axes[0].set_title('Data (note different axes scales)')

km = KMeans(2)

clusters = km.fit_predict(np.array([x, y]).T)

axes[1].scatter(x, y, c=clusters, cmap='bwr')
axes[1].set_title('non-normalised K-means')

clusters = km.fit_predict(np.array([x / 10, y]).T)

axes[2].scatter(x, y, c=clusters, cmap='bwr')
axes[2].set_title('Normalised K-means')

17

Essa dipende dalla vostra dei dati .

Se hai attributi con un significato ben definito. Dì, latitudine e longitudine, quindi non dovresti ridimensionare i tuoi dati, perché questo causerà distorsione. (K-significa che potrebbe anche essere una cattiva scelta - hai bisogno di qualcosa che possa gestire lat / lon naturalmente)

Se hai dati numerici misti, in cui ogni attributo è qualcosa di completamente diverso (ad esempio, dimensioni e peso della scarpa), hanno unità diverse attaccate (libbre, tonnellate, m, kg ...), quindi questi valori non sono realmente comparabili; La standardizzazione di z è una buona pratica per dare loro lo stesso peso.

Se hai valori binari, attributi discreti o attributi categoriali, stai lontano da k-medie. I mezzi K devono calcolare i mezzi e il valore medio non è significativo per questo tipo di dati.


5

Come spiegato in questo documento , il k-mean minimizza la funzione di errore usando l'algoritmo di Newton, ovvero un algoritmo di ottimizzazione basato sul gradiente. La normalizzazione dei dati migliora la convergenza di tali algoritmi. Vedi qui per alcuni dettagli.

L'idea è che se diversi componenti di dati (caratteristiche) hanno scale diverse, i derivati ​​tendono ad allinearsi lungo le direzioni con una varianza più elevata, il che porta a una convergenza più bassa / più lenta.


4

La standardizzazione è una fase importante della preelaborazione dei dati.

controlla la variabilità del set di dati, converte i dati in un intervallo specifico usando una trasformazione lineare che genera cluster di buona qualità e migliora l'accuratezza degli algoritmi di clustering, controlla il link qui sotto per vedere i suoi effetti sull'analisi dei k-medie.

https://pdfs.semanticscholar.org/1d35/2dd5f030589ecfe8910ab1cc0dd320bf600d.pdf

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.