Tweet Share Share

Ultima actualizare pe 20 August 2020

Clustering sau analiza cluster este o problemă de învățare nesupravegheată.acesta este adesea folosit ca o tehnică de analiză a datelor pentru a descoperi modele interesante în date, cum ar fi grupuri de clienți bazate pe comportamentul lor.

există mulți algoritmi de grupare din care să alegeți și niciun algoritm de grupare cel mai bun pentru toate cazurile. În schimb, este o idee bună să explorați o serie de algoritmi de grupare și configurații diferite pentru fiecare algoritm.,

în acest tutorial, veți descoperi cum să potriviți și să utilizați algoritmi de grupare de top în python.

după finalizarea acestui tutorial, veți ști:

  • Clustering este o problemă nesupravegheată de a găsi grupuri naturale în spațiul de caracteristici al datelor de intrare.
  • există mulți algoritmi de grupare diferiți și nici o metodă unică cea mai bună pentru toate seturile de date.
  • cum să implementați, să potriviți și să utilizați algoritmi de grupare de top în Python cu biblioteca de învățare automată scikit-learn.,

începeți proiectul cu noua mea carte Machine Learning Mastery cu Python, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.

Să începem.

Algoritmi de Clustering Cu Python
Photo by Lars Plougmann, unele drepturi rezervate.,/div>

Tutorial imagine de Ansamblu

Acest tutorial este împărțit în trei părți; acestea sunt:

  1. Clustering
  2. Algoritmi de Clustering
  3. Exemple de Algoritmi de Clustering
    1. Biblioteca de Instalare
    2. Grupare de Date
    3. Afinitate de Propagare
    4. Clustering Aglomerativ
    5. MESTEACAN
    6. DBSCAN
    7. K-means
    8. Mini-Lot K-means
    9. Înseamnă Schimbare
    10. OPTICA
    11. Spectrale Clustering
    12. Gaussian Mixture Model

Clustering

analiza Cluster, sau clustering, este un nesupravegheat mașină de sarcină de învățare.,aceasta implică descoperirea automată a grupării naturale în date. Spre deosebire de învățarea supravegheată (cum ar fi modelarea predictivă), algoritmii de grupare interpretează doar datele de intrare și găsesc grupuri sau clustere naturale în spațiul caracteristicilor.

tehnicile de grupare se aplică atunci când nu există o clasă care să fie prezisă, ci mai degrabă atunci când instanțele trebuie împărțite în grupuri naturale.

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

un cluster este adesea o zonă de densitate în spațiul caracteristică în cazul în care exemple din domeniu (observații sau rânduri de date) sunt mai aproape de cluster decât alte clustere. Clusterul poate avea un centru (centroid) , care este un eșantion sau un spațiu caracteristică Punct și poate avea o limită sau măsură.

Aceste grupuri probabil reflecta un mecanism la locul de muncă în domeniu de la care cazuri sunt trase, un mecanism care provoacă unele cazuri să suporte o puternică asemănare între ele decât în celelalte cazuri.,

— Pages 141-142, Data Mining: practice Machine Learning Tools and Techniques, 2016.

gruparea poate fi utilă ca activitate de analiză a datelor pentru a afla mai multe despre domeniul problemei, așa-numita descoperire de model sau descoperire de cunoștințe.

de exemplu:

  • arborele filogenetic ar putea fi considerat rezultatul unei analize manuale de grupare.
  • separarea datelor normale de valori aberante sau anomalii poate fi considerată o problemă de grupare.,
  • separarea clusterelor pe baza comportamentului lor natural este o problemă de grupare, denumită segmentare a pieței.Clustering poate fi, de asemenea, util ca un tip de inginerie caracteristică, în cazul în care exemplele existente și noi pot fi mapate și etichetate ca aparținând unuia dintre clusterele identificate în datele.evaluarea clusterelor identificate este subiectivă și poate necesita un expert în domeniu, deși există multe măsuri cantitative specifice clusterelor., De obicei, algoritmii de grupare sunt comparați Academic pe seturi de date sintetice cu clustere predefinite, pe care un algoritm este de așteptat să le descopere.

    Clustering este o tehnică de învățare nesupravegheată, deci este greu de evaluat calitatea producției oricărei metode date.

    — Page 534, Machine Learning: a Probabilistic Perspective, 2012.

    algoritmi de grupare

    există mai multe tipuri de algoritmi de grupare.,mulți algoritmi folosesc măsuri de similitudine sau distanță între exemple în spațiul de caracteristici într-un efort de a descoperi regiuni dense de observații. Ca atare, este adesea o bună practică să scalați datele înainte de a utiliza algoritmi de grupare.

    Central pentru toate obiectivele analizei cluster este noțiunea de gradul de similitudine (sau disimilaritate) între obiectele individuale fiind grupate. O metodă de grupare încearcă să grupeze obiectele pe baza definiției similitudinii furnizate.,

    — Page 502, the Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.unii algoritmi de grupare necesită să specificați sau să ghiciți numărul de clustere pe care să le descoperiți în date, în timp ce alții necesită specificarea unei distanțe minime între observații în care exemplele pot fi considerate „apropiate” sau „conectate”.,”

    ca atare, analiza cluster este un proces iterativ în cazul în care evaluarea subiectivă a clusterelor identificate este alimentat înapoi în modificări la configurația algoritmului până când se obține un rezultat dorit sau adecvat.

    biblioteca scikit-learn oferă o suită de algoritmi de grupare diferite pentru a alege de la.,

    O lista cu 10 dintre cele mai populare algoritmi este după cum urmează:

    • Afinitate de Propagare
    • Clustering Aglomerativ
    • MESTEACAN
    • DBSCAN
    • K-means
    • Mini-Lot K-means
    • Înseamnă Schimbare
    • OPTICA
    • Spectrale Clustering
    • Amestec de distribuții gaussiene

    Fiecare algoritm oferă o abordare diferită la provocarea de a descoperi naturale în grupuri de date.nu există cel mai bun algoritm de grupare și nici o modalitate ușoară de a găsi cel mai bun algoritm pentru datele dvs. fără a utiliza experimente controlate.,

    în acest tutorial, vom examina modul de utilizare a fiecăruia dintre acești 10 algoritmi populari de grupare din biblioteca scikit-learn.

    exemplele vor oferi baza pentru a copia-lipi exemplele și a testa metodele pe propriile date.nu ne vom arunca cu capul în teoria din spatele modului în care funcționează algoritmii sau le vom compara direct. Pentru un bun punct de plecare pe această temă, consultați:

    • Clustering, scikit-learn API.

    să ne scufundăm.,

    Exemple de algoritmi de grupare

    În această secțiune, vom examina modul de utilizare a 10 algoritmi de grupare populare în scikit-learn.aceasta include un exemplu de montare a modelului și un exemplu de vizualizare a rezultatului.

    exemplele sunt concepute pentru tine de a copy-paste în propriul proiect și se aplică metodele la propriile date.

    instalarea bibliotecii

    Mai întâi, să instalăm biblioteca.

    nu săriți peste acest pas, deoarece va trebui să vă asigurați că aveți cea mai recentă versiune instalată.,>

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

rulați următorul script pentru a imprima numărul versiunii bibliotecii.,

1
2
3

# verifica scikit-aflați versiune
import sklearn
print(sklearn.,__ version__)

rularea exemplu, ar trebui să vedeți următorul număr de versiune sau mai mare.

1
0.22.,1

Grupare de Date

Vom folosi make_classification() funcție pentru a crea un test binar de clasificare a setului de date.

setul de date va avea 1.000 de exemple, cu două caracteristici de intrare și un cluster pe clasă. Clusterele sunt evidente din punct de vedere vizual în două dimensiuni, astfel încât să putem trasa datele cu un complot scatter și să colorăm punctele din complot de către clusterul atribuit. Acest lucru vă va ajuta să vedeți, cel puțin pe problema testului, cât de „bine” au fost identificate clusterele.,clusterele din această problemă de testare se bazează pe un Gaussian multivariat și nu toți algoritmii de grupare vor fi eficienți în identificarea acestor tipuri de clustere. Ca atare, rezultatele din acest tutorial nu ar trebui utilizate ca bază pentru compararea metodelor în general.

un exemplu de creare și rezumare a setului de date de grupare sintetică este prezentat mai jos.

rularea exemplului creează setul de date de grupare sintetică, apoi creează o diagramă scatter a datelor de intrare cu puncte colorate după eticheta clasei (clustere idealizate).,putem vedea clar două grupuri distincte de date în două dimensiuni și speranța ar fi că un algoritm automat de grupare poate detecta aceste grupări.

Scatter Plot Sintetice Grupare de Date Cu Puncte Colorate de Cunoscut Cluster

Apoi, putem începe să privim exemple de algoritmi de clustering aplicat pentru acest set de date.

am făcut câteva încercări minime de a regla fiecare metodă la setul de date.

puteți obține un rezultat mai bun pentru unul dintre algoritmi?
Lasă-mă să știu în comentariile de mai jos.,

propagarea afinității

propagarea afinității implică găsirea unui set de exemplare care să rezume cel mai bine datele.

am conceput o metodă numită” propagare afinitate”, care ia ca măsuri de intrare de similitudine între perechi de puncte de date. Real-evaluate mesajele sunt schimbate între punctele de date până la o înaltă calitate set de exemplare și corespunzătoare clustere apare treptat

— Clustering prin Trecerea Mesajelor Între Punctele de Date, 2007.,

tehnica este descrisă în lucrare:

  • Clustering by Passing Messages Between Data Points, 2007.

acesta este implementat prin clasa AffinityPropagation și configurația principală pentru a regla este” amortizare „setat între 0,5 și 1, și, probabil,” preferință.”

exemplul complet este prezentat mai jos.

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, nu am putut obține un rezultat bun.,

Scatter Plot de Date Cu Grupuri Identificate prin Afinitate de Propagare

Clustering Aglomerativ

clustering Aglomerativ implică fuziunea exemple până la numărul dorit de clustere se realizează.

face parte dintr-o clasă mai largă de metode de grupare ierarhică și puteți afla mai multe aici:

  • grupare ierarhică, Wikipedia.,

Acesta este implementat prin intermediul AgglomerativeClustering clasă și de configurare principal pentru a regla este „n_clusters” set, o estimare a numărului de clustere în baza de date, de exemplu, 2.

exemplul complet este prezentat mai jos.

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, se găsește o grupare rezonabilă.,

Scatter Plot de Date Cu Clustere Identificate cu Ajutorul Clustering Aglomerativ

MESTEACAN

MESTEACAN Clustering (MESTEACAN este scurt, regim Iterativ Reducerea și Clustering
Ierarhii) implică construirea unui arbore structura de cluster care centrele de greutate sunt extrase.BIRCH grupează incremental și dinamic punctele de date metrice multidimensionale primite pentru a încerca să producă cea mai bună calitate clustering cu resursele disponibile (adică. ,, constrângeri de memorie și de timp disponibile).

— BIRCH: An efficient data clustering method for large databases, 1996.tehnica este descrisă în lucrare:

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

este implementat prin clasa Birch, iar configurația principală pentru a regla este hiperparametrele” prag „și” n_clusters”, dintre care ultima oferă o estimare a numărului de clustere.

exemplul complet este prezentat mai jos.,

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, se găsește o grupare excelentă.,

Scatter Plot de Date Cu Clustere Identificate cu Ajutorul MESTEACAN Clustering

DBSCAN

DBSCAN Clustering (unde DBSCAN este scurt pentru a Densității Spațiale Gruparea de Aplicații cu Zgomot) implică găsirea de înaltă densitate domenii în domeniu și extinderea acele zone ale caracteristică de spațiu în jurul lor ca grupuri.

… va prezentam noul algoritm de clustering DBSCAN bazându-se pe o densitate bazate pe noțiunea de cluster, care este proiectat pentru a descoperi grupuri de formă arbitrară., DBSCAN necesită doar un singur parametru de intrare și sprijină utilizatorul în a determina o valoare corespunzătoare pentru asta

— O Densitate pe Baza de Algoritm pentru Descoperirea Clustere în Mari Baze de date Spațiale cu Zgomot, 1996.

tehnica este descrisă în lucrare:

  • un algoritm bazat pe densitate pentru descoperirea clusterelor în Baze de date spațiale mari cu zgomot, 1996.

este implementat prin clasa DBSCAN, iar configurația principală de reglat este hiperparametrele” eps „și” min_samples”.

exemplul complet este prezentat mai jos.,

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, se găsește o grupare rezonabilă, deși este necesară mai multă reglare.,

Scatter Plot de Date Cu Clustere Identificate cu Ajutorul DBSCAN Clustering

K-means

K-means Clustering poate fi cel mai cunoscut algoritm de clustering și implică atribuirea exemple de clustere într-un efort de a minimiza variația din cadrul fiecărui grup.

scopul principal al acestei lucrări este de a descrie un proces de partiționare a unei populații n-dimensionale în K seturi pe baza unui eșantion., Procesul, care se numește „k-means”, pare să dea partiții care sunt destul de eficiente în sensul varianței în interiorul clasei.

— unele metode de clasificare și analiză a observațiilor multivariate, 1967.tehnica este descrisă aici:

  • k-înseamnă clustering, Wikipedia.

este implementat prin clasa KMeans, iar configurația principală de reglat este hiperparametrul” n_clusters ” setat la numărul estimat de clustere din date.

exemplul complet este prezentat mai jos.,

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.

în acest caz, se găsește o grupare rezonabilă, deși varianța egală inegală în fiecare dimensiune face ca metoda să fie mai puțin potrivită pentru acest set de date.,

Scatter Plot de Date Cu Clustere Identificate Folosind K-means Clustering

Mini-Lot K-means

Mini-Lot K-means este o versiune modificată a k-means, care face actualizări de la cluster centroizi folosind mini-loturi de probe, mai degrabă decât întregul set de date, care poate face mai repede pentru seturi mari de date, și, probabil, mai robust statistice zgomot.

… propunem utilizarea de optimizare mini-lot pentru K-înseamnă clustering., Acest lucru reduce costul de calcul cu ordine de mărime în comparație cu algoritmul clasic de lot, în timp ce oferă soluții semnificativ mai bune decât coborârea gradientului stocastic online.

— Web-Scale K-înseamnă Clustering, 2010.tehnica este descrisă în lucrare:

  • Web-Scale K-Means Clustering, 2010.

este implementat prin clasa MiniBatchKMeans, iar configurația principală de reglat este hiperparametrul” n_clusters ” setat la numărul estimat de clustere din date.

exemplul complet este prezentat mai jos.,

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, se găsește un rezultat echivalent cu algoritmul standard k-means.

Scatter Plot de Date Cu Clustere Identificate cu Ajutorul Mini-Lot K-means Clustering

Mean Shift

Înseamnă schimbare gruparea implică găsirea și adaptarea centrele de greutate bazat pe densitatea de exemple în funcție de spațiu.,

Vom demonstra pentru date discrete convergența unui recursiv înseamnă schimbare procedura la cel mai apropiat punct staționar al funcției de densitate și astfel utilitatea în detectarea moduri de densitate.

— schimbare medie: o abordare robustă față de analiza spațiului caracteristicilor, 2002.

tehnica este descrisă în lucrare:

  • mean Shift: a robust approach to feature space analysis, 2002.

este implementat prin clasa MeanShift, iar configurația principală de reglat este hiperparametrul” lățime de bandă”.,

exemplul complet este prezentat mai jos.

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, în date se găsește un set rezonabil de clustere.,

Scatter Plot de Date Cu Clustere Identificate Folosind Înseamnă Schimbare Clustering

OPTICA

OPTICA clustering (în cazul în care OPTICA este scurt pentru a Comanda Puncte Pentru a Identifica Gruparea Structura) este o versiune modificată a DBSCAN descrise mai sus.

introducem un nou algoritm în scopul analizei cluster care nu produce în mod explicit o grupare a unui set de date; ci creează o ordonare augmentată a bazei de date reprezentând structura de grupare bazată pe densitate., Acest cluster-ordonare conține informații care este echivalentă cu clusterings pe bază de densitate corespunzătoare unei game largi de setări de parametri.

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

tehnica este descrisă în lucrarea:

  • optica: ordonarea punctelor pentru identificarea structurii de grupare, 1999.

este implementat prin clasa optică, iar configurația principală pentru a regla este hiperparametrii” eps” și „min_samples”.

exemplul complet este prezentat mai jos.,

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, nu am putut obține un rezultat rezonabil pe acest set de date.

Scatter Plot de Date Cu Clustere Identificate Folosind OPTICA Clustering

Spectrale Clustering

Spectrale Clustering este o clasă generală de metode de clustering, extrase din algebra liniară.,

o alternativă promițătoare care a apărut recent într-o serie de domenii este utilizarea metodelor spectrale pentru clustering. Aici, se utilizează vectorii proprii de top ai unei matrice derivate din distanța dintre puncte.

— pe Clustering Spectral: analiza și un algoritm, 2002.

tehnica este descrisă în lucrare:

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

este implementată prin clasa Spectralcluster, iar principala grupare spectrală este o clasă generală de metode de grupare, extrase din algebra liniară. pentru a regla este hiperparametrul „n_clusters” utilizat pentru a specifica numărul estimat de clustere din date.

exemplul complet este prezentat mai jos.

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, s-au găsit clustere rezonabile.,

Scatter Plot de Date Cu Clustere Identificate cu Ajutorul Spectrelor de Clustering Clustering

Gaussian Mixture Model

Un Gaussian mixture model rezumă o multivariată funcția densității de probabilitate cu un amestec de Gaussian distribuții de probabilitate după cum sugerează și numele.

Pentru mai multe detalii despre model, consultați:

  • model de amestec, Wikipedia.,

Acesta este implementat prin intermediul GaussianMixture clasă și de configurare principal pentru a regla este „n_clusters” hyperparameter folosit pentru a specifica numărul estimat de clustere în baza de date.

exemplul complet este prezentat mai jos.

rularea exemplului se potrivește modelului din setul de date de antrenament și prezice un cluster pentru fiecare exemplu din setul de date. Un complot scatter este apoi creat cu puncte colorate de Clusterul lor atribuit.în acest caz, putem vedea că grupurile au fost identificate perfect., Acest lucru nu este surprinzător, având în vedere că setul de date a fost generat ca un amestec de Gaussieni.

Scatter Plot de Date Cu Clustere Identificate Folosind Amestec de distribuții Gaussiene Clustering

bibliografie

Această secțiune oferă mai multe resurse pe tema dacă sunteți în căutarea de a merge mai adânc.

lucrări

  • Clustering prin trecerea mesajelor între punctele de date, 2007.
  • BIRCH: An efficient data clustering method for large databases, 1996.,
  • un algoritm bazat pe densitate pentru descoperirea clusterelor în Baze de date spațiale mari cu zgomot, 1996.
  • unele metode de clasificare și analiză a observațiilor multivariate, 1967.
  • Web-Scale K-înseamnă Clustering, 2010.
  • schimbare medie: o abordare robustă față de analiza spațiului de caracteristici, 2002.
  • despre Clustering Spectral: Analysis and an algorithm, 2002.

Cărți

  • Data Mining: instrumente și tehnici practice de învățare automată, 2016.
  • elementele învățării statistice: extragerea datelor, inferența și predicția, 2016.,
  • Machine Learning: o perspectivă probabilistică, 2012.

APIs

  • Clustering, scikit-aflați API.
  • sklearn.seturi de date.API make_classification.
  • sklearn.cluster API.

articole

  • analiza Cluster, Wikipedia.
  • gruparea ierarhică, Wikipedia.
  • k-înseamnă grupare, Wikipedia.
  • model de amestec, Wikipedia.

rezumat

în acest tutorial, ați descoperit cum să potriviți și să utilizați algoritmi de grupare de top în python.,mai exact, ați învățat:

  • Clustering este o problemă nesupravegheată de a găsi grupuri naturale în spațiul de caracteristici al datelor de intrare.
  • există mai mulți algoritmi de grupare diferite, și nici cea mai bună metodă unică pentru toate seturile de date.
  • cum să implementați, să potriviți și să utilizați algoritmi de grupare de top în Python cu biblioteca de învățare automată scikit-learn.

aveți întrebări?
puneți întrebările în comentariile de mai jos și voi face tot posibilul pentru a răspunde.

descoperiți învățarea automată rapidă în Python!,

dezvoltați propriile modele în câteva minute

…cu doar câteva linii de scikit-aflați cod

Invata cum în noua mea carte Electronică:
Masina de Învățare Măiestrie Cu Python

Huse auto-studiu tutoriale și end-to-end de proiecte, cum ar fi:
Încărcare de date, vizualizare, modelare, tuning, și mult mai mult…

în cele din urmă aduce Machine Learning La
propriile proiecte

sari peste academicieni. Doar Rezultate.

vezi ce este în interiorul

Tweet Share Share

Articles

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *