È descritto in Mahout in Action che la normalizzazione può leggermente migliorare l'accuratezza. Qualcuno può spiegare il motivo, grazie!Perché la normalizzazione del vettore può migliorare l'accuratezza del clustering e della classificazione?
risposta
La normalizzazione non è sempre richiesta, ma raramente fa male.
Alcuni esempi:
K-means è "isotropo" in tutte le direzioni dello spazio e tende quindi a produrre più o meno rotonde (anziché allungata) cluster. In questa situazione, lasciare le varianze non uguali equivale a mettendo più peso sulle variabili con varianza più piccola.
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')
(FYI: How can I detect if my dataset is clustered or unclustered (i.e. forming one single cluster)
L'analisi comparativa mostra che i risultati del clustering distribuito dipendono dal tipo di procedura di normalizzazione.
Artificial neural network (inputs):
Se le variabili di ingresso sono combinati linearmente, come in un MLP, allora è raramente strettamente necessario standardizzare ingressi, almeno in teoria . Il motivo è che qualsiasi ridimensionamento di un vettore di input può essere annullato in modo efficace modificando i pesi e i bias corrispondenti, lasciandovi esattamente gli stessi risultati precedenti. Tuttavia, ci sono una serie di motivi pratici per cui la standardizzazione degli ingressi può rendere più veloce l'allenamento e ridurre le possibilità di rimanere bloccati nell'opzione locale . Inoltre, la riduzione del peso e la stima Bayesiana possono essere eseguite in modo più conveniente con ingressi standardizzati.
Artificial neural network (inputs/outputs)
Si deve fare nessuna di queste cose ai vostri dati? La risposta è, è dipende.
Standardizzazione variabili di ingresso o di destinazione tende a rendere il processo di formazione meglio comportato migliorando la condizione numerica (vedi ftp://ftp.sas.com/pub/neural/illcond/illcond.html) dell'ottimizzazione problema e garantire che vari valori predefiniti coinvolti nella inizializzazione e terminazione sono appropriati. La standardizzazione degli obiettivi può anche influire sulla funzione obiettivo.
La standardizzazione dei casi deve essere affrontata con cautela in quanto informazioni sugli scarti . Se questa informazione è irrilevante, la standardizzazione dei casi può essere molto utile. Se questa informazione è importante , la standardizzazione dei casi può essere disastrosa.
interessante, cambiando le unità di misura può persino portare uno per vedere una diversa struttura di clustering: Kaufman, Leonard, and Peter J. Rousseeuw.. "Finding groups in data: An introduction to cluster analysis." (2005).
In alcune applicazioni, cambiare le unità di misura può anche portare uno per visualizzare un struttura di clustering molto diversa. Ad esempio, l'età (in anni) e l'altezza (in centimetri) di quattro persone immaginarie sono date nella Tabella 3 e riportate nella Figura 3. Sembra che {A, B) e {C, 0) siano due pozzi cluster separati. D'altra parte, quando l'altezza è espressa in piedi si ottiene la Tabella 4 e la Figura 4, dove i cluster ovvi sono ora {A, C} e {B, D}. Questa partizione è completamente uguale a , poiché ciascun soggetto ha ricevuto un altro compagno . (Figura 4 sarebbe stato appiattito ancor più se fosse età stata misurata in giorni.)
Per evitare questa dipendenza sulla scelta delle unità di misura, si ha la possibilità di standardizzazione dei dati. Converte le misure originali in variabili senza unità.
Kaufman et al. prosegue con alcune considerazioni interessanti (pagina 11):
Da un punto di vista filosofico, la standardizzazione in realtà non risolvere il problema. Infatti, la scelta delle unità di misura dà origine a ai pesi relativi delle variabili. Esprimere una variabile in unità più piccole porterà a un intervallo più ampio per quella variabile, che quindi avrà un grande effetto sulla struttura risultante. D'altra parte, per il standardizzare un tentativo di dare a tutte le variabili un peso uguale, in la speranza di raggiungere l'obiettività. Come tale, può essere utilizzato da un professionista che non possiede alcuna conoscenza precedente. Tuttavia, potrebbe essere che alcune variabili sono intrinsecamente più importanti di altre in un'applicazione specifica e quindi l'assegnazione dei pesi deve essere in base alla conoscenza dell'oggetto (si veda, ad esempio, Abrahamowicz, 1985). Su d'altra parte, 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) è per cercare una partizione che riduca al minimo 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 (eccetto per un'approssimazione che è limitata a due dimensioni).Pertanto, il dilemma di standardizzazione appare inevitabile al momento ei programmi descritti in questo libro lasciano la scelta all'utente.
Puoi approfondire perché K-means, "lasciare le varianze disuguali equivale a mettere più peso sulle variabili con varianza più piccola"? In che modo la distanza euclidea è influenzata da variazioni ineguali in questo caso? – soufanom
@soufanom Sicuro, esempio aggiunto nella risposta. –
Nota che avrei potuto usare ['gscatter'] (http://www.mathworks.com/help/stats/gscatter.html) per tracciare l'esempio di k-means. –
la ragione è che a volte le misurazioni delle diverse variabili sono diverse per natura, quindi la variazione dei risultati viene regolata mediante normalizzazione. per esempio in un confronto di età (x) vs peso (y) per un gruppo di bambini, l'età può andare da uno a 10 e il peso può andare da 10 sterline a 100. se non normalizzi il grafico produrrà un due forme ovali lunghe molto strane alla destra del grafico poiché entrambe le scale devono essere formate da 1 a 100. normalizzando darebbe ad entrambi gli assi una scala da 1 a 100, il grafico mostrerà cluster più significativi.
- 1. Clustering - Vettore sparse e vettore denso
- 2. Elaborazione del linguaggio naturale - Caratteristiche per la classificazione del testo
- 3. normalizzazione delle caratteristiche - vantaggio della normalizzazione l2
- 4. Normalizzazione del database MySQL
- 5. Normalizzazione del database per il sistema di gestione della scuola
- 6. Come posso migliorare questo codice di classificazione?
- 7. Perché i costrutti e le copie di inizializzazione del vettore?
- 8. Che cosa fa esattamente la normalizzazione del database?
- 9. Normalizzazione del database: chi ha ragione?
- 10. Come migliorare la precisione del posizionamento interno?
- 11. Migliorare la mia implementazione Haskell del filtro
- 12. Uso del contesto per migliorare la codifica della parte del discorso
- 13. "Normalizzazione" del codice hash di BigDecimal: howto?
- 14. Come si insegna alla normalizzazione del database?
- 15. Libreria Java per normalizzazione del testo
- 16. Aiuto per la normalizzazione del progetto di database necessario (5nf)
- 17. Come si può utilizzare la stima della densità del kernel come metodo di clustering 1D in scikit?
- 18. Scala - Imposizione della dimensione del vettore al momento della compilazione
- 19. k-means implementazione del clustering in Javascript?
- 20. std :: vector.pop_back() modifica la capacità del vettore?
- 21. Vettore del filtro attivo
- 22. Migliorare la qualità della conversione di Wand
- 23. TensorFlow - Classificazione del testo tramite reti neurali
- 24. Come tenere conto della CSR e del clustering in dati spaziali uniformi?
- 25. Mahout: CSV per il vettore e l'esecuzione del programma
- 26. sklearn LogisticRegression e modifica della soglia predefinita per la classificazione
- 27. Come migliorare la velocità del codice macro VBA?
- 28. Creare un vettore con una lunghezza di esecuzione del vettore originale con la stessa lunghezza del vettore originale
- 29. Inizializzazione del vettore statico
- 30. metodi di classificazione del testo? SVM e albero decisionale
Quale metodo di apprendimento o quale modello è in discussione? (per esempio perceptron, kmean, ecc.) – DuckMaestro
Naive Bayes, K-means ... –