Tweet Share

Senast uppdaterad den 20 augusti 2020

klustring eller klusteranalys är ett oövervakat inlärningsproblem.

det används ofta som en dataanalys teknik för att upptäcka intressanta mönster i data, såsom grupper av kunder baserat på deras beteende.

det finns många klustringsalgoritmer att välja mellan och ingen enda bästa klustringsalgoritm för alla fall. Istället är det en bra idé att utforska en rad klustringsalgoritmer och olika konfigurationer för varje algoritm.,

i den här handledningen kommer du att upptäcka hur du passar och använder topp klustringsalgoritmer i python.

Efter att ha slutfört den här handledningen kommer du att veta:

  • Clustering är ett oövervakat problem att hitta naturliga grupper i funktionsutrymmet för inmatningsdata.
  • Det finns många olika kluster algoritmer och ingen enda bästa metoden för alla datauppsättningar.
  • hur man implementerar, passar och använder topp klustringsalgoritmer i Python med scikit-learn machine learning library.,

Kick-starta ditt projekt med min nya bok maskininlärning behärskning med Python, inklusive steg-för-steg tutorials och Python källkod filer för alla exempel.

låt oss komma igång.

kluster algoritmer med Python
foto av Lars Plougmann, vissa rättigheter reserverade.,handledning Översikt

denna handledning är uppdelad i tre delar; de är:

  1. klustring
  2. klustringsalgoritmer
  3. exempel på klustringsalgoritmer
    1. Biblioteksinstallation
    2. Klustringsdataset
    3. Affinitetsförökning
    4. Agglomerativ klustring
    5. björk
    6. dbscan
    7. k-means
    8. Mini-batch k-means
    9. mean shift
    10. optik
    11. spektral klustring
    12. Gaussisk blandningsmodell

klustring

klusteranalys, eller klustring, är en oövervakad maskininlärningsuppgift.,

det innebär att automatiskt upptäcka naturlig gruppering i data. Till skillnad från övervakat lärande (som prediktiv modellering) tolkar klusteringalgoritmer endast inmatningsdata och hittar naturliga grupper eller kluster i funktionsutrymme.

Klustertekniker gäller när det inte finns någon klass att förutspå, utan snarare när instanserna ska delas in i naturliga grupper.

— sidan 141, Data Mining: praktiska verktyg och tekniker för maskininlärning, 2016.,

ett kluster är ofta ett täthetsområde i funktionsutrymmet där exempel från domänen (observationer eller rader av data) ligger närmare klustret än andra kluster. Klustret kan ha ETT center (centroid) som är ett prov eller en punkt funktion utrymme och kan ha en gräns eller omfattning.

dessa kluster återspeglar förmodligen någon mekanism på jobbet i domänen från vilken instanser dras, en mekanism som gör att vissa instanser har en starkare likhet med varandra än de gör med de återstående instanserna.,

— sidor 141-142, Data Mining: praktiska verktyg och tekniker för maskininlärning, 2016.

klustring kan vara till hjälp som en dataanalysaktivitet för att lära sig mer om problemdomänen, så kallad mönsterupptäckt eller kunskapsupptäckt.

till exempel:

  • det fylogenetiska trädet kan betraktas som resultatet av en manuell klusteranalys.
  • separering av normala data från avvikare eller anomalier kan betraktas som ett klusterproblem.,
  • att separera kluster baserat på deras naturliga beteende är ett klustringsproblem, kallat marknadssegmentering.

kluster kan också vara användbar som en typ av funktionsteknik, där befintliga och nya exempel kan mappas och märkas som tillhör en av de identifierade klustren i data.

utvärdering av identifierade kluster är subjektiv och kan kräva en domänexpert, även om det finns många klusterspecifika kvantitativa åtgärder., Vanligtvis jämförs klustringsalgoritmer akademiskt på syntetiska datauppsättningar med fördefinierade kluster, som en algoritm förväntas upptäcka.

kluster är en oövervakad inlärningsteknik, så det är svårt att utvärdera kvaliteten på produktionen av en viss metod.

— sidan 534, maskininlärning: ett probabilistiskt perspektiv, 2012.

klustringsalgoritmer

det finns många typer av klustringsalgoritmer.,

många algoritmer använder likhet eller avståndsåtgärder mellan exempel i funktionsutrymmet i ett försök att upptäcka täta observationsområden. Som sådan är det ofta bra att skala data innan du använder klusterningsalgoritmer.

centralt för alla mål för klusteranalys är begreppet graden av likhet (eller olikhet) mellan de enskilda objekten som grupperas. En klustringsmetod försöker gruppera objekten baserat på definitionen av likhet som levereras till den.,

— sidan 502, elementen i statistiskt lärande: Data Mining, Inference och Prediction, 2016.

vissa kluster algoritmer kräver att du anger eller gissar på antalet kluster att upptäcka i data, medan andra kräver specifikationen av ett visst minsta avstånd mellan observationer där exempel kan betraktas som ”nära” eller ”ansluten.,”

som sådan är klusteranalys en iterativ process där subjektiv utvärdering av de identifierade klustren matas tillbaka till ändringar i algoritmkonfigurationen tills ett önskat eller lämpligt resultat uppnås.

scikit-learn-biblioteket tillhandahåller en uppsättning olika klusterningsalgoritmer att välja mellan.,

en lista över 10 av de mer populära algoritmerna är följande:

  • Affinitetsförökning
  • Agglomerativ klustring
  • björk
  • DBSCAN
  • k-medel
  • Mini-Batch K-medel
  • Mean Shift
  • optik
  • spektral klustring
  • blandning

varje algoritm erbjuder ett annat tillvägagångssätt för utmaningen att upptäcka naturliga grupper i data.

det finns ingen bästa clustering algoritm, och inget enkelt sätt att hitta den bästa algoritmen för dina data utan att använda kontrollerade experiment.,

i den här guiden kommer vi att granska hur du använder var och en av dessa 10 populära klustringsalgoritmer från scikit-learn-biblioteket.

exemplen kommer att ligga till grund för dig att kopiera-klistra in exemplen och testa metoderna på dina egna data.

Vi kommer inte att dyka in i teorin bakom hur algoritmerna fungerar eller jämföra dem direkt. För en bra utgångspunkt i detta ämne, se:

  • klustring, scikit-learn API.

låt oss dyka in.,

exempel på Klusterningsalgoritmer

i det här avsnittet kommer vi att granska hur du använder 10 populära klusterningsalgoritmer i scikit-learn.

detta inkluderar ett exempel på att montera modellen och ett exempel på att visualisera resultatet.

exemplen är utformade för att du ska kopiera-klistra in i ditt eget projekt och tillämpa metoderna på dina egna data.

installation av bibliotek

låt oss först installera biblioteket.

hoppa inte över det här steget eftersom du måste se till att du har den senaste versionen installerad.,>

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

kör följande skript för att skriva ut versionsnumret för biblioteket.,

1
2
3

# kontrollera scikit-learn version
importera sklearn
skriv ut(sklearn.,__ version__)

kör exemplet, bör du se följande versionsnummer eller högre.

1
0.22.,1

klustring Dataset

Vi kommer att använda make_classification() funktionen för att skapa en test binär klassificeringsdataset.

datauppsättningen kommer att ha 1 000 exempel, med två inmatningsfunktioner och ett kluster per klass. Klustren är visuellt uppenbara i två dimensioner så att vi kan rita data med en scatterplot och färga punkterna i tomten av det tilldelade klustret. Detta kommer att bidra till att se, åtminstone på testproblemet, hur ”väl” klustren identifierades.,

klustren i detta testproblem är baserade på en multivariat Gaussisk, och inte alla klustringsalgoritmer kommer att vara effektiva för att identifiera dessa typer av kluster. Som sådan bör resultaten i denna handledning inte användas som grund för att jämföra metoderna i allmänhet.

ett exempel på att skapa och sammanfatta den syntetiska klusterdatauppsättningen listas nedan.

att köra exemplet skapar den syntetiska klusterdatauppsättningen och skapar sedan en scatter-plot av inmatningsdata med punkter färgade efter klassetikett (idealiserade kluster).,

Vi kan tydligt se två olika grupper av data i två dimensioner och hoppet skulle vara att en automatisk klusterningsalgoritm kan upptäcka dessa grupperingar.

Scatter Plot av syntetiska Klusterdataset med punkter färgade av kända kluster

därefter kan vi börja titta på exempel på kluster algoritmer som tillämpas på denna dataset.

Jag har gjort några minimala försök att ställa in varje metod till datauppsättningen.

kan du få ett bättre resultat för en av algoritmerna?
Låt mig veta i kommentarerna nedan.,

Affinitetsförökning

Affinitetsförökning innebär att man hittar en uppsättning exempel som bäst sammanfattar data.

vi utarbetade en metod som kallas ”affinitetsförökning”, som tar som inmatningsåtgärder för likhet mellan par av datapunkter. Verkliga värderade meddelanden utbyts mellan datapunkter tills en högkvalitativ uppsättning exempel och motsvarande kluster gradvis framträder

— kluster genom att skicka meddelanden mellan datapunkter, 2007.,

tekniken beskrivs i papperet:

  • kluster genom att skicka meddelanden mellan datapunkter, 2007.

den implementeras via AffinityPropagation klassen och huvudkonfigurationen för tune är ”dämpning” set mellan 0.5 och 1, och kanske ”preferens.”

det fullständiga exemplet listas nedan.

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet kunde jag inte uppnå ett bra resultat.,

Scatter Plot av Dataset med kluster som identifieras med hjälp av Affinitetsförökning

Agglomerativ kluster

Agglomerativ kluster innebär sammanslagning av exempel tills önskat antal kluster uppnås.

det är en del av en bredare klass av hierarkiska klustermetoder och du kan lära dig mer här:

  • hierarkisk kluster, Wikipedia.,

den implementeras via Agglomerativclustering-klassen och huvudkonfigurationen för tune är ”n_clusters” – uppsättningen, en uppskattning av antalet kluster i data, t.ex. 2.

det fullständiga exemplet listas nedan.

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i detta fall finns en rimlig gruppering.,

Scatter Plot av Dataset med kluster som identifierats med Agglomerativ kluster

björk

BJÖRKKLUSTER (björk är kort för balanserad iterativ minskning och kluster med
hierarkier) innebär att man bygger en trädstruktur från vilken klustercentroider extraheras.

björk stegvis och dynamiskt kluster inkommande flerdimensionella metriska datapunkter för att försöka producera bästa kvalitet kluster med tillgängliga resurser(dvs.,, tillgängligt minne och tidsbegränsningar).

— BJÖRK: En effektiv data klustring metod för stora databaser, 1996.

tekniken beskrivs i papperet:

  • björk: en effektiv dataklusteringsmetod för stora databaser, 1996.

den implementeras via Björkklassen och huvudkonfigurationen för tune är hyperparametrarna ”threshold” och ”n_clusters”, varav den senare ger en uppskattning av antalet kluster.

det fullständiga exemplet listas nedan.,

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet finns en utmärkt gruppering.,

Scatter Plot av Dataset med kluster som identifierats med hjälp av björk kluster

DBSCAN

DBSCAN kluster (där DBSCAN är kort för Täthetsbaserad rumslig kluster av applikationer med buller) innebär att hitta områden med hög densitet i domänen och utöka dessa områden av funktionen utrymme runt dem som kluster. – herr talman!

… Vi presenterar den nya klustringsalgoritmen DBSCAN förlitar sig på en täthetsbaserad uppfattning om kluster som är utformad för att upptäcka kluster av godtycklig form., DBSCAN kräver endast en inmatningsparameter och stöder användaren för att bestämma ett lämpligt värde för det

— en Täthetsbaserad algoritm för att upptäcka kluster i stora rumsliga databaser med brus, 1996.

tekniken beskrivs i papperet:

  • en Täthetsbaserad algoritm för att upptäcka kluster i stora rumsliga databaser med brus, 1996.

den implementeras via DBSCAN-klassen och huvudkonfigurationen för tune är hyperparametrarna ”EPS” och ”min_samples”.

det fullständiga exemplet listas nedan.,

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet finns en rimlig gruppering, även om mer inställning krävs.,

Scatter Plot av Dataset med kluster som identifierats med hjälp av DBSCAN kluster

K-Means

k-Means kluster kan vara den mest kända kluster algoritm och innebär att tilldela exempel till kluster i ett försök att minimera variansen inom varje kluster.

huvudsyftet med detta dokument är att beskriva en process för att partitionera en n-dimensionell population I k-uppsättningar på grundval av ett prov., Processen, som kallas ”k-means”, verkar ge partitioner som är rimligt effektiva i den mening som avses i klassvarians.

— vissa metoder för klassificering och analys av multivariata observationer, 1967.

tekniken beskrivs här:

  • k-betyder klustring, Wikipedia.

den implementeras via kmeans-klassen och huvudkonfigurationen för att ställa in är hyperparametern ”n_clusters” inställd på det uppskattade antalet kluster i data.

det fullständiga exemplet listas nedan.,

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet finns en rimlig gruppering, även om den ojämlika lika variansen i varje dimension gör metoden mindre anpassad till denna datauppsättning.,

Scatter Plot av Dataset med kluster som identifieras med K-Means kluster

Mini-Batch K-Means

Mini-Batch K-Means är en modifierad version av k-means som gör uppdateringar till klustercentroiderna med hjälp av mini-satser av prover snarare än hela datasetet, vilket kan göra det snabbare för stora datauppsättningar, och kanske mer robust för statistiskt buller.

… Vi föreslår användning av mini-batch optimering för K-means klustring., Detta minskar beräkningskostnaden med storleksordningar jämfört med den klassiska batchalgoritmen samtidigt som de ger betydligt bättre lösningar än Online stokastisk gradient nedstigning.

— Web-Scale K-Means Clustering, 2010.

tekniken beskrivs i papperet:

  • Web-Scale K-Means Clustering, 2010.

den implementeras via MiniBatchKMeans klassen och huvudkonfigurationen för att ställa in är ”n_clusters” hyperparameter inställd på det uppskattade antalet kluster i data.

det fullständiga exemplet listas nedan.,

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i detta fall hittas ett resultat som motsvarar k-means standardalgoritmen.

Scatter Plot av Dataset med kluster som identifieras med hjälp av Mini-Batch K-betyder klustring

Mean Shift

Mean shift clustering innebär att hitta och anpassa centroider baserat på tätheten av exempel i funktionsutrymmet.,

vi bevisar för diskreta data konvergensen av ett rekursivt medelskiftförfarande till närmaste stationära punkt för den underliggande densitetsfunktionen och därmed dess användbarhet vid detektering av densitetslägena.

— mean Shift: en robust strategi mot funktionen rymdanalys, 2002.

tekniken beskrivs i papperet:

  • Mean Shift: ett robust tillvägagångssätt mot funktionen space analysis, 2002.

den implementeras via meanshift-klassen och huvudkonfigurationen för att ställa in är hyperparametern ”bandbredd”.,

det fullständiga exemplet listas nedan.

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet finns en rimlig uppsättning kluster i data.,

Scatter Plot av Dataset med kluster identifierade med Medelskift kluster

optik

optik kluster (där optik är kort för att beställa punkter för att identifiera Klusterstrukturen) är en modifierad version av DBSCAN beskrivs ovan.

Vi introducerar en ny algoritm för klusteranalys som inte ger en klustring av en datamängd explicit; utan skapar istället en utökad beställning av databasen som representerar dess densitetsbaserade klusterstruktur., Denna klusterbeställning innehåller information som motsvarar de densitetsbaserade kluster som motsvarar ett brett spektrum av parameterinställningar.

— optik: beställningspunkter för att identifiera klusterstrukturen, 1999.

tekniken beskrivs i papperet:

  • optik: beställningspunkter för att identifiera klusterstrukturen, 1999.

den implementeras via OPTIKKLASSEN och huvudkonfigurationen för att ställa in är hyperparametrarna ”EPS” och ”min_samples”.

det fullständiga exemplet listas nedan.,

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet kunde jag inte uppnå ett rimligt resultat på den här datauppsättningen.

Scatter Plot av Dataset med kluster identifierade med optik kluster

spektral kluster

spektral kluster är en allmän klass av klustermetoder, dras från linjär algebra.,

ett lovande alternativ som nyligen har dykt upp i ett antal fält är att använda spektrala metoder för klustring. Här använder man de övre egenvektorerna av en matris som härrör från avståndet mellan punkterna.

— På Spektrala Klustring: Analys och en algoritm, 2002.

tekniken beskrivs i papperet:

  • på spektral kluster: analys och en algoritm, 2002.,

den implementeras via Spektralklusterklassen och den huvudsakliga spektrala Klusteringen är en allmän klass av klustermetoder, dragen från linjär algebra. för att ställa in är ”n_clusters” hyperparameter som används för att ange det uppskattade antalet kluster i data.

det fullständiga exemplet listas nedan.

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i detta fall hittades rimliga kluster.,

Scatter Plot av Dataset med kluster som identifieras med hjälp av spektra klustring

Gaussisk Blandningsmodell

en Gaussisk blandningsmodell sammanfattar en multivariat sannolikhetsdensitetsfunktion med en blandning av Gaussisk sannolikhetsfördelningar som namnet antyder.

För mer information om modellen, se:

  • Blandningsmodell, Wikipedia.,

den implementeras via GaussianMixture-klassen och huvudkonfigurationen för tune är ”n_clusters” hyperparameter som används för att ange det uppskattade antalet kluster i data.

det fullständiga exemplet listas nedan.

kör exemplet passar modellen på träningsdatauppsättningen och förutspår ett kluster för varje exempel i datauppsättningen. En scatter plot skapas sedan med punkter färgade av deras tilldelade kluster.

i det här fallet kan vi se att klustren identifierades perfekt., Detta är inte förvånande med tanke på att datauppsättningen genererades som en blandning av Gaussians.

Scatter Plot av Dataset med kluster identifierade med Gaussisk blandning kluster

Ytterligare läsning

det här avsnittet ger mer resurser om ämnet om du vill gå djupare.

papper

  • klustring genom att skicka meddelanden mellan datapunkter, 2007.
  • BIRCH: en effektiv dataklusteringsmetod för stora databaser, 1996.,
  • en Täthetsbaserad algoritm för att upptäcka kluster i stora rumsliga databaser med buller, 1996.
  • vissa metoder för klassificering och analys av multivariata observationer, 1967.
  • Webb-Skala K-Means Clustering, 2010.
  • Mean Shift: en robust strategi mot funktionen rymdanalys, 2002.
  • På Spektrala Klustring: Analys och en algoritm, 2002.

böcker

  • Data Mining: praktiska verktyg och tekniker för maskininlärning, 2016.
  • elementen i statistiskt lärande: Data Mining, Inference och Prediction, 2016.,
  • maskininlärning: ett probabilistiskt perspektiv, 2012.

API: er

  • klustring, scikit-learn API.
  • sklearn.datauppsättning.make_classification API.
  • sklearn.kluster API.

artiklar

  • klusteranalys, Wikipedia.
  • hierarkisk klustring, Wikipedia.
  • k-betyder klustring, Wikipedia.
  • Blandningsmodell, Wikipedia.

sammanfattning

i den här handledningen upptäckte du hur du skulle passa och använda topp klustringsalgoritmer i python.,

specifikt lärde du dig:

  • Clustering är ett oövervakat problem att hitta naturliga grupper i funktionsutrymmet för inmatningsdata.
  • Det finns många olika klusterningsalgoritmer, och ingen enda bästa metoden för alla datauppsättningar.
  • hur man implementerar, passar och använder topp klustringsalgoritmer i Python med scikit-learn machine learning library.

har du några frågor?
Ställ dina frågor i kommentarerna nedan och jag kommer att göra mitt bästa för att svara.

Upptäck snabb maskininlärning i Python!,

utveckla dina egna modeller på några minuter

…med bara några rader av scikit-learn code

lär dig hur i min nya Ebook:
maskininlärning behärskning med Python

täcker självstudier tutorials och end-to-end projekt som:
laddar data, visualisering, modellering, tuning och mycket mer…

äntligen få maskininlärning till
dina egna projekt

hoppa över akademikerna. Bara Resultat.

se vad som finns inuti

Tweet Share

Articles

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *