Tweet Share Share

laatst bijgewerkt op 20 augustus 2020

Clustering of clusteranalyse is een leerprobleem zonder toezicht.

het wordt vaak gebruikt als een data-analysetechniek voor het ontdekken van interessante patronen in data, zoals groepen klanten op basis van hun gedrag.

Er zijn veel clustering algoritmen om uit te kiezen en er is geen enkel best clustering algoritme voor alle gevallen. In plaats daarvan is het een goed idee om een scala aan clustering algoritmen en verschillende configuraties voor elk algoritme te verkennen.,

in deze tutorial zult u ontdekken hoe u top clustering algoritmen in python kunt aanpassen en gebruiken.

na het voltooien van deze tutorial, zult u weten:

  • Clustering is een probleem zonder toezicht van het vinden van natuurlijke groepen in de functieruimte van invoergegevens.
  • er zijn veel verschillende clustering algoritmen en geen enkele beste methode voor alle datasets.
  • Hoe top clustering algoritmen in Python te implementeren, passen en gebruiken met de sikit-learn machine learning library.,

start uw project met mijn nieuwe boek Machine Learning meesterschap met Python, inclusief stap-voor-stap tutorials en de Python broncode bestanden voor alle voorbeelden.

laten we beginnen.

Clustering algoritmes With Python
Foto door Lars Plougmann, enkele rechten voorbehouden.,/div>

Tutorial Overzicht

Deze handleiding is verdeeld in drie delen; ze zijn:

  1. Clustering
  2. Clustering Algoritmes
  3. Voorbeelden van Clustering Algoritmes
    1. Bibliotheek Installatie
    2. Clustering Dataset
    3. Affiniteit Vermeerdering
    4. Agglomerative Clustering
    5. BERK
    6. DBSCAN
    7. K-Middelen
    8. Mini-Batch K-Middelen
    9. Gemiddelde Shift
    10. OPTIEK
    11. Spectrale Clustering
    12. Gaussian Mixture Model

Clustering

Cluster analyse, of een clustering is van een zonder toezicht werkende machine learning taak.,

het gaat om het automatisch ontdekken van natuurlijke groepering in data. In tegenstelling tot begeleid leren (zoals voorspellende modellering), clustering algoritmen interpreteren alleen de input data en vinden natuurlijke groepen of clusters in functie ruimte.

Clustering technieken zijn van toepassing wanneer er geen klasse te voorspellen, maar eerder wanneer de instanties moeten worden onderverdeeld in natuurlijke groepen.

— Page 141, Data Mining: Practical Machine Learning Tools and Techniques, 2016.,

Een cluster is vaak een dichtheidsgebied in de functieruimte waar voorbeelden uit het domein (waarnemingen of rijen met gegevens) dichter bij het cluster liggen dan andere clusters. De cluster kan een centrum (de centroid) dat is een monster of een punt functie ruimte en kan een grens of omvang hebben.

deze clusters weerspiegelen vermoedelijk een mechanisme dat aan het werk is in het domein waaruit instanties worden getrokken, een mechanisme dat ervoor zorgt dat sommige instanties een sterkere gelijkenis met elkaar vertonen dan met de overige instanties.,

– Pages 141-142, Data Mining: Practical Machine Learning Tools and Techniques, 2016.

Clustering kan nuttig zijn als een activiteit voor gegevensanalyse om meer te weten te komen over het probleemdomein, de zogenaamde pattern discovery of knowledge discovery.

bijvoorbeeld:

  • de fylogenetische boom kan worden beschouwd als het resultaat van een handmatige clustering analyse.
  • het scheiden van normale gegevens van uitschieters of anomalieën kan als een clustering probleem worden beschouwd.,
  • het scheiden van clusters op basis van hun natuurlijke gedrag is een clustering probleem, aangeduid als marktsegmentatie.

Clustering kan ook nuttig zijn als een type feature engineering, waarbij bestaande en nieuwe voorbeelden in kaart kunnen worden gebracht en gelabeld als behorend tot een van de geïdentificeerde clusters in de gegevens.

evaluatie van geïdentificeerde clusters is subjectief en kan een domeindeskundige vereisen, hoewel er veel clustering-specifieke kwantitatieve maatregelen bestaan., Typisch, clustering algoritmen worden academisch vergeleken op synthetische datasets met vooraf gedefinieerde clusters, die een algoritme wordt verwacht te ontdekken.

Clustering is een leertechniek zonder toezicht, dus het is moeilijk om de kwaliteit van de output van een bepaalde methode te evalueren.

– Page 534, Machine Learning: A Probabilistic Perspective, 2012.

Clustering algoritmes

Er zijn vele soorten clustering algoritmes.,

veel algoritmen gebruiken overeenkomsten of afstandsmaten tussen voorbeelden in de objectruimte in een poging om dichte gebieden van waarnemingen te ontdekken. Als zodanig is het vaak een goede praktijk om gegevens te schalen voordat u clustering-algoritmen gebruikt.

centraal in alle doelen van clusteranalyse is de notie van de mate van gelijkenis (of ongelijkheid) tussen de afzonderlijke objecten die geclusterd worden. Een clustering methode probeert om de objecten te groeperen op basis van de definitie van gelijkenis geleverd aan het.,

— Page 502, the Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.

sommige clustering algoritmen vereisen dat u specificeert of gist op het aantal clusters om te ontdekken in de gegevens, terwijl andere vereisen de specificatie van een minimum afstand tussen waarnemingen waarin voorbeelden kunnen worden beschouwd als “close” of “connected.,”

als zodanig is clusteranalyse een iteratief proces waarbij subjectieve evaluatie van de geïdentificeerde clusters wordt teruggekoppeld in wijzigingen in algoritmeconfiguratie totdat een gewenst of passend resultaat is bereikt.

De sikit-learn bibliotheek biedt een suite van verschillende clustering algoritmen om uit te kiezen.,

een lijst van 10 van de meest populaire algoritmen is als volgt:

  • affiniteit propagatie
  • Agglomeratieve Clustering
  • BIRCH
  • DBSCAN
  • K-Means
  • Mini-Batch K-Means
  • gemiddelde Shift
  • optica
  • spectrale Clustering
  • mengsel van gaussianen

elk algoritme biedt een andere benadering van de uitdaging om natuurlijke groepen in data te ontdekken.

er is geen Best clustering algoritme, en geen gemakkelijke manier om het beste algoritme voor uw gegevens te vinden zonder gebruik te maken van gecontroleerde experimenten.,

in deze tutorial zullen we bekijken hoe elk van deze 10 populaire clustering algoritmen uit de scikit-learn bibliotheek gebruikt kunnen worden.

De voorbeelden geven u de basis om de voorbeelden te kopiëren en te plakken en de methoden op uw eigen gegevens te testen.

We zullen niet ingaan op de theorie achter hoe de algoritmen werken of ze direct vergelijken. Voor een goed beginpunt over dit onderwerp, zie:

  • Clustering, sikit-learn API.

laten we erin duiken.,

voorbeelden van Clustering algoritmes

in deze sectie zullen we bekijken hoe 10 populaire clustering algoritmes gebruikt kunnen worden in scikit-learn.

Dit omvat een voorbeeld van het aanpassen van het model en een voorbeeld van het visualiseren van het resultaat.

De voorbeelden zijn ontworpen voor u om te kopiëren-plakken in uw eigen project en de methoden toe te passen op uw eigen gegevens.

bibliotheek installatie

laten we eerst de bibliotheek installeren.

sla deze stap niet over, omdat u ervoor moet zorgen dat u de laatste versie hebt geïnstalleerd.,>

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.,

voer het volgende script uit om het versienummer van de bibliotheek af te drukken.,

1
2
3

# controleer scikit-leren versie
importeren sklearn
print(sklearn.,__version__)

Als u het voorbeeld uitvoert, ziet u het volgende versienummer of hoger.

1
0.22.,1

Clustering Dataset

We zullen de functie make_classification() gebruiken om een test binaire classificatie dataset te maken.

de dataset zal 1000 voorbeelden hebben, met twee invoerfuncties en één cluster per klasse. De clusters zijn visueel duidelijk in twee dimensies, zodat we de gegevens kunnen plotten met een scatter plot en de punten in de plot kunnen kleuren door de toegewezen cluster. Dit zal helpen om te zien, althans op het testprobleem, hoe “goed” de clusters werden geïdentificeerd.,

de clusters in dit testprobleem zijn gebaseerd op een multivariate Gaussian, en niet alle clustering algoritmen zullen effectief zijn bij het identificeren van deze soorten clusters. Als zodanig, de resultaten in deze tutorial mag niet worden gebruikt als basis voor het vergelijken van de methoden in het algemeen.

een voorbeeld van het maken en samenvatten van de synthetische clustering dataset wordt hieronder weergegeven.

het uitvoeren van het voorbeeld maakt de synthetische clustering dataset, en maakt vervolgens een scatter plot van de invoergegevens met punten gekleurd door Klasse label (geïdealiseerde clusters).,

We kunnen duidelijk twee verschillende groepen gegevens in twee dimensies zien en de hoop zou zijn dat een automatisch clustering algoritme deze groepen kan detecteren.

Scatter Plot van synthetische Clustering Dataset met punten gekleurd door bekende Cluster

volgende kunnen we beginnen met het bekijken van voorbeelden van clustering algoritmen toegepast op deze dataset.

Ik heb enkele minimale pogingen gedaan om elke methode af te stemmen op de dataset.

kunt u een beter resultaat krijgen voor een van de algoritmen?
Laat het me weten in de commentaren hieronder.,

Affiniteitvoortplanting

Affiniteitvoortplanting betekent het vinden van een verzameling voorbeelden die de gegevens het best samenvatten.

we bedachten een methode genaamd” affinity propagation, ” die als input metingen van gelijkenis tussen paren van datapunten neemt. Real-valued berichten worden uitgewisseld tussen gegevenspunten totdat er geleidelijk een hoogwaardige reeks voorbeelden en bijbehorende clusters ontstaat

— Clustering door berichten tussen gegevenspunten door te geven, 2007.,

de techniek wordt beschreven in de paper:

  • Clustering by Passing Messages Between Data Points, 2007.

Het wordt geïmplementeerd via de Affinitpropagation klasse en de belangrijkste configuratie om af te stemmen is de “demping” ingesteld tussen 0,5 en 1, en misschien “voorkeur.”

het volledige voorbeeld wordt hieronder weergegeven.

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

in dit geval kon ik geen goed resultaat bereiken.,

scatterplot van dataset met Clusters geïdentificeerd met behulp van Affiniteitvermeerdering

Agglomeratieve Clustering

Agglomeratieve clustering omvat het samenvoegen van voorbeelden totdat het gewenste aantal clusters is bereikt.

het is een onderdeel van een bredere klasse van hiërarchische clustering methoden en u kunt meer informatie hier:

  • hiërarchische clustering, Wikipedia.,

Het wordt uitgevoerd via de Agglomeratieclustering klasse en de belangrijkste af te stemmen configuratie is de” n_clusters ” set, een schatting van het aantal clusters in de gegevens, bijvoorbeeld 2.

het volledige voorbeeld wordt hieronder weergegeven.

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

In dit geval wordt een redelijke groepering gevonden.,

verstrooiing van dataset met Clusters geïdentificeerd met behulp van Agglomeratieve Clustering

BERKENCLUSTERING

BERKENCLUSTERING (berken is een afkorting voor evenwichtige iteratieve reductie en Clustering met behulp van
hiërarchieën) omvat het construeren van een boomstructuur van waaruit clustercentroïden zijn gewonnen.

berken groepeert incrementeel en dynamisch inkomende multidimensionale metrische gegevenspunten om te proberen de beste kwaliteit clustering te produceren met de beschikbare bronnen (d.w.z.,, beschikbaar geheugen en tijdsbeperkingen).

— BIRCH: An efficient data clustering method for large databases, 1996.

de techniek wordt beschreven in het artikel:

  • BIRCH: An efficient data clustering method for large databases, 1996.

Het wordt geïmplementeerd via de Birch-klasse en de belangrijkste configuratie om af te stemmen is de “threshold” en “n_clusters” hyperparameters, waarvan de laatste een schatting geeft van het aantal clusters.

het volledige voorbeeld wordt hieronder weergegeven.,

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

In dit geval wordt een uitstekende groepering gevonden.,

verstrooiing van dataset met Clusters geïdentificeerd met BERKENCLUSTERING

DBSCAN

Dbscan Clustering (waarbij DBSCAN een afkorting is voor Density-Based Spatial Clustering van toepassingen met ruis) omvat het vinden van gebieden met een hoge dichtheid in het domein en het uitbreiden van die gebieden van de functie ruimte om hen heen als clusters.

… We presenteren het nieuwe clustering algoritme DBSCAN gebaseerd op een dichtheid-gebaseerde notie van clusters die is ontworpen om clusters van willekeurige vorm te ontdekken., DBSCAN vereist slechts één invoerparameter en ondersteunt de gebruiker bij het bepalen van een geschikte waarde voor het

— een op dichtheid gebaseerd algoritme voor het ontdekken van Clusters in grote ruimtelijke Databases met ruis, 1996.

de techniek wordt beschreven in het artikel:

  • A Density-Based Algorithm for Discovery Clusters in Large Spatial Databases with Noise, 1996.

Het wordt geïmplementeerd via de dbscan-klasse en de belangrijkste configuratie om af te stemmen is de “eps” en “min_samples” hyperparameters.

het volledige voorbeeld wordt hieronder weergegeven.,

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

in dit geval wordt een redelijke groepering gevonden, hoewel meer afstemming vereist is.,

scatterplot van dataset met Clusters geïdentificeerd met DBSCAN Clustering

K-Means

K-Means Clustering kan het meest bekende clustering algoritme zijn en omvat het toewijzen van voorbeelden aan clusters in een poging om de variantie binnen elk cluster te minimaliseren.

het belangrijkste doel van dit document is om een proces te beschrijven voor het verdelen van een N-dimensionale populatie in k-Verzamelingen op basis van een steekproef., Het proces, dat ‘k-means’ wordt genoemd, lijkt partities te geven die redelijk efficiënt zijn in de zin van variantie binnen de klasse.

– Some methods for classification and analysis of multivariate observations, 1967.

de techniek wordt hier beschreven:

  • k-betekent clustering, Wikipedia.

Het wordt geà mplementeerd via de klasse KMeans en de belangrijkste configuratie om af te stemmen is de “n_clusters” hyperparameter ingesteld op het Geschatte aantal clusters in de data.

het volledige voorbeeld wordt hieronder weergegeven.,

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

in dit geval wordt een redelijke groepering gevonden, hoewel de ongelijke gelijke variantie in elke dimensie de methode minder geschikt maakt voor deze dataset.,

Scatter Plot van de Dataset Met Clusters Geïdentificeerd met Behulp van K-Means Clustering

Mini-Batch K-Middelen

Mini-Batch K-Middelen is een gewijzigde versie van k-betekent dat updates van het cluster middelpunten met behulp van mini-batches van monsters in plaats van de hele dataset, die kan het sneller voor grote datasets, en misschien wel meer robuuste statistische ruis.

… We stellen het gebruik van mini-batch optimalisatie voor k-means clustering voor., Dit vermindert rekenkosten met ordes van grootte in vergelijking met de klassieke batch algoritme terwijl het leveren van Aanzienlijk betere oplossingen dan online stochastische gradiënt afdaling.

— Web-Scale K-Means Clustering, 2010.

de techniek wordt beschreven in het artikel:

  • Web-Scale K-Means Clustering, 2010.

Het wordt geà mplementeerd via de minibatchkmeans klasse en de belangrijkste configuratie om af te stemmen is de “n_clusters” hyperparameter ingesteld op het Geschatte aantal clusters in de data.

het volledige voorbeeld wordt hieronder weergegeven.,

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

In dit geval wordt een resultaat gevonden dat gelijkwaardig is aan het standaard K-means algoritme.

scatterplot van dataset met Clusters geïdentificeerd met behulp van Mini-Batch K-Means Clustering

gemiddelde Shift

gemiddelde shift clustering omvat het vinden en aanpassen van centroids op basis van de dichtheid van voorbeelden in de functieruimte.,

we bewijzen voor discrete gegevens de convergentie van een recursieve gemiddelde shift procedure naar het dichtstbijzijnde stationaire punt van de onderliggende dichtheidsfunctie en dus zijn nut bij het detecteren van de modi van de dichtheid.

— Mean Shift: a robuust approach towards feature space analysis, 2002.

de techniek wordt beschreven in het artikel:

  • Mean Shift: A robuust approach towards feature space analysis, 2002.

Het wordt geà mplementeerd via de meanshift klasse en de belangrijkste configuratie om af te stemmen is de “bandbreedte” hyperparameter.,

het volledige voorbeeld wordt hieronder weergegeven.

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

In dit geval wordt een redelijke reeks clusters in de gegevens gevonden.,

scatterplot van dataset met Clusters geïdentificeerd met behulp van gemiddelde Shift Clustering

optica

optica clustering (waarbij optica een afkorting is voor het ordenen van punten om de Clustering structuur te identificeren) is een gewijzigde versie van DBSCAN die hierboven wordt beschreven.

We introduceren een nieuw algoritme voor clusteranalyse dat niet expliciet een clustering van een dataset produceert; maar in plaats daarvan een vergrote volgorde van de database creëert die de op dichtheid gebaseerde clustering structuur vertegenwoordigt., Deze clusterorde bevat informatie die gelijkwaardig is aan de dichtheidsgebaseerde clusterschappen die overeenkomen met een breed scala aan parameterinstellingen.

— OPTICS: ordering points to identify the clustering structure, 1999.

de techniek wordt beschreven in het artikel:

  • OPTICS: ordering points to identify the clustering structure, 1999.

Het wordt geïmplementeerd via de optiek klasse en de belangrijkste configuratie om af te stemmen is de “eps” en “min_samples” hyperparameters.

het volledige voorbeeld wordt hieronder weergegeven.,

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

In dit geval kon ik geen redelijk resultaat bereiken met deze dataset.

scatterplot van dataset met Clusters geïdentificeerd met behulp van optica Clustering

spectrale Clustering

spectrale Clustering is een algemene klasse van clustering methoden, getrokken uit lineaire algebra.,

een veelbelovend alternatief dat onlangs op een aantal gebieden is ontstaan, is het gebruik van spectrale methoden voor clustering. Hier gebruikt men de bovenste eigenvectoren van een matrix afgeleid van de afstand tussen punten.

– on Spectral Clustering: Analysis and an algorithm, 2002.

de techniek wordt beschreven in de paper:

  • On Spectral Clustering: Analysis and an algorithm, 2002.,

Het wordt geïmplementeerd via de klasse SpectralClustering en de Hoofdklasse spectrale Clustering is een algemene klasse van clustering methoden, getrokken uit lineaire algebra. om af te stemmen is de “n_clusters” hyperparameter gebruikt om het Geschatte aantal clusters in de gegevens te specificeren.

het volledige voorbeeld wordt hieronder weergegeven.

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

in dit geval werden redelijke clusters gevonden.,

scatterplot van dataset met Clusters geïdentificeerd met behulp van Spectra Clustering Clustering

Gaussiaans Mengselmodel

een Gaussiaans mengselmodel vat een multivariate kansdichtheidsfunctie samen met een mengsel van Gaussiaanse kansverdelingen, zoals de naam al doet vermoeden.

voor meer informatie over het model, zie:

  • Mengselmodel, Wikipedia.,

Het wordt geà mplementeerd via de klasse GaussianMixture en de belangrijkste configuratie om af te stemmen is de “n_clusters” hyperparameter die wordt gebruikt om het Geschatte aantal clusters in de gegevens te specificeren.

het volledige voorbeeld wordt hieronder weergegeven.

het uitvoeren van het voorbeeld past bij het model op de trainingsdataset en voorspelt een cluster voor elk voorbeeld in de dataset. Een scatter plot wordt dan gemaakt met punten gekleurd door hun toegewezen cluster.

in dit geval kunnen we zien dat de clusters perfect werden geïdentificeerd., Dit is niet verwonderlijk gezien het feit dat de dataset werd gegenereerd als een mengsel van Gaussianen.

scatterplot van dataset met Clusters geïdentificeerd met behulp van Gaussiaanse Mengselclustering

verder lezen

Deze sectie biedt meer bronnen over het onderwerp als u dieper wilt gaan.

Papers

  • Clustering door het doorgeven van berichten tussen gegevenspunten, 2007.
  • BIRCH: An efficient data clustering method for large databases, 1996.,
  • A Density-Based algoritme for Discovery Clusters in Large Spatial Databases with Noise, 1996.Some methods for classification and analysis of multivariate observations, 1967.
  • Web-Scale K-Means Clustering, 2010.
  • Mean Shift: a robuust approach towards feature space analysis, 2002.
  • On Spectral Clustering: Analysis and an algorithm, 2002.

Books

  • Data Mining: Practical Machine Learning Tools and Techniques, 2016.
  • the Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.,
  • Machine Learning: A Probabilistic Perspective, 2012.

API ‘ s

  • Clustering, sikit-learn API.
  • sklearn.gegevensreeks.make_classificatie API.
  • sklearn.cluster API.

artikelen

  • clusteranalyse, Wikipedia.
  • hiërarchische clustering, Wikipedia.
  • k – betekent clustering, Wikipedia.
  • Mengselmodel, Wikipedia.

samenvatting

In deze tutorial ontdekte u hoe u top clustering algoritmen in python kunt aanpassen en gebruiken.,

specifiek leerde u:

  • Clustering is een probleem zonder toezicht bij het vinden van natuurlijke groepen in de functieruimte van invoergegevens.
  • er zijn veel verschillende clustering algoritmen, en geen enkele beste methode voor alle datasets.
  • Hoe top clustering algoritmen in Python te implementeren, passen en gebruiken met de sikit-learn machine learning library.

heeft u vragen?
Stel uw vragen in de opmerkingen hieronder en Ik zal mijn best doen om te beantwoorden.

Ontdek snel Machine Learning in Python!,

Ontwikkel uw eigen modellen in minuten

…met slechts een paar regels scikit-leer code

leer hoe in mijn nieuwe Ebook:
Machine Learning Mastery With Python

zelfstudie tutorials en end-to-end projecten zoals:
Het laden van gegevens, visualisatie, modellering, tuning, en nog veel meer omvat…

breng tot Slot Machine Learning naar
uw eigen projecten

sla de academici over. Alleen Resultaten.

bekijk wat er in

Tweet Share Share

Articles

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *