DBSCAN
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 11. december 2021; verifikation kræver
1 redigering .
Tæthedsbaseret rumlig clustering af applikationer med støj ( DBSCAN ) er en dataklyngealgoritme foreslået af Maritin Ester, Hans-Peter Kriegel, Jörg Sander og Xiaowei Su i 1996 [1] . Dette er en tæthedsbaseret klyngealgoritme - givet et sæt af punkter i et eller andet rum, samler algoritmen punkter, der er tæt adskilte (punkter med mange tætte naboer ), og markerer punkter, der er ensomme i områder med lav tæthed (nærmeste hvis naboer er langt væk). DBSCAN er en af de mest brugte klyngealgoritmer og er den hyppigst nævnte i den videnskabelige litteratur [2] .
I 2014 modtog algoritmen prisen "tidstestet" (en pris givet til algoritmer, der har fået betydelig opmærksomhed i teori og praksis) ved den førende konference om data mining, KDD [3] .
Tidlige versioner
I 1972 havde Robert F. Ling allerede publiceret en artikel med titlen The Theory and Construction of k-Clusters [4] i The Computer Journal med en lignende algoritme med et estimat af beregningsmæssig kompleksitet [4] . DBSCAN har worst-case kompleksitet og formulering af DBSCAN i databaseorienterede termer af rækkeforespørgsler
[ clear ] tillader fremskyndelse af indeks. Algoritmerne adskiller sig i deres håndtering af kantpunkter.
Forberedelse
Overvej et sæt punkter i nogle rum, der kræver klyngedannelse. For at udføre DBSCAN-klyngning opdeles punkter i kernepunkter , der kan nås med punkttæthed , og outliers som følger:
- Et punkt p er et hovedpunkt, hvis mindst minPts af punkter er i en afstand, der ikke overstiger ( er den maksimale naboradius fra p ) til det (inklusive selve punktet p ). Disse punkter siges at være tilgængelige direkte fra s .


- Et punkt q er direkte tilgængeligt fra p , hvis q er i en afstand, der ikke er større end p fra p , og p skal være basispunktet.

- Et punkt A q kan nås fra p , hvis der er en sti med og , hvor hvert punkt kan nås direkte fra (alle punkter på stien skal være primære undtagen q ).





- Alle punkter, der ikke kan nås fra kernepunkter, betragtes som afvigere .
Nu, hvis p er et kernepunkt, danner det en klynge sammen med alle punkter (kerne eller ikke-kerne), der kan nås fra det punkt. Hver klynge indeholder mindst ét hovedpunkt. Ikke-essentielle punkter kan være en del af en klynge, men de danner dens "kant", fordi de ikke kan bruges til at nå andre punkter.
Reachability er ikke en symmetrisk relation, fordi der pr. definition ikke kan nås noget punkt fra et ikke-kernepunkt, uanset afstand (så et ikke-kernepunkt kan nås, men intet kan nås fra det). Derfor er det yderligere begreb om tilslutning nødvendig for den formelle definition af området af klynger fundet af DBSCAN-algoritmen. To punkter p og q er tæthedsrelaterede, hvis der er et punkt o , således at både p og q kan nås fra o . Tæthedsforbindelsen er symmetrisk.
Så opfylder klyngen to egenskaber:
- Alle punkter i klyngen er parvis forbundet i tæthed.
- Hvis et punkt er tæthed, der kan nås fra et punkt i klyngen, hører det også til klyngen.
Algoritme
Den originale forespørgselsbaserede algoritme
DBSCAN kræver, at to parametre angives: og det mindste antal punkter, der skal danne et tæt område [5] (minPts). Algoritmen starter fra et vilkårligt punkt, som endnu ikke er blevet set. Et -nabolag til punktet vælges, og hvis det indeholder nok punkter, dannes en klynge, ellers markeres punktet som støj. Bemærk, at dette punkt senere kan findes i -nabolaget til et andet punkt og inkluderet i en klynge.



Hvis et punkt findes som et tæt punkt i en klynge, er dets -kvarter også en del af denne klynge. Derfor føjes alle punkter, der findes i -nabolaget til dette punkt, til klyngen. Denne proces fortsætter, indtil der findes en tæthedsforbundet klynge. Derefter vælges og behandles et nyt ubesøgt punkt, hvilket fører til opdagelsen af den næste klynge eller støj.


DBSCAN kan bruges med enhver afstandsfunktion [1] [6] (såvel som en lighedsfunktion eller en boolsk tilstand) [7] . Afstandsfunktionen (dist) kan derfor betragtes som en ekstra parameter.
Algoritmen kan skrives i pseudokode som følger [6] :
DBSCAN(DB, distFunc, eps, minPts) {
C=0 /* Cluster count */
for hvert punkt P i databasen DB {
if label(P) ≠ undefined then continue /* Punktet blev slået op i den indre sløjfe */
Neighbors N=RangeQuery(DB, distFunc, P, eps) / * Find naboer */
hvis |N|< minPts derefter { /* Density check */
label(P)=Støj /* Marker som støj */
fortsæt
}
C=C + 1 /* næste klyngemærke */
etiket(P)=C /* Etiketstartpunkt */
Frøsæt S=N \ {P} /* Naboer, der skal udvides */
for hvert punkt Q i S { /* Behandl hvert frøpunkt */
hvis label(Q)=Støj så label(Q)=C /* Skift labelstøj til kant */
hvis label(Q) ≠ udefineret så fortsæt /* Er blevet set */
label(Q)= C /* Marker nabo */
Naboer N=RangeQuery(DB, distFunc, Q, eps) /* Find naboer */
hvis |N|≥ minPts så { /* Tjek tæthed */
S=S ∪ N /* Tilføj naboer til sæt rudimentære punkter */
}
}
}
}
hvor RangeQuery kan implementeres ved hjælp af et databaseindeks for bedre ydeevne, eller lineært langsomt opslag kan bruges:
RangeQuery(DB, distFunc, Q, ) {

Naboer=tom liste
for hvert punkt P i databasen DB { /* Scan alle punkter i databasen */
hvis så { /* Beregn afstand og tjek epsilon */
Neighbors=Naboer ∪ {P} /* Tilføj til resultat */

}
}
tilbagevenden Naboer
}
Abstrakt algoritme
DBSCAN-algoritmen kan dekomponeres i følgende trin [6] :
- Vi finder punkter i nærheden af hvert punkt og vælger hovedpunkterne med mere end minPts naboer.

- Vi finder de forbundne komponenter af hovedpunkterne på grafen over naboer og ignorerer alle ikke-grundlæggende punkter.
- Tildel hver ikke-primær nærmeste klynge, hvis klyngen er -nabo, ellers betragte punktet som støj.

Den naive implementering af algoritmen kræver at huske naboerne i trin 1, så det kræver betydelig hukommelse. Den originale DBSCAN-algoritme kræver ikke dette ved at udføre disse trin et punkt ad gangen.
Sværhedsgrad
DBSCAN besøger hvert databasepunkt, måske flere gange (f.eks. som kandidater til andre klynger). Ud fra driftserfaring er tidskompleksiteten dog hovedsageligt styret af antallet af regionQuery-forespørgsler. DBSCAN udfører præcis én sådan forespørgsel for hvert punkt, og hvis der bruges en indeksstruktur, der fuldender naboskabsforespørgslen i O(log n ) tid, er den samlede gennemsnitlige tidskompleksitet O( n log n ) (hvis parameteren er valgt fornuftigt, så er det sådan, at kun O(log n ) point i gennemsnit returneres). Uden brug af en accelererende indeksstruktur eller på degenererede data (f.eks. når alle punkter er mindre end ), forbliver den værst tænkelige køretid . Afstandsmatrixen af størrelse kan beregnes for at undgå genberegning af afstandene, men dette kræver hukommelse , mens en DBSCAN-implementering uden en afstandsmatrix kun kræver O( n ) -hukommelse.





Fordele
- DBSCAN kræver ikke specificering af antallet af klynger i dataene a priori , i modsætning til k-means- metoden .
- DBSCAN kan finde vilkårlige formede klynger. Den kan endda finde klynger helt omgivet af (men ikke forbundet med) andre klynger. Takket være MinPts-parameteren reduceres den såkaldte effekt af én forbindelse (forbindelsen af forskellige klynger med en tynd linje af prikker).
- DBSCAN har begrebet støj og er tolerant over for outliers .
- DBSCAN kræver kun to parametre og er for det meste ufølsom over for rækkefølgen af punkterne i databasen . (Punkter, der er på grænsen til to forskellige klynger, kan dog ende i en anden klynge, hvis rækkefølgen af punkterne ændres, og tildelingen af klynger er unik op til isomorfi.)
- DBSCAN er designet til brug med databaser, der kan fremskynde forespørgsler over en række værdier, såsom med et R*-træ .
- MinPts og parametre kan indstilles af eksperter på det pågældende område, hvis dataene er godt forstået.

Ulemper
- DBSCAN er ikke helt entydig - kantpunkter, der kan nås fra mere end én klynge, kan tilhøre enhver af disse klynger, afhængig af den rækkefølge, punkterne ses i. For de fleste datasæt forekommer disse situationer sjældent og har ringe effekt på resultatet af clustering [6] - hovedpunkterne og støjen behandles unikt af DBSCAN. DBSCAN* [8] er en variant, der behandler kantpunkter som støj og dermed opnår et helt entydigt resultat, samt en mere konsistent statistisk fortolkning af tæthedsforbundne komponenter.
- Kvaliteten af DBSCAN afhænger af afstandsmålingen, der bruges i regionQuery(P,ε)-funktionen. Den mest almindeligt anvendte afstandsmetrik er den euklidiske metrik . Især til clustering af højdimensionelle data , kan denne metrik være næsten ubrugelig på grund af den såkaldte "curse of dimensionality" , som gør det vanskeligt at finde en passende værdi . Denne effekt er imidlertid til stede i enhver anden algoritme baseret på euklidisk afstand.

- DBSCAN kan ikke klynge datasæt med store tæthedsforskelle godt, fordi det ikke kan vælge en kombination, der er acceptabel for alle klynger [9] .

- Hvis data og skala ikke er godt forstået, kan det være svært at vælge en meningsfuld afstandstærskel .

Se afsnittet nedenfor om udvidelser for algoritmiske ændringer, der omhandler disse problemer.
Parameter Estimation
Enhver datamining-opgave har et parameterproblem. Enhver parameter har en specifik effekt på algoritmen. DBSCAN-algoritmen har brug for parametre og minPts . Parametrene skal defineres af brugeren. Ideelt set bestemmes værdien af det problem, der løses (f.eks. fysiske afstande), og minPts bestemmer derefter den mindste ønskede klyngestørrelse [5] .


- MinPts : Som erfaringen viser, kan minimum minPts- værdien fås fra datasættets D- dimension som . En lav værdi af minPts =1 giver ikke mening, da ethvert punkt vil være en klynge. For resultatet vil være det samme som hierarkisk klyngedannelse med enkelt forbindelsesmetrik med dendrogrambeskæring i højden . Derfor bør minPts være mindst 3. Men for støjende datasæt er større værdier normalt bedre og producerer mere signifikante klynger. Erfaring tyder på, at en værdi på [7] kan bruges , men det kan være nødvendigt at vælge en større værdi for store datasæt, for støjende data eller for data indeholdende mange dubletter [6] .




: Værdien kan vælges ved hjælp af k-afstandsgrafen , hvor man plotter afstanden til ( ) nærmeste nabo i rækkefølge fra største til mindste [6] . Gode værdier er dem, hvor grafen har en "bøjning" [1] [7] [6] - hvis den vælges for lille, vil de fleste data ikke blive grupperet, og for store værdier vil klyngerne smelte sammen og de fleste af objekterne vil være i samme klynge. Normalt er små værdier at foretrække [6] og erfaring viser, at kun en lille del af punkter bør være med denne afstand fra hinanden. Alternativt kan et OPTICS plot bruges til at vælge [6] , men så kan OPTICS algoritmen selv bruges til clustering.






- Afstandsfunktion: Valget af afstandsfunktionen hænger stærkt sammen med valget og har stor betydning for resultaterne. Det er normalt nødvendigt først at bestemme rimelige mål for ligheden af et datasæt, før du vælger . Der er ingen estimater for denne parameter, men afstandsfunktioner bør vælges i henhold til datasættet. For eksempel for geografiske data er stor cirkelafstand ofte et godt valg.


OPTICS kan opfattes som en generalisering af DBSCAN, hvor parameteren erstattes af den maksimale værdi, der har størst indflydelse på ydeevnen. MinPts bliver så den mindste klyngestørrelse. Selvom algoritmen er væsentligt enklere i parameterudvælgelsesdomænet end DBSCAN, er dens resultater sværere at bruge, da den normalt producerer hierarkisk klyngedannelse i stedet for den simple partitionering, som DBSCAN producerer.

For nylig reviderede en af forfatterne af DBSCAN DBSCAN og OPTICS og udgav en revideret version af den hierarkiske DBSCAN (HDBSCAN*) [8] , som ikke længere har begrebet kantpunkter. Kun hovedpunkterne danner en klynge.
Udvidelser
Generaliseret DBSCAN (GDBSCAN) [7] [10] er en generalisering af de samme forfattere for vilkårlige booleske udtryk "naboskab" og "densitet". Parametrene og minPts fjernes fra algoritmen og overføres til booleske forhold. På polygonale data kan "naboskab" f.eks. være et hvilket som helst skæringspunkt mellem polygoner, mens tæthedsbetingelsen bruger areal i stedet for træktælling.

Forskellige udvidelser til DBSCAN-algoritmen er blevet foreslået, herunder metoder til parallelisering, parameterestimering og understøttelse af tvivlsomme data. Den grundlæggende idé er blevet udvidet til hierarkisk klyngedannelse ved hjælp af OPTICS- algoritmen . DBSCAN-algoritmen er også blevet brugt som en del af subspace clustering-algoritmer som PreDeCon og SUBCLU . HDBSCAN [8] er en hierarkisk version af DBSCAN, som også er hurtigere end OPTICS, og hvor en flad partition kan udtrækkes fra hierarkiet, bestående af de mest synlige klynger [11] .
Tilgængelighed
Forskellige implementeringer af algoritmen blev fundet med en enorm forskel i ydeevne, den hurtigste fuldførte arbejdet med testdata på 1,4 sekunder, og den langsomste brugte 13803 sekunder [12] . Forskellen kan tilskrives kvaliteten af implementeringen, forskellen i sprog og compilere og brugen af indekser til at fremskynde tingene.
- Apache Commons Math indeholder en Java- implementering af en algoritme, der kører i kvadratisk tid.
- ELKI giver en implementering af DBSCAN, GDBSCAN og andre muligheder. Denne implementering kan bruge forskellige indeksstrukturer til at give subquadratisk kørselstid. Vilkårlige afstandsfunktioner og vilkårlige datatyper kan bruges i denne implementering, og acceleration kan opnås ved optimering på lavt niveau og ved brug af specielle metoder på små datasæt.
- PostGIS inkluderer ST_ClusterDBSCAN, en todimensionel implementering af DBSCAN, der bruger et R-træ som et indeks. Enhver geometritype er understøttet, såsom punkt, linje, polygon osv.
- I R -sproget indeholder fpc- pakken DBSCAN med understøttelse af en vilkårlig afstandsfunktion via afstandsmatricer. Implementeringen understøtter dog ikke indekser (og har derfor kvadratisk køretid og tidskompleksitet), og det må siges, at implementeringen er langsom på grund af brugen af R-fortolkeren En hurtigere C++-implementering ved brug af kd-træer (kun for euklidiske afstande) er i R-pakken dbscan .
- scikit-learn inkluderer en Python - implementering af DBSCANtil vilkårlige Minkowski-metrikker , som kan fremskyndes med kd-træer og kugletræer , men som bruger kvadratisk hukommelse i værste fald. Tilføjelsespakken til scikit-learn giver en implementering af HDBSCAN*-algoritmen.
- Pyclustering -biblioteket inkluderer en Python- og C++-implementering af DBSCAN kun til euklidisk afstand, samt en implementering af OPTICS-algoritmen.
- SPMF inkluderer en implementering af DBSCAN-algoritmen med understøttelse af kd-træ kun for euklidisk afstand.
- Weka indeholder (som en valgfri pakke i den seneste version) en grundlæggende DBSCAN-implementering, der kræver lineær hukommelse og kører i kvadratisk tid.
Noter
- ↑ 1 2 3 Ester, Kriegel, Sander, Xu, 1996 , s. 226-231.
- ↑ Microsoft Academic Search, 2010 .
- ↑ Test of Time Award, 2014 .
- ↑ 12 Ling , 1972 , s. 326-332.
- ↑ 1 2 Mens minPts intuitivt er den mindste klyngestørrelse, kan DBSCAN i nogle tilfælde producere mindre klynger ( Schubert, Sander, Ester, Kriegel, Xu 2017 ). En DBSCAN-klynge består af mindst ét kernepunkt . Da andre punkter kan være kantpunkter på mere end én klynge, er der ingen garanti for, at mindst minPts af punkter er inkluderet i hver klynge.
- ↑ 1 2 3 4 5 6 7 8 9 Schubert, Sander, Ester, Kriegel, Xu, 2017 , s. 19:1–19:21.
- ↑ 1 2 3 4 Sander, Ester, Kriegel, Xu, 1998 , s. 169-194.
- ↑ 1 2 3 Campello, Moulavi, Zimek, Sander, 2015 , s. 1-51.
- ↑ Kriegel, Kröger, Sander, Zimek, 2011 , s. 231-240.
- ↑ Sander, 1998 .
- ↑ Campello, Moulavi, Zimek, Sander, 2013 , s. 344.
- ↑ Kriegel, Schubert, Zimek, 2016 , s. 341.
Litteratur
- Martin Ester, Hans-Peter Kriegel, Jörg Sander, Xiaowei Xu. En tæthedsbaseret algoritme til at opdage klynger i store rumlige databaser med støj // Proceedings of the Second International Conference on Knowledge Discovery and Data Mining (KDD-96) / Evangelos Simoudis, Jiawei Han, Usama M. Fayyad. - AAAI Press , 1996. - S. 226-231 . — ISBN 1-57735-004-9 .
- Jörg Sander, Martin Ester, Hans-Peter Kriegel, Xiaowei Xu. Tæthedsbaseret klyngedannelse i rumlige databaser: Algoritmen GDBSCAN og dens applikationer // Data mining og videnopdagelse. - Berlin: Springer-Verlag , 1998. - Vol. 2 , nr. 2 . — S. 169–194 . - doi : 10.1023/A:1009745219419 .
- Microsoft Academic Search . - 2010. Arkiveret 21. april 2010. Mest citerede datamining-artikler fra Microsofts akademiske søgning; DBSCAN står på 24 positioner.
- 2014 SIGKDD Test of Time Award . — ACM SIGKDD, 2014.
- Ling RF Om teorien og konstruktionen af k-klynger // Computer Journal. - 1972. - T. 15 , no. 4 . — ISSN 0010-4620 . - doi : 10.1093/comjnl/15.4.326 .
- Erich Schubert, Jörg Sander, Martin Ester, Hans Peter Kriegel, Xiaowei Xu. DBSCAN Revisited, Revisited: Hvorfor og hvordan du (stadig) bør bruge DBSCAN // ACM Trans. Database Syst.. - 2017. - Juli ( vol. 42 , udgave 3 ). — ISSN 0362-5915 . - doi : 10.1145/3068335 .
- Hans-Peter Kriegel, Peer Kröger, Jörg Sander, Arthur Zimek. Tæthedsbaseret Clustering // WIREs Data Mining og Knowledge Discovery. - 2011. - Vol. 1 , udgave. 3 . — S. 231–240 . - doi : 10.1002/widm.30 .
- Ricardo JGB Campello, Davoud Moulavi, Arthur Zimek, Jörg Sander. Hierarkiske densitetsestimater for dataklynger, visualisering og afvigende detektion // ACM-transaktioner på videnopdagelse fra data. - 2015. - T. 10 , no. 1 . — ISSN 1556-4681 . - doi : 10.1145/2733381 .
- George Sander. Generaliseret densitetsbaseret klynge til rumlig datamining. - Herbert Utz Verlag, 1998. - ISBN 3-89675-469-6 .
- Campello RJGB, Moulavi D., Zimek A., Sander J. En ramme for semi-overvåget og uovervåget optimal udvinding af klynger fra hierarkier // Data Mining and Knowledge Discovery. - 2013. - T. 27 , no. 3 . - doi : 10.1007/s10618-013-0311-4 .
- Hans-Peter Kriegel, Erich Schubert, Arthur Zimek. Runtime-evalueringens (sorte) kunst: Sammenligner vi algoritmer eller implementeringer? // Viden og informationssystemer. - 2016. - T. 52 , no. 2 . - S. 341 . — ISSN 0219-1377 . - doi : 10.1007/s10115-016-1004-2 .