DBSCAN

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 11 decembrie 2021; verificarea necesită 1 editare .

Gruparea spațială bazată pe densitate a aplicațiilor cu zgomot ( DBSCAN  ) este un algoritm de grupare a datelor propus de Maritin Ester, Hans-Peter Kriegel, Jörg Sander și Xiaowei Su în 1996 [1] . Acesta este un algoritm de grupare bazat pe densitate - având în vedere un set de puncte într-un anumit spațiu, algoritmul grupează puncte care sunt strâns distanțate (puncte cu mulți vecini apropiați ), marcând ca valori aberante punctele care sunt singure în zone cu densitate scăzută. (cel mai apropiat ai cărui vecini sunt departe). DBSCAN este unul dintre algoritmii de clustering cei mai des utilizați și este cel mai frecvent menționat în literatura științifică [2] .

În 2014, algoritmul a primit premiul „time-tested” (un premiu acordat algoritmilor care au primit o atenție semnificativă în teorie și practică) la conferința de conducere privind data mining, KDD [3] .

Versiunile timpurii

În 1972, Robert F. Ling publicase deja un articol intitulat The  Theory and Construction of k-Clusters [4] în The Computer Journal cu un algoritm similar cu o estimare a complexității computaționale [4] . DBSCAN are complexitatea în cel mai rău caz și formularea DBSCAN în termeni de interogări de interval orientați către baze de date[ clear ] permite accelerarea prin index. Algoritmii diferă în ceea ce privește gestionarea punctelor de margine.

Pregătire

Luați în considerare un set de puncte dintr-un anumit spațiu care necesită grupare. Pentru a realiza gruparea DBSCAN, punctele sunt împărțite în puncte de bază , accesibile prin densitatea punctelor și valori aberante , după cum urmează:

Acum, dacă p este un punct central, atunci formează un grup împreună cu toate punctele (nucleu sau non-core) accesibile din acel punct. Fiecare grup conține cel puțin un punct principal. Punctele neesențiale pot face parte dintr-un cluster, dar formează „marginea” acestuia, deoarece nu pot fi folosite pentru a ajunge la alte puncte.

Atingerea nu este o relație simetrică deoarece, prin definiție, niciun punct nu poate fi atins dintr-un punct non-nucleu, indiferent de distanță (deci un punct non-nucleu poate fi atins, dar nu se poate ajunge la nimic din el). Prin urmare, conceptul suplimentar de conectivitate este necesar pentru definirea formală a zonei clusterelor găsite de algoritmul DBSCAN. Două puncte p și q sunt legate de densitate dacă există un punct o astfel încât atât p cât și q sunt accesibile de la o . Conectivitatea densității este simetrică.

Atunci clusterul satisface două proprietăți:

  1. Toate punctele din cluster sunt conectate perechi ca densitate.
  2. Dacă un punct are densitate accesibilă dintr-un punct din cluster, acesta aparține și clusterului.

Algoritm

Algoritmul original bazat pe interogări

DBSCAN necesită specificarea a doi parametri: și numărul minim de puncte care trebuie să formeze o regiune densă [5] (minPts). Algoritmul pornește dintr-un punct arbitrar care nu a fost încă vizualizat. Se alege o vecinătate a punctului și, dacă conține suficiente puncte, se formează un cluster, în caz contrar punctul este marcat ca zgomot. Rețineți că acest punct poate fi găsit mai târziu în vecinătatea altui punct și inclus într-un grup.

Dacă un punct este găsit ca punct dens al unui cluster, vecinătatea sa este, de asemenea, parte a acestui cluster. Prin urmare, toate punctele găsite în - vecinătatea acestui punct sunt adăugate la cluster. Acest proces continuă până când este găsit un cluster conectat la densitate. Apoi este selectat și procesat un nou punct nevizitat, ceea ce duce la descoperirea următorului cluster sau zgomot.

DBSCAN poate fi folosit cu orice funcție de distanță [1] [6] (precum o funcție de similaritate sau o condiție booleană) [7] . Funcția distanță (dist) poate fi deci considerată un parametru suplimentar.

Algoritmul poate fi scris în pseudocod după cum urmează [6] :

DBSCAN(DB, distFunc, eps, minPts) { C=0 /* Număr cluster */ pentru fiecare punct P din baza de date DB { dacă label(P) ≠ nedefinit , atunci continua /* Punctul a fost căutat în bucla interioară */ Neighbors N=RangeQuery(DB, distFunc, P, eps) / * Găsiți vecini */ if |N|< minPts then { /* Verificare densitate */ label(P)=Zgomot /* Marcați ca zgomot */ continua } C=C + 1 /* următoarea etichetă a grupului */ label(P)=C /* Etichetă punct de început */ Seed semințe S=N \ {P} /* Vecinii de extins */ pentru fiecare punct Q din S { /* Tratați fiecare punct de însămânțare */ dacă eticheta(Q)=Zgomot , atunci eticheta(Q)=C /* Schimbați eticheta Zgomot în Edge */ dacă eticheta(Q) ≠ nedefinită apoi continua /* A fost vizualizată */ eticheta(Q)= C /* Marcați vecinul */ Neighbors N=RangeQuery(DB, distFunc, Q, eps) /* Găsiți vecini */ dacă |N|≥ minPts , atunci { /* Verificați densitatea */ S=S ∪ N /* Adăugați vecini la stabiliți puncte rudimentare */ } } } }

unde RangeQuery poate fi implementat folosind un index al bazei de date pentru o performanță mai bună sau poate fi utilizată o căutare liniară lentă:

RangeQuery(DB, distFunc, Q, ) { Vecini=lista goală pentru fiecare punct P din baza de date DB { /* Scanați toate punctele din baza de date */ if then { /* Calculați distanța și verificați epsilon */ Neighbors=Vecini ∪ {P} /* Adaugă la rezultat */ } } se intoarce Vecinii }

Algoritm abstract

Algoritmul DBSCAN poate fi descompus în următorii pași [6] :

  1. Găsim puncte în vecinătatea fiecărui punct și selectăm punctele principale cu mai mult de minPts vecini.
  2. Găsim componentele conexe ale punctelor principale pe graficul vecinilor, ignorând toate punctele care nu sunt de bază.
  3. Atribuiți fiecare cluster cel mai apropiat nonprimar dacă clusterul este -neighbor, altfel considerați punctul ca zgomot.

Implementarea naivă a algoritmului necesită memorarea vecinilor în pasul 1, deci necesită memorie semnificativă. Algoritmul DBSCAN original nu necesită acest lucru, făcând acești pași câte un punct.

Dificultate

DBSCAN vizitează fiecare punct al bazei de date, poate de mai multe ori (de exemplu, ca candidați pentru alte clustere). Cu toate acestea, din experiența operațională, complexitatea timpului este guvernată în principal de numărul de interogări regionQuery. DBSCAN execută exact o astfel de interogare pentru fiecare punct, iar dacă se utilizează o structură de index care completează interogarea de vecinătate în timp O(log n ) , complexitatea generală a timpului mediu este O( n log n ) (dacă parametrul este ales în mod sensibil, atunci este astfel încât numai O(log n ) puncte sunt returnate în medie). Fără utilizarea unei structuri de index accelerat sau pe date degenerate (de exemplu, când toate punctele sunt mai mici de ), timpul de rulare în cel mai rău caz rămâne . Matricea distanțelor de dimensiune poate fi calculată pentru a evita recalcularea distanțelor, dar aceasta necesită memorie , în timp ce o implementare DBSCAN fără o matrice de distanțe necesită doar memorie O( n ) .

Beneficii

  1. DBSCAN nu necesită specificarea numărului de clustere din date a priori , spre deosebire de metoda k-means .
  2. DBSCAN poate găsi clustere de formă arbitrară. Poate găsi chiar și clustere complet înconjurate de (dar nu conectate la) alte clustere. Datorită parametrului MinPts, așa-numitul efect al unei conexiuni (conexiunea diferitelor grupuri cu o linie subțire de puncte) este redus.
  3. DBSCAN are noțiunea de zgomot și este tolerant la valori aberante .
  4. DBSCAN necesită doar doi parametri și este în mare parte insensibil la ordinea punctelor din baza de date . (Cu toate acestea, punctele care se află la granița a două grupuri diferite pot ajunge într-un alt grup dacă ordinea punctelor este schimbată, iar atribuirea clusterelor este unică până la izomorfism.)
  5. DBSCAN este conceput pentru a fi utilizat cu baze de date care pot accelera interogările pe un interval de valori, cum ar fi cu un arbore R* .
  6. MinP-urile și parametrii pot fi setați de experți în domeniul în cauză dacă datele sunt bine înțelese.

Dezavantaje

  1. DBSCAN nu este complet neechivoc - punctele de margine care pot fi atinse de la mai mult de un cluster pot aparține oricăruia dintre aceste clustere, în funcție de ordinea în care sunt vizualizate punctele. Pentru cele mai multe seturi de date, aceste situații apar rar și au un efect redus asupra rezultatului grupării [6]  - punctele principale și zgomotul sunt procesate în mod unic de DBSCAN. DBSCAN* [8] este o variantă care tratează punctele de margine ca zgomot și obține astfel un rezultat complet lipsit de ambiguitate, precum și o interpretare statistică mai consistentă a componentelor conectate la densitate.
  2. Calitatea DBSCAN depinde de măsurarea distanței utilizate în funcția regionQuery(P,ε). Cea mai des folosită metrică de distanță este metrica euclidiană . În special pentru gruparea datelor cu dimensiuni mari , această metrică poate fi aproape inutilă din cauza așa-numitului „blestem al dimensionalității” , ceea ce face dificilă găsirea unei valori adecvate . Acest efect, totuși, este prezent în orice alt algoritm bazat pe distanța euclidiană.
  3. DBSCAN nu poate grupa bine seturile de date cu diferențe mari de densitate, deoarece nu poate alege o combinație care este acceptabilă pentru toate clusterele [9] .
  4. Dacă datele și scara nu sunt bine înțelese, alegerea unui prag de distanță semnificativ poate fi dificilă.

Consultați secțiunea de mai jos despre extensii pentru modificări algoritmice care se ocupă de aceste probleme.

Estimarea parametrilor

Orice sarcină de extragere a datelor are o problemă de parametri. Orice parametru are un efect specific asupra algoritmului. Algoritmul DBSCAN are nevoie de parametri și minPts . Parametrii trebuie definiți de utilizator. În mod ideal, valoarea este determinată de problema rezolvată (de exemplu, distanțele fizice), iar minPts determină apoi dimensiunea minimă dorită a clusterului [5] .

OPTICA poate fi gândită ca o generalizare a DBSCAN în care parametrul este înlocuit cu valoarea maximă care are cel mai mare impact asupra performanței. MinPts devine apoi dimensiunea minimă a clusterului. Deși algoritmul este substanțial mai simplu în domeniul selecției parametrilor decât DBSCAN, rezultatele sale sunt mai dificil de utilizat, deoarece de obicei produce clustering ierarhic în loc de partiționarea simplă pe care o produce DBSCAN.

Recent, unul dintre autorii DBSCAN a revizuit DBSCAN și OPTICS și a publicat o versiune revizuită a DBSCAN ierarhic (HDBSCAN*) [8] , care nu mai are conceptul de puncte de margine. Doar punctele principale formează un grup.

Extensii

DBSCAN generalizat (GDBSCAN) [7] [10] este o generalizare a acelorași autori pentru expresiile booleene arbitrare „neighborhood” și „density”. Parametrii și minPts sunt eliminați din algoritm și transferați în condiții booleene. De exemplu, pe datele poligonale, „vecinătatea” poate fi orice intersecție de poligoane, în timp ce condiția de densitate folosește suprafața în loc de numărul de caracteristici.

Au fost propuse diverse extensii ale algoritmului DBSCAN, inclusiv metode de paralelizare, estimare a parametrilor și suport pentru date discutabile. Ideea de bază a fost extinsă la gruparea ierarhică prin algoritmul OPTICS . Algoritmul DBSCAN a fost folosit și ca parte a algoritmilor de grupare subspațială precum PreDeCon și SUBCLU . HDBSCAN [8] este o versiune ierarhică a DBSCAN, care este, de asemenea, mai rapidă decât OPTICS, și în care o partiție plată poate fi extrasă din ierarhie, constând din cele mai vizibile clustere [11] .

Disponibilitate

S-au găsit diverse implementări ale algoritmului cu o diferență uriașă de performanță, cel mai rapid a finalizat lucrul asupra datelor de testare în 1,4 secunde, iar cel mai lent a petrecut 13803 secunde [12] . Diferența poate fi atribuită calității implementării, diferenței de limbi și compilatoare și utilizării indicilor pentru a accelera lucrurile.

Note

  1. 1 2 3 Ester, Kriegel, Sander, Xu, 1996 , p. 226–231.
  2. Microsoft Academic Search, 2010 .
  3. Premiul Test of Time, 2014 .
  4. 12 Ling , 1972 , p. 326–332.
  5. 1 2 În timp ce minPts este intuitiv dimensiunea minimă a clusterului, în unele cazuri DBSCAN poate produce clustere mai mici ( Schubert, Sander, Ester, Kriegel, Xu 2017 ). Un cluster DBSCAN este format din cel puțin un punct central . Deoarece alte puncte pot fi puncte de margine pentru mai mult de un cluster, nu există nicio garanție că cel puțin minPți de puncte sunt incluse în fiecare cluster.
  6. 1 2 3 4 5 6 7 8 9 Schubert, Sander, Ester, Kriegel, Xu, 2017 , p. 19:1–19:21.
  7. 1 2 3 4 Sander, Ester, Kriegel, Xu, 1998 , p. 169–194.
  8. 1 2 3 Campello, Moulavi, Zimek, Sander, 2015 , p. 1–51.
  9. Kriegel, Kröger, Sander, Zimek, 2011 , p. 231–240.
  10. Sander, 1998 .
  11. Campello, Moulavi, Zimek, Sander, 2013 , p. 344.
  12. Kriegel, Schubert, Zimek, 2016 , p. 341.

Literatură