Ho un numero di set di dati più piccoli, contenente 10 coordinate XY ciascuno. Sto usando Matlab (R2012a) e k-mezzo per ottenere un centroide. In alcuni dei cluster (vedi figura sotto) posso vedere alcuni punti estremi, perché i miei set di dati sono piccoli come sono, un outliner distrugge il valore del mio centroide. C'è un modo semplice per escludere questi punti? Supponiamo che Matlab abbia una funzione di "esclusione di valori anomali" ma non riesco a vederlo da nessuna parte nel menu degli strumenti. Grazie per il tuo aiuto! (E sì, io sono nuovo di questo :-)Rimozione di valori anomali da un cluster k-medio
risposta
k-means può essere abbastanza sensibile ai valori anomali nel set di dati. Il motivo è semplicemente che k-means cerca di ottimizzare la somma di quadrati . E quindi una grande deviazione (come quella di un outlier) ottiene molto peso.
Se si dispone di un set di dati rumoroso con valori anomali, è preferibile utilizzare un algoritmo con gestione del rumore specializzata, ad esempio DBSCAN (Density-Based Spatial Clustering of Applications with Noise). Nota la "N" nell'acronimo: Rumore. Al contrario di ad es. k-means, ma anche molti altri algoritmi di clustering, DBSCAN può decidere di non oggetti cluster che si trovano in regioni a bassa densità.
siete alla ricerca di qualcosa come "la rimozione valori anomali" e come altri hanno linkato sopra, "non c'è una rigorosa definizione matematica di ciò che costituisce un valore anomalo "- http://en.wikipedia.org/wiki/Outlier#Identifying_outliers.
Il rilevamento dei valori anomali è ancora più difficile quando si esegue il clustering senza supervisione poiché si sta tentando di apprendere cosa sono i cluster e quali sono i punti dati corrispondenti ai cluster "no".
Una definizione semplice consiste nel considerare tutti i punti di dati "lontani" da tutti gli altri punti di dati come valori anomali. Per esempio, si potrebbe considerare di rimuovere il punto con la massima distanza minima a qualsiasi altro punto:
x = randn(100,2);
x(101,:) = [10 10]; %a clear outlier
nSamples = size(x,1);
pointToPointDistVec = pdist(x);
pointToPointDist = squareform(pointToPointDistVec);
pointToPointDist = pointToPointDist + diag(inf(nSamples,1)); %remove self-distances; set to inf
smallestDist = min(pointToPointDist,[],2);
[maxSmallestDist,outlierInd] = max(smallestDist);
È possibile scorrere sopra un paio di volte per rimuovere in modo iterativo punti. Nota che questo non rimuoverà i valori anomali che hanno almeno un vicino vicino. Se leggi la pagina WIKI e vedi un algoritmo che potrebbe essere più utile, provalo e implementalo e chiedi di quell'approccio specifico.
- 1. Rimozione di valori anomali da un'immagine in scala di grigi
- 2. Rimozione valori anomali facilmente in R
- 3. Filtraggio una Misura (o rimozione di valori anomali)
- 4. ricerca e la rimozione valori anomali in PHP
- 5. Cassandra - Rimozione di un nodo dal cluster
- 6. Rimozione di valori nan da un array
- 7. valori rimozione di default da un oggetto
- 8. Ricerca di valori anomali in un set di dati
- 9. Rimozione di valori duplicati da un array PowerShell
- 10. Rimozione chiave valori coppie da un elenco di dizionari
- 11. Rimozione di voci da un dizionario basato sui valori
- 12. includere solo valori anomali da ciascuna colonna in una dataframe
- 13. calcolano i valori anomali in R
- 14. rimuovere i valori anomali in bwplot
- 15. Come stampare valori anomali e serie originali?
- 16. boxplot in matplotlib: Indicatori e valori anomali
- 17. Trovare i punti anomali da matplotlib: boxplot
- 18. Java: la rimozione di valori numerici da stringa
- 19. Creazione di pyplot.hist() primo e ultimo bin contiene valori anomali
- 20. Rimuovere i valori anomali dal calcolo del coefficiente di correlazione
- 21. Rimozione di duplicati da TStringList
- 22. Etichettatura di valori anomali di boxplot in R
- 23. rilevamento di valori anomali in una distribuzione sparsa?
- 24. Matlab: eliminazione dei valori anomali nel set di dati
- 25. Etichettatura di valori anomali su boxplot in R
- 26. YUI Compressor è la rimozione spazi da filtrare i valori
- 27. Includere indicazione di valori anomali estreme in ggplot
- 28. Rimozione di un artefatto da Maven Central
- 29. Rimozione di righe da un datagrid WPF
- 30. Rimozione di duplicati da un elenco
Penso che la parola che stai cercando sia Outlier (http://en.wikipedia.org/wiki/Outlier), non Outliner. Forse questo ti aiuterà a trovare una soluzione più facilmente. – Medo42
Sarebbe anche una buona idea menzionare che software stai usando e taggare di conseguenza. – kotekzot
scusate, ho scritto accidentalmente outliners (ho fatto un bel po 'di ricerche ma sono un principiante in matlab ed i codici che ho incontrato finora sono piuttosto pesanti.) Guardate ORC e ODIN, ma secondo la funzione di aiuto di MATLAB lì dovrebbe essere qualcosa chiamato 'exclude outliers' nella barra degli strumenti, ma non riesco a trovarlo, sto usando R2012a. – carro