Ultimo aggiornamento il 20 agosto 2020
L’analisi di clustering o cluster è un problema di apprendimento non supervisionato.
Viene spesso utilizzato come tecnica di analisi dei dati per scoprire modelli interessanti nei dati, come gruppi di clienti in base al loro comportamento.
Ci sono molti algoritmi di clustering tra cui scegliere e nessun singolo algoritmo di clustering migliore per tutti i casi. Invece, è una buona idea esplorare una serie di algoritmi di clustering e configurazioni diverse per ciascun algoritmo.,
In questo tutorial, scoprirai come adattare e utilizzare i migliori algoritmi di clustering in python.
Dopo aver completato questo tutorial, saprai:
- Il clustering è un problema non supervisionato di trovare gruppi naturali nello spazio delle funzionalità dei dati di input.
- Esistono molti algoritmi di clustering diversi e nessun metodo migliore per tutti i set di dati.
- Come implementare, adattare e utilizzare i migliori algoritmi di clustering in Python con la libreria di apprendimento automatico scikit-learn.,
Avvia il tuo progetto con il mio nuovo libro Machine Learning Mastery Con Python, inclusi tutorial passo-passo e i file di codice sorgente Python per tutti gli esempi.
Iniziamo.
Algoritmi di clustering con Python
Foto di Lars Plougmann, alcuni diritti riservati.,/div>
Tutorial Panoramica
Questo tutorial è diviso in tre parti, che sono:
- Clustering
- Algoritmi di Clustering
- Esempi di Algoritmi di Clustering
- Installazione della Libreria
- Clustering set di dati
- Affinità di Propagazione
- Agglomerativo Clustering
- BETULLA
- DBSCAN
- K-means
- Mini-Lotto K-means
- Significa Maiusc
- OTTICA
- Clustering
- Controllo del Modello della Miscela
Clustering
l’analisi di Cluster, o di clustering, è un incustoditi macchina compito di apprendimento.,
Comporta automaticamente la scoperta del raggruppamento naturale nei dati. A differenza dell’apprendimento supervisionato (come la modellazione predittiva), gli algoritmi di clustering interpretano solo i dati di input e trovano gruppi o cluster naturali nello spazio delle caratteristiche.
Le tecniche di clustering si applicano quando non c’è una classe da prevedere, ma piuttosto quando le istanze devono essere divise in gruppi naturali.
– Pagina 141, Data Mining: Practical Machine Learning Tools and Techniques, 2016.,
Un cluster è spesso un’area di densità nello spazio delle caratteristiche in cui gli esempi del dominio (osservazioni o righe di dati) sono più vicini al cluster rispetto ad altri cluster. Il cluster può avere un centro (il centroide) che è un campione o uno spazio caratteristica punto e può avere un limite o estensione.
Questi cluster riflettono presumibilmente alcuni meccanismi al lavoro nel dominio da cui vengono tratte le istanze, un meccanismo che fa sì che alcune istanze abbiano una somiglianza più forte l’una con l’altra rispetto alle istanze rimanenti.,
— Pagine 141-142, Data Mining: Practical Machine Learning Tools and Techniques, 2016.
Il clustering può essere utile come attività di analisi dei dati per saperne di più sul dominio del problema, il cosiddetto pattern discovery o knowledge discovery.
Ad esempio:
- L’albero filogenetico potrebbe essere considerato il risultato di un’analisi manuale di clustering.
- Separare i dati normali da valori anomali o anomalie può essere considerato un problema di clustering.,
- Separare i cluster in base al loro comportamento naturale è un problema di clustering, denominato segmentazione del mercato.
Il clustering può anche essere utile come tipo di ingegneria delle funzionalità, in cui esempi esistenti e nuovi possono essere mappati ed etichettati come appartenenti a uno dei cluster identificati nei dati.
La valutazione dei cluster identificati è soggettiva e può richiedere un esperto di dominio, sebbene esistano molte misure quantitative specifiche per il clustering., In genere, gli algoritmi di clustering vengono confrontati accademicamente su set di dati sintetici con cluster predefiniti, che un algoritmo dovrebbe scoprire.
Il clustering è una tecnica di apprendimento non supervisionata, quindi è difficile valutare la qualità dell’output di un dato metodo.
— Pagina 534, Machine Learning: A Probabilistic Perspective, 2012.
Algoritmi di clustering
Esistono molti tipi di algoritmi di clustering.,
Molti algoritmi utilizzano misure di somiglianza o distanza tra esempi nello spazio delle caratteristiche nel tentativo di scoprire regioni dense di osservazioni. In quanto tale, è spesso buona pratica scalare i dati prima di utilizzare algoritmi di clustering.
Centrale per tutti gli obiettivi dell’analisi del cluster è la nozione del grado di somiglianza (o dissomiglianza) tra i singoli oggetti che vengono raggruppati. Un metodo di clustering tenta di raggruppare gli oggetti in base alla definizione di somiglianza fornita ad esso.,
— Pagina 502, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.
Alcuni algoritmi di clustering richiedono di specificare o indovinare il numero di cluster da scoprire nei dati, mentre altri richiedono la specifica di una distanza minima tra le osservazioni in cui gli esempi possono essere considerati “vicini” o “connessi.,”
In quanto tale, l’analisi del cluster è un processo iterativo in cui la valutazione soggettiva dei cluster identificati viene ricondotta alle modifiche alla configurazione dell’algoritmo fino a ottenere un risultato desiderato o appropriato.
La libreria scikit-learn fornisce una suite di diversi algoritmi di clustering tra cui scegliere.,
Una lista di 10 dei più famosi algoritmi è come segue:
- Affinità di Propagazione
- Agglomerativo Clustering
- BETULLA
- DBSCAN
- K-means
- Mini-Lotto K-means
- Significa Maiusc
- OTTICA
- Clustering
- Mistura di Gaussiane
Ogni algoritmo offre un approccio diverso per la sfida di scoprire gruppi naturali di dati.
Non esiste il miglior algoritmo di clustering e non esiste un modo semplice per trovare il miglior algoritmo per i tuoi dati senza utilizzare esperimenti controllati.,
In questo tutorial, esamineremo come utilizzare ciascuno di questi 10 algoritmi di clustering popolari dalla libreria scikit-learn.
Gli esempi forniranno la base per copiare e incollare gli esempi e testare i metodi sui propri dati.
Non ci immergeremo nella teoria alla base di come funzionano gli algoritmi o li confronteremo direttamente. Per un buon punto di partenza su questo argomento, vedi:
- Clustering, scikit-learn API.
Tuffiamoci.,
Esempi di algoritmi di clustering
In questa sezione, esamineremo come utilizzare 10 algoritmi di clustering popolari in scikit-learn.
Questo include un esempio di adattamento del modello e un esempio di visualizzazione del risultato.
Gli esempi sono progettati per copiare e incollare nel proprio progetto e applicare i metodi ai propri dati.
Installazione della libreria
Per prima cosa, installiamo la libreria.
Non saltare questo passaggio in quanto è necessario assicurarsi di avere l’ultima versione installata.,>
1
|
sudo pip install scikit-learn
|
For additional installation instructions specific to your platform, see:
- Installing scikit-learn
Next, let’s confirm that the library is installed and you are using a modern version.,
Eseguire il seguente script per stampare il numero di versione della libreria.,
1
2
3
|
# check scikit-imparare versione
importa sklearn
stampa(sklearn.,__ version__)
|
Eseguendo l’esempio, dovresti vedere il seguente numero di versione o superiore.
1
|
0.22.,1
|
Clustering Dataset
Useremo la funzione make_classification() per creare un set di dati di classificazione binaria di test.
Il set di dati avrà 1.000 esempi, con due funzioni di input e un cluster per classe. I cluster sono visivamente evidenti in due dimensioni in modo da poter tracciare i dati con un grafico a dispersione e colorare i punti nel grafico dal cluster assegnato. Ciò aiuterà a vedere, almeno sul problema del test, quanto “bene” sono stati identificati i cluster.,
I cluster in questo problema di test sono basati su una gaussiana multivariata e non tutti gli algoritmi di clustering saranno efficaci nell’identificare questi tipi di cluster. Come tale, i risultati in questo tutorial non dovrebbero essere utilizzati come base per confrontare i metodi in generale.
Un esempio di creazione e riepilogo del set di dati di clustering sintetico è elencato di seguito.
L’esecuzione dell’esempio crea il set di dati di clustering sintetico, quindi crea un grafico a dispersione dei dati di input con punti colorati per etichetta di classe (cluster idealizzati).,
Possiamo vedere chiaramente due gruppi distinti di dati in due dimensioni e la speranza sarebbe che un algoritmo di clustering automatico possa rilevare questi raggruppamenti.
Grafico a dispersione del set di dati di clustering sintetico con punti colorati dal Cluster noto
Successivamente, possiamo iniziare a guardare esempi di algoritmi di clustering applicati a questo set di dati.
Ho fatto alcuni tentativi minimi di sintonizzare ogni metodo sul set di dati.
Puoi ottenere un risultato migliore per uno degli algoritmi?
Fatemi sapere nei commenti qui sotto.,
Propagazione di affinità
La propagazione di affinità comporta la ricerca di un insieme di esempi che riassumano al meglio i dati.
Abbiamo ideato un metodo chiamato “propagazione di affinità”, che prende come misure di input di somiglianza tra coppie di punti dati. I messaggi a valore reale vengono scambiati tra i punti dati fino a quando non emerge gradualmente un insieme di esempi di alta qualità e cluster corrispondenti
-Clustering passando messaggi tra punti dati, 2007.,
La tecnica è descritta nel documento:
- Clustering passando messaggi tra punti dati, 2007.
È implementato tramite la classe AffinityPropagation e la configurazione principale da sintonizzare è lo “smorzamento” impostato tra 0.5 e 1 e forse “preferenza.”
L’esempio completo è elencato di seguito.
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, non sono riuscito a ottenere un buon risultato.,
Grafico a dispersione di set di dati con cluster identificati utilizzando la propagazione di affinità
Agglomerative Clustering
Agglomerative clustering comporta l’unione di esempi fino al raggiungimento del numero desiderato di cluster.
Fa parte di una più ampia classe di metodi di clustering gerarchico e puoi saperne di più qui:
- clustering gerarchico, Wikipedia.,
È implementato tramite la classe AgglomerativeClustering e la configurazione principale da sintonizzare è il set “n_clusters”, una stima del numero di cluster nei dati, ad esempio 2.
L’esempio completo è elencato di seguito.
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, viene trovato un raggruppamento ragionevole.,
Scatter Plot di Dataset con cluster identificati utilizzando Agglomerative Clustering
BIRCH
BIRCH Clustering (BIRCH è l’abbreviazione di Balanced Iterative Reducing and Clustering using
Gerarchie) comporta la costruzione di una struttura ad albero da cui vengono estratti i centroidi del cluster.
BIRCH raggruppa in modo incrementale e dinamico i punti dati metrici multidimensionali in ingresso per cercare di produrre il miglior clustering di qualità con le risorse disponibili (es.,, memoria disponibile e vincoli di tempo).
— BIRCH: An efficient data clustering method for large databases, 1996.
La tecnica è descritta nel documento:
- BIRCH: An efficient data clustering method for large databases, 1996.
È implementato tramite la classe Birch e la configurazione principale da sintonizzare sono gli iperparametri “threshold” e “n_clusters”, quest’ultimo dei quali fornisce una stima del numero di cluster.
L’esempio completo è elencato di seguito.,
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, viene trovato un raggruppamento eccellente.,
Grafico a dispersione del set di dati con cluster identificati utilizzando BIRCH Clustering
DBSCAN
Il clustering DBSCAN (dove DBSCAN è l’abbreviazione di Clustering spaziale basato sulla densità di applicazioni con rumore) comporta la ricerca di aree ad alta densità nel dominio quelle aree dello spazio caratteristica intorno a loro come cluster.
present presentiamo il nuovo algoritmo di clustering DBSCAN basato su una nozione di cluster basata sulla densità progettata per scoprire cluster di forma arbitraria., DBSCAN richiede un solo parametro di input e supporta l’utente nel determinare un valore appropriato per esso
— Un algoritmo basato sulla densità per la scoperta di cluster in grandi database spaziali con rumore, 1996.
La tecnica è descritta nel documento:
- A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise, 1996.
È implementato tramite la classe DBSCAN e la configurazione principale da sintonizzare sono gli iperparametri “eps” e “min_samples”.
L’esempio completo è elencato di seguito.,
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, viene trovato un raggruppamento ragionevole, sebbene sia necessaria una maggiore sintonizzazione.,
Grafico a dispersione del set di dati con cluster identificati utilizzando DBSCAN Clustering
K-Means
K-Means Clustering può essere l’algoritmo di clustering più noto e comporta l’assegnazione di esempi ai cluster nel tentativo di minimizzare la varianza all’interno di ciascun cluster.
Lo scopo principale di questo documento è quello di descrivere un processo per il partizionamento di una popolazione N-dimensionale in insiemi k sulla base di un campione., Il processo, che è chiamato “k-means”, sembra fornire partizioni ragionevolmente efficienti nel senso della varianza all’interno della classe.
— Alcuni metodi per la classificazione e l’analisi delle osservazioni multivariate, 1967.
La tecnica è descritta qui:
- k-means clustering, Wikipedia.
È implementato tramite la classe KMeans e la configurazione principale da sintonizzare è l’iperparametro “n_clusters” impostato sul numero stimato di cluster nei dati.
L’esempio completo è elencato di seguito.,
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, viene trovato un raggruppamento ragionevole, sebbene la varianza uguale disuguale in ogni dimensione renda il metodo meno adatto a questo set di dati.,
grafico a Dispersione di set di dati Con i Cluster Identificati Utilizzando K-means Clustering
Mini-Lotto K-means
Mini-Lotto K-means è una versione modificata di k-significa che aggiorna i centroidi dei cluster utilizzo di mini-lotti di campioni, piuttosto che l’intero set di dati, che può rendere più veloce per un grande set di dati, e forse più robusto al rumore statistico.
propose proponiamo l’uso di ottimizzazione mini-batch per k-means clustering., Ciò riduce il costo di calcolo di ordini di grandezza rispetto al classico algoritmo batch, offrendo soluzioni significativamente migliori rispetto alla discesa del gradiente stocastico online.
— Web-Scale K-Means Clustering, 2010.
La tecnica è descritta nel documento:
- Web-Scale K-Means Clustering, 2010.
È implementato tramite la classe MiniBatchKMeans e la configurazione principale da sintonizzare è l’iperparametro “n_clusters” impostato sul numero stimato di cluster nei dati.
L’esempio completo è elencato di seguito.,
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, viene trovato un risultato equivalente all’algoritmo k-means standard.
Grafico a dispersione del set di dati con cluster identificati utilizzando il Mini-Batch K-Means Clustering
Mean Shift
Mean shift clustering comporta la ricerca e l’adattamento dei centroidi in base alla densità degli esempi nello spazio delle feature.,
Dimostriamo per dati discreti la convergenza di una procedura di spostamento medio ricorsivo al punto stazionario più vicino della funzione di densità sottostante e quindi la sua utilità nel rilevare i modi della densità.
— Mean Shift: un approccio robusto verso feature space analysis, 2002.
La tecnica è descritta nel documento:
- Mean Shift: A robust approach towards feature space analysis, 2002.
È implementato tramite la classe MeanShift e la configurazione principale da sintonizzare è l’iperparametro “larghezza di banda”.,
L’esempio completo è elencato di seguito.
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, un insieme ragionevole di cluster si trova nei dati.,
Scatter Plot of Dataset With Clusters Identified Using Mean Shift Clustering
OPTICS
OPTICS clustering (dove OPTICS è l’abbreviazione di Ordinare i punti per identificare la struttura di Clustering) è una versione modificata di DBSCAN descritta sopra.
Introduciamo un nuovo algoritmo ai fini dell’analisi del cluster che non produce esplicitamente un clustering di un set di dati; ma crea invece un ordinamento aumentato del database che rappresenta la sua struttura di clustering basata sulla densità., Questo ordine di cluster contiene informazioni equivalenti ai clustering basati sulla densità corrispondenti a un’ampia gamma di impostazioni dei parametri.
— OPTICS: ordering points to identify the clustering structure, 1999.
La tecnica è descritta nel documento:
- OTTICA: ordinare i punti per identificare la struttura di clustering, 1999.
È implementato tramite la classe OTTICA e la configurazione principale da sintonizzare sono gli iperparametri “eps” e “min_samples”.
L’esempio completo è elencato di seguito.,
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, non sono riuscito a ottenere un risultato ragionevole su questo set di dati.
Scatter Plot of Dataset With Clusters Identified Using OPTICS Clustering
Spectral Clustering
Spectral Clustering è una classe generale di metodi di clustering, tratti dall’algebra lineare.,
Un’alternativa promettente che è emersa di recente in un certo numero di campi è l’uso di metodi spettrali per il clustering. Qui, si utilizzano gli autovettori superiori di una matrice derivata dalla distanza tra i punti.
– On Spectral Clustering: Analysis and an algorithm, 2002.
La tecnica è descritta nel documento:
- On Spectral Clustering: Analysis and an algorithm, 2002.,
È implementato tramite la classe SpectralClustering e il Clustering spettrale principale è una classe generale di metodi di clustering, tratti dall’algebra lineare. per sintonizzare è l’iperparametro “n_clusters” utilizzato per specificare il numero stimato di cluster nei dati.
L’esempio completo è elencato di seguito.
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, sono stati trovati cluster ragionevoli.,
Grafico a dispersione di set di dati con cluster identificati utilizzando Spectra Clustering Clustering
Modello di miscela gaussiana
Un modello di miscela gaussiana riassume una funzione di densità di probabilità multivariata con una miscela di distribuzioni di probabilità gaussiane come suggerisce il nome.
Per ulteriori informazioni sul modello, vedere:
- Mixture model, Wikipedia.,
È implementato tramite la classe GaussianMixture e la configurazione principale da sintonizzare è l’iperparametro “n_clusters” utilizzato per specificare il numero stimato di cluster nei dati.
L’esempio completo è elencato di seguito.
L’esecuzione dell’esempio si adatta al modello nel set di dati di formazione e prevede un cluster per ogni esempio nel set di dati. Viene quindi creato un grafico a dispersione con i punti colorati dal cluster assegnato.
In questo caso, possiamo vedere che i cluster sono stati identificati perfettamente., Questo non è sorprendente dato che il set di dati è stato generato come una miscela di Gaussiani.
Grafico a dispersione del set di dati con cluster identificati usando Gaussian Mixture Clustering
Ulteriori letture
Questa sezione fornisce più risorse sull’argomento se stai cercando di approfondire.
Papers
- Clustering passando messaggi tra punti dati, 2007.
- BIRCH: An efficient data clustering method for large databases, 1996.,
- A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise, 1996.
- Alcuni metodi per la classificazione e l’analisi delle osservazioni multivariate, 1967.
- Web-Scale K-Means Clustering, 2010.
- Mean Shift: A robust approach towards feature space analysis, 2002.
- On Spectral Clustering: Analysis and an algorithm, 2002.
Libri
- Data Mining: strumenti pratici di apprendimento automatico e tecniche, 2016.
- Gli elementi dell’apprendimento statistico: Data Mining, inferenza e previsione, 2016.,
- Machine Learning: una prospettiva probabilistica, 2012.
API
- Clustering, scikit-imparare API.
- impara.set di dati.API make_classification.
- impara.api cluster.
Articoli
- Analisi del cluster, Wikipedia.
- Clustering gerarchico, Wikipedia.
- k – significa clustering, Wikipedia.
- Modello di miscela, Wikipedia.
Riepilogo
In questo tutorial, hai scoperto come adattare e utilizzare i migliori algoritmi di clustering in python.,
In particolare, hai imparato:
- Il clustering è un problema non supervisionato di trovare gruppi naturali nello spazio delle funzionalità dei dati di input.
- Esistono molti algoritmi di clustering diversi e nessun metodo migliore per tutti i set di dati.
- Come implementare, adattare e utilizzare i migliori algoritmi di clustering in Python con la libreria di apprendimento automatico scikit-learn.
Hai qualche domanda?
Fai le tue domande nei commenti qui sotto e farò del mio meglio per rispondere.
Scopri l’apprendimento automatico veloce in Python!,
Sviluppa i tuoi modelli in pochi minuti
…con poche righe di scikit-learn code
Scopri come nel mio nuovo Ebook:
Machine Learning Mastery With Python
Copre tutorial di autoapprendimento e progetti end-to-end come:
Caricamento dei dati, visualizzazione, modellazione, messa a punto e molto altro…
Infine Portare Machine Learning a
i propri progetti
Saltare gli accademici. Solo risultati.
Guarda cosa c’è dentro