DBSCAN
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 11. prosince 2021; ověření vyžaduje
1 úpravu .
Prostorové shlukování aplikací se šumem založené na hustotě ( DBSCAN ) je datový shlukovací algoritmus navržený Maritin Ester, Hans-Peter Kriegel, Jörg Sander a Xiaowei Su v roce 1996 [1] . Toto je shlukovací algoritmus založený na hustotě – daný soubor bodů v nějakém prostoru, algoritmus shlukuje dohromady body, které jsou blízko sebe (body s mnoha blízkými sousedy ), označující jako odlehlé body, které jsou osamělé v oblastech s nízkou hustotou. (nejbližší, jehož sousedé jsou daleko). DBSCAN je jedním z nejčastěji používaných shlukovacích algoritmů a je nejčastěji zmiňován ve vědecké literatuře [2] .
V roce 2014 získal algoritmus ocenění „time-tested“ (cena udělovaná algoritmům, které získaly významnou pozornost v teorii i praxi) na přední konferenci o data miningu KDD [3] .
Rané verze
V roce 1972 již Robert F. Ling publikoval článek s názvem The Theory and Construction of k-Clusters [4] v The Computer Journal s podobným algoritmem s odhadem výpočetní složitosti [4] . DBSCAN má nejhorší případ složitosti a formulace DBSCAN v databázově orientovaných termínech dotazů na rozsah
[ clear ] umožňuje zrychlení pomocí indexu. Algoritmy se liší v zacházení s okrajovými body.
Příprava
Zvažte množinu bodů v nějakém prostoru vyžadující shlukování. Aby bylo možné provést shlukování DBSCAN, jsou body rozděleny na základní body dosažitelné podle hustoty bodů a odlehlé hodnoty následovně:
- Bod p je hlavním bodem, pokud alespoň minPts bodů jsou ve vzdálenosti nepřesahující ( je maximální poloměr okolí od p ) k němu (včetně samotného bodu p ). Tyto body jsou údajně dosažitelné přímo z p .


- Bod q je přímo dosažitelný z p , pokud q není ve vzdálenosti větší než p od p a p musí být základní bod.

- Bod A q je dosažitelný z p , pokud existuje cesta s a , kde každý bod je dosažitelný přímo z (všechny body na cestě musí být primární kromě q ).





- Všechny body nedosažitelné z hlavních bodů jsou považovány za odlehlé .
Nyní, pokud p je jádrový bod, pak tvoří shluk spolu se všemi body (jádrovými nebo nejádrovými) dosažitelnými z tohoto bodu. Každý shluk obsahuje alespoň jeden hlavní bod. Nepodstatné body mohou být součástí shluku, ale tvoří jeho „okraj“, protože se pomocí nich nelze dostat k jiným bodům.
Dosažitelnost není symetrický vztah, protože podle definice nelze dosáhnout žádného bodu z vedlejšího bodu, bez ohledu na vzdálenost (takže vedlejší bod může být dosažitelný, ale nelze z něj dosáhnout ničeho). Proto je další koncept konektivity nezbytný pro formální definici oblasti shluků nalezených algoritmem DBSCAN. Dva body p a q souvisí s hustotou, pokud existuje bod o takový, že oba body p a q jsou dosažitelné z bodu o . Hustota konektivity je symetrická.
Pak cluster splňuje dvě vlastnosti:
- Všechny body ve shluku jsou po párech spojeny v hustotě.
- Pokud je bod hustoty dosažitelný z nějakého bodu ve shluku, také do shluku patří.
Algoritmus
Původní algoritmus založený na dotazech
DBSCAN vyžaduje zadání dvou parametrů: a minimální počet bodů, které musí tvořit hustou oblast [5] (minPts). Algoritmus začíná z libovolného bodu, který ještě nebyl viděn. Vybere se -okolí bodu a pokud obsahuje dostatek bodů, vytvoří se shluk, jinak je bod označen jako šum. Všimněte si, že tento bod lze později nalézt v sousedství jiného bodu a zahrnout jej do nějakého shluku.



Pokud je bod nalezen jako hustý bod shluku, jeho sousedství je také součástí tohoto shluku. Proto jsou všechny body nalezené v -neighborhood tohoto bodu přidány do shluku. Tento proces pokračuje, dokud není nalezen shluk spojený s hustotou. Poté je vybrán a zpracován nový nenavštívený bod, což vede k objevení dalšího shluku nebo šumu.


DBSCAN lze použít s libovolnou funkcí vzdálenosti [1] [6] (stejně jako s funkcí podobnosti nebo booleovskou podmínkou) [7] . Funkci vzdálenosti (vzdálenost) lze tedy považovat za doplňkový parametr.
Algoritmus lze zapsat v pseudokódu následovně [6] :
DBSCAN(DB; distFunc; eps; minPts) {
C=0 /* Počet shluků */
pro každý bod P v databázi DB {
if label(P) ≠ undefined then continue /* Bod byl vyhledán ve vnitřní smyčce */
Neighbors N=RangeQuery(DB, distFunc, P, eps) / * Najít sousedy */
if |N|< minPts then { /* Kontrola hustoty */
label(P)=Noise /* Označit jako šum */
pokračovat
}
C=C + 1 /* další štítek shluku */
štítek(P)=C /* Počáteční bod štítku */
Seed sada S=N \ {P} /* Sousedé pro rozšíření */
pro každý bod Q v S { /* Ošetřete každý počáteční bod */
pokud štítek(Q)=Šum , pak štítek(Q)=C /* Změňte štítek Šum na okraj */
pokud štítek(Q) ≠ nedefinováno , pokračujte /* Prohlédnuto */
štítek(Q)= C /* Označ souseda */
Neighbors N=RangeQuery(DB, distFunc, Q, eps) /* Najít sousedy */
if |N|≥ minPts then { /* Kontrola hustoty */
S=S ∪ N /* Přidat sousedy do nastavit základní body */
}
}
}
}
kde RangeQuery lze implementovat pomocí databázového indexu pro lepší výkon, nebo lze použít lineární pomalé vyhledávání:
RangeQuery(DB, distFunc, Q, ) {

Sousedé=prázdný seznam
pro každý bod P v databázi DB { /* Prohledejte všechny body v databázi */
if then { /* Vypočítejte vzdálenost a zkontrolujte epsilon */
Sousedi=Sousedé ∪ {P} /* Přidat k výsledku */

}
}
vrátit sousedé
}
Abstraktní algoritmus
Algoritmus DBSCAN lze rozložit do následujících kroků [6] :
- Najdeme body v blízkosti každého bodu a vybereme hlavní body s více než minPts sousedy.

- Na grafu sousedů najdeme spojené složky hlavních bodů, ignorujeme všechny nezákladní body.
- Přiřaďte každému neprimárnímu nejbližšímu shluku, pokud je shluk -neighbor, jinak bod považujte za šum.

Naivní implementace algoritmu vyžaduje zapamatování sousedů v kroku 1, takže vyžaduje značnou paměť. Původní algoritmus DBSCAN to nevyžaduje provedením těchto kroků jeden bod po druhém.
Obtížnost
DBSCAN navštíví každý bod databáze, možná několikrát (například jako kandidáti pro jiné clustery). Z provozních zkušeností se ale časová náročnost řídí především počtem regionQuery dotazů. DBSCAN provede přesně jeden takový dotaz pro každý bod, a pokud je použita struktura indexu , která dokončí dotaz sousedství v čase O(log n ) , celková průměrná časová složitost je O( n log n ) (pokud je parametr vybrán rozumně, pak je takový, že se v průměru vrátí pouze O(log n ) bodů). Bez použití zrychlující indexové struktury nebo na zdegenerovaných datech (například když jsou všechny body menší než ), zůstává doba běhu v nejhorším případě . Vzdálenost matice velikosti lze vypočítat, aby se zabránilo přepočítávání vzdáleností, ale to vyžaduje paměť , zatímco implementace DBSCAN bez matice vzdálenosti vyžaduje pouze O( n ) paměť.





Výhody
- DBSCAN nevyžaduje specifikaci počtu clusterů v datech a priori , na rozdíl od metody k-means .
- DBSCAN dokáže najít shluky libovolného tvaru. Dokáže dokonce najít shluky zcela obklopené jinými shluky (ale nejsou s nimi spojené). Díky parametru MinPts je snížen tzv. efekt jednoho spojení (spojení různých shluků tenkou čarou teček).
- DBSCAN má pojem šumu a je tolerantní k odlehlým hodnotám .
- DBSCAN vyžaduje pouze dva parametry a většinou není citlivý na pořadí bodů v databázi . (Body, které jsou na hranici dvou různých shluků, však mohou skončit v jiném shluku, pokud se změní pořadí bodů a přiřazení shluků je jedinečné až do izomorfismu.)
- DBSCAN je navržen pro použití s databázemi, které mohou urychlit dotazy v rozsahu hodnot, jako je například strom R* .
- MinPts a parametry mohou být nastaveny odborníky v dané oblasti, pokud jsou data dobře srozumitelná.

Nevýhody
- DBSCAN není zcela jednoznačný – okrajové body, které jsou dosažitelné z více než jednoho shluku, mohou patřit do kteréhokoli z těchto shluků v závislosti na pořadí, ve kterém jsou body prohlíženy. U většiny datových sad k těmto situacím dochází jen zřídka a mají malý vliv na výsledek shlukování [6] – hlavní body a šum jsou jednoznačně zpracovány DBSCAN. DBSCAN* [8] je varianta, která zachází s okrajovými body jako s šumem a dosahuje tak zcela jednoznačného výsledku a také konzistentnější statistické interpretace komponent s hustotou propojenou.
- Kvalita DBSCAN závisí na měření vzdálenosti použité ve funkci regionQuery(P,ε). Nejčastěji používanou metrikou vzdálenosti je euklidovská metrika . Zejména pro shlukování vysokorozměrných dat může být tato metrika téměř nepoužitelná kvůli takzvanému „prokletí dimenzionality“ , což ztěžuje nalezení vhodné hodnoty . Tento efekt je však přítomen v jakémkoli jiném algoritmu založeném na euklidovské vzdálenosti.

- DBSCAN neumí dobře shlukovat datové sady s velkými rozdíly v hustotě, protože nedokáže vybrat kombinaci, která je přijatelná pro všechny clustery [9] .

- Pokud nejsou údaje a měřítko dobře pochopeny, může být obtížné zvolit smysluplný práh vzdálenosti.

Viz část o rozšířeních níže, kde jsou uvedeny algoritmické úpravy zabývající se těmito problémy.
Odhad parametru
Jakákoli úloha dolování dat má problém s parametry. Jakýkoli parametr má specifický vliv na algoritmus. Algoritmus DBSCAN potřebuje parametry a minPts . Parametry musí definovat uživatel. V ideálním případě je hodnota určena řešeným problémem (např. fyzické vzdálenosti) a minPts pak určuje minimální požadovanou velikost shluku [5] .


- MinPts : Jak ukazují zkušenosti, minimální hodnotu minPts lze získat z dimenze D datové sady jako . Nízká hodnota minPts =1 nedává smysl, protože pak bude jakýkoli bod shlukem. Výsledek bude stejný jako u hierarchického shlukování s metrikou jednoho spojení s ořezáváním dendrogramu ve výšce . Proto by minPts měly být alespoň 3. Avšak pro hlučné datové sady jsou větší hodnoty obvykle lepší a vytvářejí významnější shluky. Zkušenosti naznačují, že lze použít hodnotu [7] , ale může být nutné zvolit větší hodnotu pro velké datové sady, pro zašuměná data nebo pro data obsahující mnoho duplikátů [6] .




: Hodnotu lze vybrat pomocí grafu vzdálenosti k vynesením vzdálenosti k ( ) nejbližšímu sousedovi v pořadí od největšího k nejmenšímu [6] . Dobré hodnoty jsou ty, kde má graf „ohyb“ [1] [7] [6] – pokud je zvolen příliš malý, většina dat nebude shlukována a pro příliš velké hodnoty se shluky sloučí a většina objektů bude ve stejném shluku. Obvykle jsou preferovány malé hodnoty [6] a zkušenosti ukazují, že pouze malá část bodů by měla být v této vzdálenosti od sebe. Alternativně lze pro výběr [6] použít graf OPTIKA , ale pak lze pro shlukování použít samotný algoritmus OPTIKA.






- Funkce vzdálenosti: Volba funkce vzdálenosti silně souvisí s výběrem a má velký vliv na výsledky. Obvykle je nutné nejprve určit přiměřené míry podobnosti datového souboru před výběrem souboru . Pro tento parametr neexistují žádné odhady, ale funkce vzdálenosti by měly být zvoleny podle souboru dat. Například pro geografická data je často dobrou volbou velká kruhová vzdálenost .


OPTICS si lze představit jako zobecnění DBSCAN, ve kterém je parametr nahrazen maximální hodnotou, která má největší dopad na výkon. MinPts se pak stane minimální velikostí clusteru. Přestože je algoritmus v doméně výběru parametrů podstatně jednodušší než DBSCAN, jeho výsledky se obtížněji používají, protože obvykle vytváří hierarchické shlukování namísto jednoduchého dělení, které vytváří DBSCAN.

Nedávno jeden z autorů DBSCAN revidoval DBSCAN a OPTICS a publikoval revidovanou verzi hierarchického DBSCAN (HDBSCAN*) [8] , která již nemá koncept okrajových bodů. Pouze hlavní body tvoří shluk.
Rozšíření
Generalized DBSCAN (GDBSCAN) [7] [10] je zobecněním stejných autorů pro libovolné booleovské výrazy „neighborhood“ a „density“. Parametry a minPts jsou odstraněny z algoritmu a přeneseny do booleovských podmínek. Například na polygonálních datech může být „sousedstvím“ jakýkoli průsečík polygonů, zatímco podmínka hustoty používá místo počtu prvků plochu.

Byla navržena různá rozšíření algoritmu DBSCAN, včetně metod pro paralelizaci, odhad parametrů a podporu pro sporná data. Základní myšlenka byla rozšířena na hierarchické shlukování pomocí algoritmu OPTICS . Algoritmus DBSCAN byl také použit jako součást algoritmů shlukování podprostoru jako PreDeCon a SUBCLU . HDBSCAN [8] je hierarchická verze DBSCAN, která je také rychlejší než OPTICS a ve které lze z hierarchie extrahovat plochý oddíl sestávající z nejviditelnějších shluků [11] .
Dostupnost
Byly nalezeny různé implementace algoritmu s obrovským rozdílem ve výkonu, nejrychlejší dokončila práci na testovacích datech za 1,4 sekundy a nejpomalejší strávila 13 803 sekund [12] . Rozdíl lze přičíst kvalitě implementace, rozdílu v jazycích a kompilátorech a použití indexů pro urychlení.
- Apache Commons Math obsahuje implementaci Java algoritmu, který běží v kvadratickém čase.
- ELKI poskytuje implementaci DBSCAN, GDBSCAN a dalších variant. Tato implementace může používat různé indexové struktury k poskytování subkvadratického běhu. V této implementaci lze použít funkce libovolné vzdálenosti a libovolné datové typy a zrychlení lze dosáhnout nízkoúrovňovou optimalizací a použitím speciálních metod na malých souborech dat.
- PostGIS zahrnuje ST_ClusterDBSCAN, dvourozměrnou implementaci DBSCAN, která používá R-strom jako index. Je podporován jakýkoli typ geometrie, například bod, čára, mnohoúhelník atd.
- V jazyce R obsahuje balík fpc DBSCAN s podporou libovolné funkce vzdálenosti prostřednictvím matic vzdáleností. Implementace však nepodporuje indexy (a má tedy kvadratickou dobu běhu a časovou složitost) a je třeba říci, že implementace je pomalá kvůli použití interpretu R. Rychlejší implementace C ++ pomocí kd stromů (pouze pro euklidovské vzdálenosti) je v balíčku R dbscan .
- scikit-learn obsahuje implementaci DBSCAN v Pythonu pro libovolnou Minkowského metriku , kterou lze urychlit pomocí stromů kd a ball tree , ale která v nejhorším případě používá kvadratickou paměť. Doplňkový balíček pro scikit-learn poskytuje implementaci algoritmu HDBSCAN*.
- Knihovna pyclustering obsahuje implementaci DBSCAN v Pythonu a C++ pouze pro euklidovskou vzdálenost a také implementaci algoritmu OPTICS.
- SPMF obsahuje implementaci algoritmu DBSCAN s podporou stromu kd pouze pro euklidovskou vzdálenost.
- Weka obsahuje (jako volitelný balíček v nejnovější verzi) základní implementaci DBSCAN, která vyžaduje lineární paměť a běží v kvadratickém čase.
Poznámky
- ↑ 1 2 3 Ester, Kriegel, Sander, Xu, 1996 , str. 226–231.
- ↑ Microsoft Academic Search, 2010 .
- ↑ Cena Test času, 2014 .
- ↑ 12 Ling , 1972 , s. 326–332.
- ↑ 1 2 Zatímco minPts je intuitivně minimální velikost clusteru, v některých případech může DBSCAN produkovat menší clustery ( Schubert, Sander, Ester, Kriegel, Xu 2017 ). Cluster DBSCAN se skládá alespoň z jednoho základního bodu . Protože jiné body mohou být okrajovými body více než jednoho shluku, není zaručeno, že v každém shluku bude zahrnuto alespoň minPts bodů.
- ↑ 1 2 3 4 5 6 7 8 9 Schubert, Sander, Ester, Kriegel, Xu, 2017 , str. 19:1–19:21.
- ↑ 1 2 3 4 Sander, Ester, Kriegel, Xu, 1998 , str. 169–194.
- ↑ 1 2 3 Campello, Moulavi, Zimek, Sander, 2015 , str. 1–51.
- ↑ Kriegel, Kröger, Sander, Zimek, 2011 , str. 231–240.
- ↑ Sander, 1998 .
- ↑ Campello, Moulavi, Zimek, Sander, 2013 , str. 344.
- ↑ Kriegel, Schubert, Zimek, 2016 , str. 341.
Literatura
- Martin Ester, Hans-Peter Kriegel, Jörg Sander, Xiaowei Xu. Algoritmus založený na hustotě pro objevování shluků ve velkých prostorových databázích se šumem // Sborník příspěvků z druhé mezinárodní konference o získávání znalostí a dolování dat (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. Shlukování založené na hustotě v prostorových databázích: Algoritmus GDBSCAN a jeho aplikace // Dolování dat a zjišťování znalostí. - Berlin: Springer-Verlag , 1998. - Vol.2 , no. 2 . — S. 169–194 . - doi : 10.1023/A:1009745219419 .
- Microsoft Academic Search . - 2010. Archivováno 21. dubna 2010. Nejcitovanější články o dolování dat podle akademického vyhledávání společnosti Microsoft; DBSCAN stojí na 24 pozicích.
- Cena SIGKDD Test of Time za rok 2014 . — ACM SIGKDD, 2014.
- Ling RF O teorii a konstrukci k-klastrů // The 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: Proč a jak byste měli (stále) používat DBSCAN // ACM Trans. Database Syst.. - 2017. - Červenec ( vol. 42 , issue 3 ). — ISSN 0362-5915 . - doi : 10.1145/3068335 .
- Hans-Peter Kriegel, Peer Kröger, Jörg Sander, Arthur Zimek. Clustering na základě hustoty // dolování dat a zjišťování znalostí pomocí WIREs. - 2011. - Vol. 1 , vydání. 3 . — S. 231–240 . - doi : 10.1002/šířka 30 .
- Ricardo JGB Campello, Davoud Moulavi, Arthur Zimek, Jörg Sander. Hierarchické odhady hustoty pro shlukování dat, vizualizaci a detekci odlehlých hodnot // Transakce ACM při zjišťování znalostí z dat. - 2015. - T. 10 , no. 1 . — ISSN 1556-4681 . - doi : 10.1145/2733381 .
- George Sander. Generalizované shlukování založené na hustotě pro dolování prostorových dat. - Herbert Utz Verlag, 1998. - ISBN 3-89675-469-6 .
- Campello RJGB, Moulavi D., Zimek A., Sander J. Rámec pro semi-supervised a unsupervised optimální extrakci clusterů z hierarchií // Data Mining and Knowledge Discovery. - 2013. - T. 27 , no. 3 . - doi : 10.1007/s10618-013-0311-4 .
- Hans-Peter Kriegel, Erich Schubert, Arthur Zimek. (Černé) umění vyhodnocování běhového prostředí: Porovnáváme algoritmy nebo implementace? // Znalostní a informační systémy. - 2016. - T. 52 , č.p. 2 . - S. 341 . — ISSN 0219-1377 . - doi : 10.1007/s10115-016-1004-2 .