Sist Oppdatert August 20, 2020
Clustering eller cluster-analyse er en unsupervised learning problem.
Det er ofte brukt som en data-analyse teknikk for å oppdage interessante mønstre i data, for eksempel grupper av kunder basert på deres atferd.
Det er mange clustering algoritmer for å velge fra, og ingen enkelt beste clustering algoritmen for alle tilfeller. I stedet er det en god idé å utforske en rekke clustering algoritmer og ulike konfigurasjoner for hver algoritme.,
I denne opplæringen, vil du oppdage hvordan å tilpasse og bruke toppen clustering algoritmer i python.
Etter å ha fullført denne opplæringen, vil du vite:
- Clustering er en ukontrollert problemet med å finne naturlige grupper i funksjonen plass av input-data.
- Det er mange forskjellige clustering algoritmer og ingen enkel beste metoden for alle datasett.
- Hvordan å implementere, tilpasse, og bruker top clustering algoritmer i Python med scikit-lære machine learning library.,
en Kick-start på prosjektet med min nye bok Maskin-Læring, Mestring Med Python, inkludert trinnvise veiledninger og Python kildekoden filer for alle eksempler.
La oss komme i gang.
Clustering Algoritmer Med Python
Foto av Lars Plougmann, noen rettigheter er reservert.,/div>
Veiledning Oversikt
Denne opplæringen er delt inn i tre deler; de er:
- Clustering
- Clustering Algoritmer
- Eksempler på Klynger Algoritmer
- Bibliotek Installasjon
- Clustering Dataset
- Affinitet Forplantning
- Agglomerative Clustering
- BJØRK
- DBSCAN
- K-Means
- Mini-Batch-K-Means
- Mean Shift
- OPTIKK
- Spektral Clustering
- Gaussian Blanding Modell
Clustering
Cluster-analyse, eller clustering, er en uten tilsyn maskinlæring oppgave.,
Det innebærer automatisk oppdage naturlig gruppering i data. I motsetning til veiledet læring (som prediktiv modellering), clustering algoritmer bare tolke input data og finne naturlige grupper eller klynger i funksjonen plass.
Clustering teknikker gjelde når det er ingen klasse til å bli spådd, men snarere når forekomstene er å være delt inn i naturlige grupper.
— Side 141, Data Mining: Praktisk Machine Learning Verktøy og Teknikker, 2016.,
En klynge er ofte et område av tetthet i funksjonen plass der eksempler fra domenet (observasjoner eller rader med data) er nærmere klynge enn andre grupper. Klyngen kan ha en center (centroid) som er et eksempel eller et punkt har plass og kan ha en grense eller grad.
Disse klynger antagelig reflekterer noen mekanisme på jobb i domenet som tilfeller er trukket, vil en mekanisme som forårsaker noen tilfeller til å ha et sterkere likhetstrekk med hverandre enn de gjør til de gjenværende forekomster.,
— Sider 141-142, Data Mining: Praktisk Machine Learning Verktøy og Teknikker, 2016.
Klynger kan være nyttig som en data-analyse aktivitet for å lære mer om problemet domene, såkalte mønster discovery eller knowledge discovery.
For eksempel slik:
- fylogenetisk tre kan betraktes som resultatet av en manuell clustering analyse.
- for å Skille normal data fra utenforliggende eller avvik som kan betraktes som et clustering problem.,
- for å Skille klynger basert på deres naturlige atferd er en gruppering problem, referert til som markeds segemntering.
Clustering kan også være nyttig som en type funksjon engineering, der eksisterende og nye eksempler kan være kartlagt og merket som tilhørende en av de identifiserte klynger i data.
Evaluering av identifiserte klynger er subjektive og kan kreve et domene ekspert, selv om mange clustering-spesifikke kvantitative tiltak ikke eksisterer., Vanligvis, clustering algoritmer er sammenlignet faglig på syntetiske datasett med pre-definerte klynger, som en algoritme er forventet å oppdage.
Clustering er en unsupervised learning teknikk, så er det vanskelig å vurdere kvaliteten på produksjonen av en gitt metode.
— Side 534, Maskin-Læring: En Probabilistisk Perspektiv, 2012.
Clustering Algoritmer
Det er mange typer av klynger algoritmer.,
Mange algoritmer bruk likhet eller avstand tiltak mellom eksempler i funksjonen plass i et forsøk på å oppdage tett regioner av observasjoner. Som sådan, er det ofte lurt å skala data før du bruker clustering algoritmer.
Sentral for alle mål på cluster-analyse er forestillingen om graden av likhet (eller ulikhet) mellom den enkelte objekter som blir gruppert. En gruppering metoden forsøker å gruppere objekter basert på definisjon av likhet som leveres til det.,
— Side 502, Elementer av Statistiske Læring: Data Mining, Analyse og Prediksjon, 2016.
Noen clustering algoritmer kreve at du angir eller gjette på antall klynger å oppdage i data, mens andre krever spesifikasjon av noen minimumsavstand mellom observasjoner som eksempler kan betraktes som «nær» eller «koblet til.,»
Som sådan, cluster-analyse er en iterativ prosess hvor subjektiv vurdering av de identifiserte klynger føres tilbake til endringer i algoritmen konfigurasjon til en ønskelig eller riktig resultat er oppnådd.
scikit-lære-biblioteket gir en suite av ulike klynger algoritmer for å velge fra.,
En liste over 10 av de mer populære algoritmer er som følger:
- Affinitet Forplantning
- Agglomerative Clustering
- BJØRK
- DBSCAN
- K-Means
- Mini-Batch-K-Means
- Mean Shift
- OPTIKK
- Spektral Clustering
- Blanding av Gaussians
Hver algoritme gir en annen tilnærming til utfordringen med å oppdage naturlige grupper i data.
Det er ingen beste clustering algoritmen, og ingen enkel måte å finne den beste algoritmen for dine data uten ved kontrollerte eksperimenter.,
I denne veiledningen vil vi gjennomgå hvordan du bruker hver av disse 10 populære clustering algoritmer fra scikit-lære bibliotek.
eksemplene vil gi grunnlag for å copy-paste eksempler og teste metoder på egne data.
Vi vil ikke dykke inn i teorien bak hvordan algoritmene arbeid eller sammenligne dem direkte. Et godt utgangspunkt om dette emnet, se:
- Clustering, scikit-lære API.
La oss dykke i.,
Eksempler på Klynger Algoritmer
I dette avsnittet vil vi gjennomgå hvordan å bruke 10 populære clustering algoritmer i scikit-lære.
Dette inkluderer et eksempel på montering på modell og et eksempel på visualisering av resultatet.
eksemplene er designet for å kopiere og lime inn i ditt eget prosjekt og anvende metoder til dine egne data.
Bibliotek Installasjon
Først, la oss installere biblioteket.
ikke hopp over dette trinnet som du vil trenge for å sikre at du har den nyeste versjonen installert.,>
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.,
Kjør følgende skript for å skrive ut library versjon nummeret.,
1
2
3
|
# sjekk scikit-lære-versjon
importer sklearn
print(sklearn.,__versjon__)
|
å Kjøre eksempel, bør du se følgende versjonsnummer eller høyere.
1
|
0.22.,1
|
Clustering Dataset
Vi vil bruke make_classification () – funksjonen for å lage en test binære klassifisering dataset.
datasettet vil ha 1 000 eksemplarer, med to input funksjoner og en klynge per klasse. Klynger er visuelt tydelig i to dimensjoner, slik at vi kan plotte dataene med et punktplott og farge punktene i plottet av den tildelte klyngen. Dette vil bidra til å se, minst på test problemet, hvor «godt» klynger ble identifisert.,
klynger i denne testen problem er basert på en multivariat Gaussian, og ikke alle clustering algoritmer vil være effektiv på å identifisere disse typer av klynger. Som sådan, er resultatene i denne opplæringen bør ikke brukes som basis for å sammenligne metoder generelt.
Et eksempel på å skape og oppsummering av syntetiske clustering dataset som er oppført nedenfor.
å Kjøre eksempel skaper syntetiske clustering dataset, oppretter deretter et punktplott av input data med poeng farget av klasse etikett (idealiserte klynger).,
Vi kan tydelig se to distinkte grupper av data i to dimensjoner og håper ville være at en automatisk clustering algoritmen kan oppdage disse grupperinger.
spredningsplott av Syntetiske Clustering Dataset Med Poeng Farget av Kjent Klynge
Neste, kan vi begynne å se på eksempler på klynger av algoritmer brukt til dette datasettet.
jeg har laget noen minimal forsøk på å finjustere hver metode for å datasettet.
Kan du få et bedre resultat for en av algoritmer?
Gi meg beskjed i kommentarfeltet nedenfor.,
Affinitet Forplantning
Affinitet Forplantning innebærer å finne et sett av eksempler som best oppsummere data.
Vi utviklet en metode som kalles «affinitet forplantning,» som tar som input tiltak av likheten mellom par av data poeng. Real-verdsatt meldinger som utveksles mellom datapunkter til en høy kvalitet satt av forbilder og tilsvarende klynger gradvis kjem til syne
— Clustering ved å sende Meldinger Mellom datapunkter, 2007.,
teknikken er beskrevet i papir:
- Clustering ved å sende Meldinger Mellom datapunkter, 2007.
Det er gjennomført via AffinityPropagation klasse og de viktigste konfigurasjonen for å tune er «demping» som ligger mellom 0,5 og 1, og kanskje «preferanse.»
hele eksempel er listet nedenfor.
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, jeg kunne ikke oppnå et godt resultat.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av Affinitet Forplantning
Agglomerative Clustering
Agglomerative clustering innebærer sammenslåing eksempler til ønsket antall klynger er oppnådd.
Det er en del av en større klasse av hierarkisk klynging metoder, og du kan lese mer her:
- Hierarkisk klynging, Wikipedia.,
Det er gjennomført via AgglomerativeClustering klasse og de viktigste konfigurasjonen for å tune er «n_clusters» set, en beregning av antall klynger i data, f.eks. 2.
hele eksempel er listet nedenfor.
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, en rimelig gruppering er funnet.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av Agglomerative Clustering
BJØRK
BJØRK Clustering (BJØRK er en forkortelse for Balansert Iterativ å Redusere og Klynger ved hjelp av
Hierarkier) innebærer bygging av et tre som struktur fra hvor klyngen centroids er trukket ut.
BJØRK trinnvis og dynamisk klynger innkommende multi-dimensjonal beregning av data poeng å prøve å produsere den beste kvaliteten clustering med tilgjengelige ressurser (jeg. e., tilgjengelig minne og tidsbegrensninger).
— BJØRK: En effektiv data clustering metode for store databaser, 1996.
teknikken er beskrevet i papir:
- BIRCH: En effektiv data clustering metode for store databaser, 1996.
Det er gjennomført via Bjørk klasse og de viktigste konfigurasjonen for å tune er «terskel» og «n_clusters» hyperparameters, sistnevnte som gir en beregning av antall klynger.
hele eksempel er listet nedenfor.,
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, som er et utmerket gruppering er funnet.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av BJØRK Clustering
DBSCAN
DBSCAN Clustering (der DBSCAN er en forkortelse for Tetthet-Basert Romlig Gruppering av Programmer med Støy) innebærer å finne high-density områder i domenet og utvide de områdene av funksjonen plass rundt dem som klynger.
… vi presentere den nye clustering algoritmen DBSCAN å stole på en tetthet-basert oppfatningen av klynger som er designet for å oppdage klynger av vilkårlig form., DBSCAN krever bare en input-parameter og støtter brukeren i å bestemme en passende verdi for det
— En Tetthet-Basert Algoritme for å Oppdage Klynger i Store Romlige Databaser med Støy, 1996.
teknikken er beskrevet i papir:
- En Tetthet-Basert Algoritme for å Oppdage Klynger i Store Romlige Databaser med Støy, 1996.
Det er gjennomført via DBSCAN klasse og de viktigste konfigurasjonen for å tune er «eps» og «min_samples» hyperparameters.
hele eksempel er listet nedenfor.,
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, en rimelig gruppering er funnet, selv om de er mer tuning er nødvendig.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av DBSCAN Clustering
K-Means
K-Betyr Clustering kan være den mest kjente clustering algoritmen og innebærer tildeling av eksempler til klynger i et forsøk på å minimalisere avvik innenfor hver klynge.
Det viktigste formålet med denne utredningen er å beskrive en prosess for å partisjonere en N-dimensjonal befolkningen i k innstiller på grunnlag av en prøve., Prosessen, som kalles » k-means,’ ser ut til å gi partisjoner som er rimelig effektive i den forstand av innen-klasse varians.
— Noen metoder for klassifisering og analyse av flervariable observasjoner, 1967.
teknikken er beskrevet her:
- k-betyr clustering Wikipedia.
Det er gjennomført via KMeans klasse og de viktigste konfigurasjonen for å tune er «n_clusters» hyperparameter satt til beregnet antall klynger i dataene.
hele eksempel er listet nedenfor.,
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, en rimelig gruppering er funnet, selv om den skjeve lik varians i hver dimensjon gjør metoden mindre egnet til dette datasettet.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av K-Betyr Clustering
Mini-Batch-K-Means
Mini-Batch-K-Midler er en modifisert versjon av k-means som gjør oppdateringer i klyngen centroids ved hjelp av mini-grupper av prøver snarere enn hele datasettet, noe som kan gjøre det raskere for store datasett, og kanskje mer robust til statistisk støy.
… vi foreslår bruk av mini-batch optimalisering for k-betyr clustering., Dette reduserer beregning kostnader ved størrelsesordener i forhold til den klassiske batch algoritme samtidig gir betydelig bedre løsninger enn online stokastisk gradient avstamning.
— Web-Skala K-Betyr Clustering, 2010.
teknikken er beskrevet i papir:
- Web-Skala K-Betyr Clustering, 2010.
Det er gjennomført via MiniBatchKMeans klasse og de viktigste konfigurasjonen for å tune er «n_clusters» hyperparameter satt til beregnet antall klynger i dataene.
hele eksempel er listet nedenfor.,
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, et resultat tilsvarende standard k-means-algoritmen er funnet.
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av Mini-Batch-K-Betyr Clustering
Mean Shift
Mean shift clustering innebærer å finne og tilpasse centroids basert på tetthet av eksempler i funksjonen plass.,
Vi bevise for diskrete data konvergens av rekursive mean shift-prosedyren til nærmeste stasjonære punktet i underliggende tetthet funksjon og dermed nytteverdien i å oppdage det moduser av tetthet.
— Mean Shift: En robust tilnærming mot har plass analyse, 2002.
teknikken er beskrevet i papir:
- Mean Shift: En robust tilnærming mot har plass analyse, 2002.
Det er gjennomført via MeanShift klasse og de viktigste konfigurasjonen for å tune er «båndbredde» hyperparameter.,
hele eksempel er listet nedenfor.
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, en rimelig sett av klynger er funnet i dataene.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av Mean Shift Clustering
OPTIKK
OPTIKK clustering (der OPTIKK er kort for å Bestille Poeng Å Identifisere Klynger Struktur) er en modifisert versjon av DBSCAN beskrevet ovenfor.
Vi introdusere en ny algoritme for formålet med cluster-analyse som ikke produserer en gruppering av data eksplisitt angitt, men i stedet skaper en utvidet bestilling av databasen representerer tetthet-based clustering struktur., Denne klyngen-bestilling inneholder informasjon som er tilsvarende tetthet-basert clusterings tilsvarende for et bredt spekter av parameter innstillinger.
— OPTIKK: bestilling poeng å identifisere klynger struktur, 1999.
teknikken er beskrevet i papir:
- OPTIKK: bestilling poeng å identifisere klynger struktur, 1999.
Det er gjennomført via OPTIKK klasse og de viktigste konfigurasjonen for å tune er «eps» og «min_samples» hyperparameters.
hele eksempel er listet nedenfor.,
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, jeg kunne ikke oppnå et rimelig resultat på dette datasettet.
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av OPTIKK Clustering
Spektral Clustering
Spektral Clustering er en generell klasse av klynging metoder, trukket fra lineær algebra.,
Et lovende alternativ som nylig dukket opp i en rekke felt, er å bruke spektral metoder for klynging. Her bruker man den øverste eigenvectors av en matrise er avledet fra avstanden mellom punktene.
— På Spektral Clustering: Analyse og en algoritme, 2002.
teknikken er beskrevet i papir:
- På Spektral Clustering: Analyse og en algoritme, 2002.,
Det er gjennomført via SpectralClustering klasse, og den viktigste Spektral Clustering er en generell klasse av klynging metoder, trukket fra lineær algebra. for å tune er «n_clusters» hyperparameter brukes til å angi beregnet antall klynger i dataene.
hele eksempel er listet nedenfor.
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, rimelig klynger ble funnet.,
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av Spektra Clustering Clustering
Gaussian Blanding Modell
En Gaussisk blanding modellen oppsummerer en multivariat sannsynlighetstetthetsfunksjonen med en blanding av Gaussiske sannsynlighetsfordelinger som navnet antyder.
For mer om modellen, se:
- Blandingen modell, Wikipedia.,
Det er gjennomført via GaussianMixture klasse og de viktigste konfigurasjonen for å tune er «n_clusters» hyperparameter brukes til å angi beregnet antall klynger i dataene.
hele eksempel er listet nedenfor.
å Kjøre eksempel passer modellen på trening datasettet og spår en klynge for hvert eksempel i datasettet. Et punktplott er da opprettet med poeng farget av sine tildelte klyngen.
I dette tilfellet, kan vi se at klyngene ble identifisert perfekt., Dette er ikke overraskende gitt at datasettet ble generert som en blanding av Gaussians.
spredningsplott av Dataset Med Klynger Identifisert ved Hjelp av Gauss Blanding Clustering
Mer å Lese
Dette avsnittet gir mer ressurser på emnet dersom du er ute etter å gå dypere.
Papirer
- Clustering ved å sende Meldinger Mellom datapunkter, 2007.
- BIRCH: En effektiv data clustering metode for store databaser, 1996.,
- En Tetthet-Basert Algoritme for å Oppdage Klynger i Store Romlige Databaser med Støy, 1996.
- Noen metoder for klassifisering og analyse av flervariable observasjoner, 1967.
- Web-Skala K-Betyr Clustering, 2010.
- Mean Shift: En robust tilnærming mot har plass analyse, 2002.
- På Spektral Clustering: Analyse og en algoritme, 2002.
Bøker
- Data Mining: Praktisk Machine Learning Verktøy og Teknikker, 2016.
- Elementer av Statistiske Læring: Data Mining, Analyse og Prediksjon, 2016.,
- Maskin Læring: En Probabilistisk Perspektiv, 2012.
Api
- Clustering, scikit-lære API.
- sklearn.datasett.make_classification API.
- sklearn.klyngen API.
Artikler
- Cluster analyse, Wikipedia.
- Hierarkisk klynging, Wikipedia.
- k-betyr clustering Wikipedia.
- Blandingen modell, Wikipedia.
Oppsummering
I denne opplæringen, oppdaget hvordan å tilpasse og bruke toppen clustering algoritmer i python.,
Spesifikt, du lært:
- Clustering er en ukontrollert problemet med å finne naturlige grupper i funksjonen plass av input-data.
- Det er mange forskjellige clustering, algoritmer, og ingen enkelt beste metoden for alle datasett.
- Hvordan å implementere, tilpasse, og bruker top clustering algoritmer i Python med scikit-lære machine learning library.
har du spørsmål?
Stille dine spørsmål i kommentarfeltet under, og jeg vil gjøre mitt beste for å svare.
– >
Oppdag Rask Maskin Læring i Python!,
Utvikle Egne Modeller i Minutter
…med bare noen få linjer med scikit-lær deg koden
finn ut hvordan i min nye Bok:
Maskinen Læring, Mestring Med Python
Dekker selvstudium tutorials og ende-til-ende prosjekter som:
Lasting av data, visualisering, modellering, tuning, og mye mer…
til Slutt Bringe maskinlæring Til
Dine Egne Prosjekter
Hoppe over Akademikere. Bare Resultater.
Se Hva som er Inni