È necessario standardizzare i dati prima del clustering?


23

È necessario standardizzare i dati prima del cluster? Nell'esempio tratto da scikit learnDBSCAN, qui lo fanno nella riga:

X = StandardScaler().fit_transform(X)

Ma non capisco perché sia ​​necessario. Dopotutto, il clustering non presuppone una particolare distribuzione dei dati: è un metodo di apprendimento non supervisionato, quindi il suo obiettivo è quello di esplorare i dati.

Perché sarebbe necessario trasformare i dati?


Grazie per le risposte dettagliate! Come seguito di tutte le tue risposte: capisco che se le funzionalità sono su scale diverse, ciò potrebbe presentare un problema. Tuttavia, se la metrica della distanza è normalizzata alla varianza, si ottiene lo stesso risultato del ridimensionamento standard prima del raggruppamento? cioè io di solito uso una distanza euclidea normalizzata correlate - fa questi effetti di scala anche mitigare?
Candic3,

Risposte:


19

La normalizzazione non è sempre necessaria, ma raramente fa male.

Qualche esempio:

K-significa :

Il clustering K significa "isotropico" in tutte le direzioni dello spazio e quindi tende a produrre cluster più o meno rotondi (piuttosto che allungati). In questa situazione, lasciare le varianze disuguali equivale a dare più peso alle variabili con varianza minore.

Esempio in Matlab:

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

% Introduce denormalization
% X(:, 2) = X(:, 2) * 1000 + 500;

opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')
title('K-means with normalization')

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

(FYI: Come posso rilevare se il mio set di dati è raggruppato o non cluster (cioè formando un singolo cluster )

Clustering distribuito :

L'analisi comparativa mostra che i risultati del clustering distribuito dipendono dal tipo di procedura di normalizzazione.

Rete neurale artificiale (ingressi) :

Se le variabili di input sono combinate linearmente, come in una MLP, raramente è strettamente necessario standardizzare gli input, almeno in teoria. Il motivo è che qualsiasi ridimensionamento di un vettore di input può essere annullato efficacemente modificando i pesi e le inclinazioni corrispondenti, lasciandoti con gli stessi identici output di prima. Tuttavia, ci sono una serie di ragioni pratiche per cui la standardizzazione degli input può rendere più veloce l'allenamento e ridurre le possibilità di rimanere bloccati negli optima locali. Inoltre, la riduzione del peso e la stima bayesiana possono essere eseguite in modo più conveniente con input standardizzati.

Rete neurale artificiale (ingressi / uscite)

Dovresti fare una di queste cose ai tuoi dati? La risposta è, dipende.

La standardizzazione delle variabili di input o target tende a migliorare il comportamento del processo di formazione migliorando la condizione numerica (vedi ftp://ftp.sas.com/pub/neural/illcond/illcond.html ) del problema di ottimizzazione e assicurando che vari valori predefiniti i valori coinvolti nell'inizializzazione e nella terminazione sono appropriati. La standardizzazione degli obiettivi può anche influire sulla funzione obiettivo.

La standardizzazione dei casi dovrebbe essere affrontata con cautela perché scarta le informazioni. Se tali informazioni sono irrilevanti, la standardizzazione dei casi può essere molto utile. Se tali informazioni sono importanti, la standardizzazione dei casi può essere disastrosa.


È interessante notare che la modifica delle unità di misura può persino portare a vedere una struttura di cluster molto diversa: Kaufman, Leonard e Peter J. Rousseeuw .. "Trovare gruppi nei dati: un'introduzione all'analisi dei cluster". (2005).

In alcune applicazioni, la modifica delle unità di misura può persino portare a vedere una struttura di clustering molto diversa. Ad esempio, l'età (in anni) e l'altezza (in centimetri) di quattro persone immaginarie sono riportate nella Tabella 3 e riportate nella Figura 3. Sembra che {A, B) e {C, 0) siano due cluster ben separati . D'altra parte, quando l'altezza è espressa in piedi si ottiene la Tabella 4 e la Figura 4, dove i cluster evidenti sono ora {A, C} e {B, D}. Questa partizione è completamente diversa dalla prima perché ogni soggetto ha ricevuto un altro compagno. (La figura 4 sarebbe stata appiattita ancora di più se l'età fosse stata misurata in giorni).

Per evitare questa dipendenza dalla scelta delle unità di misura, si ha la possibilità di standardizzare i dati. Questo converte le misure originali in variabili senza unità.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Kaufman et al. continua con alcune considerazioni interessanti (pagina 11):

Da un punto di vista filosofico, la standardizzazione non risolve davvero il problema. In effetti, la scelta delle unità di misura genera pesi relativi delle variabili. Esprimere una variabile in unità più piccole porterà a un intervallo più ampio per quella variabile, che avrà quindi un grande effetto sulla struttura risultante. D'altra parte, standardizzando si tenta di dare a tutte le variabili un peso uguale, nella speranza di raggiungere l'obiettività. Come tale, può essere utilizzato da un professionista che non possiede alcuna conoscenza precedente. Tuttavia, può darsi che alcune variabili siano intrinsecamente più importanti di altre in una particolare applicazione, e quindi l'assegnazione dei pesi dovrebbe essere basata sulla conoscenza della materia (vedi, ad esempio, Abrahamowicz, 1985). D'altro canto, ci sono stati tentativi di escogitare tecniche di clustering indipendenti dalla scala delle variabili (Friedman e Rubin, 1967). La proposta di Hardy e Rasson (1982) è quella di cercare una partizione che minimizzi il volume totale degli scafi convessi dei cluster. In linea di principio, tale metodo è invariante rispetto alle trasformazioni lineari dei dati, ma sfortunatamente non esiste alcun algoritmo per la sua implementazione (tranne un'approssimazione limitata a due dimensioni). Pertanto, il dilemma della standardizzazione appare attualmente inevitabile e i programmi descritti in questo libro lasciano la scelta all'utente. La proposta di Hardy e Rasson (1982) è quella di cercare una partizione che minimizzi il volume totale degli scafi convessi dei cluster. In linea di principio, tale metodo è invariante rispetto alle trasformazioni lineari dei dati, ma sfortunatamente non esiste alcun algoritmo per la sua implementazione (tranne un'approssimazione limitata a due dimensioni). Pertanto, il dilemma della standardizzazione appare attualmente inevitabile e i programmi descritti in questo libro lasciano la scelta all'utente. La proposta di Hardy e Rasson (1982) è quella di cercare una partizione che minimizzi il volume totale degli scafi convessi dei cluster. In linea di principio, tale metodo è invariante rispetto alle trasformazioni lineari dei dati, ma sfortunatamente non esiste alcun algoritmo per la sua implementazione (tranne un'approssimazione limitata a due dimensioni). Pertanto, il dilemma della standardizzazione appare attualmente inevitabile e i programmi descritti in questo libro lasciano la scelta all'utente.


1
Questa risposta è fenomenale
Candic3

6

Si consiglia di standardizzare i dati perché, in caso contrario, l'intervallo di valori in ciascuna funzione fungerà da peso nel determinare come raggruppare i dati, che in genere non sono desiderati.

Ad esempio, considera la metrica standard per la maggior parte degli algoritmi di clustering (incluso DBSCAN in sci-kit learn) - euclidean, altrimenti nota come norma L2. Se una delle tue funzionalità ha una gamma di valori molto più ampia delle altre, il clustering sarà completamente dominato da quella funzionalità. Per illustrare questo sguardo al semplice esempio seguente:

>>> import numpy as np
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> 
>>> X = np.array([[1,2,100],[4,3,50],[1,1,75]])
>>> 
>>> print X
[[  1   2 100]
 [  4   3  50]
 [  1   1  75]]
>>> 
>>> print euclidean_distances(X)
[[  0.          50.0999002   25.01999201]
 [ 50.0999002    0.          25.25866188]
 [ 25.01999201  25.25866188   0.        ]]
>>> print euclidean_distances(StandardScaler().fit_transform(X))
[[ 0.          3.46410162  1.73205081]
 [ 3.46410162  0.          3.46410162]
 [ 1.73205081  3.46410162  0.        ]]

Da questo dovresti vedere che le distanze euclidee tra le versioni non standardizzate sono dominate dalla terza colonna perché il suo intervallo di valori è molto più grande delle altre due. Tuttavia, quando i dati sono standardizzati, questo non diventa più un problema e considera ogni caratteristica uguale quando si calcola la distanza tra ciascun punto dati.


1

Non è strettamente necessario standardizzare, se è necessario o meno può dipendere dalla metrica della distanza scelta.

Ad esempio, se si opta per la distanza di Mahalanobis, la separazione si baserà sul numero di deviazioni standard che separano i punti e non sulla distanza assoluta tra loro, in quanto tale è una metrica invariante di scala.

Come per molte cose nell'apprendimento automatico, non esiste una risposta rapida e difficile e l'unico modo per saperlo con certezza è applicare una varietà di tecniche per vedere quali danno i risultati più appropriati per i tuoi dati.


0

In alcuni casi ho trovato utile definire una funzione di "valutazione aziendale", definendo l '"importanza" delle dimensioni utilizzate per il clustering. Ad esempio per il fruttivendolo che raggruppa i clienti, se le mele sono due volte più costose delle arance, il numero di mele sarà raddoppiato.


Ma allora non potresti semplicemente includerlo come funzionalità aggiuntiva su cui ti concentri? vale a dire il prezzo diventa una funzionalità su cui raggruppare?
Candic3,
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.