DBSCAN
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. december 11-én felülvizsgált
verziótól ; az ellenőrzéshez
1 szerkesztés szükséges .
Az alkalmazások sűrűség alapú térbeli klaszterezése zajjal ( DBSCAN ) egy adatfürtöző algoritmus , amelyet Maritin Ester, Hans-Peter Kriegel, Jörg Sander és Xiaowei Su javasolt 1996-ban [ 1] . Ez egy sűrűség alapú klaszterező algoritmus – adott térben egy ponthalmaz, az algoritmus összegyűjti azokat a pontokat, amelyek közel vannak egymáshoz (sok közeli szomszédos pontok ), kiugró pontokként megjelölve azokat a pontokat, amelyek magányosak az alacsony sűrűségű területeken (amelyeknek a legközelebbi szomszédai messze vannak). A DBSCAN az egyik leggyakrabban használt klaszterező algoritmus, és a tudományos irodalomban a leggyakrabban említett [2] .
Az algoritmus 2014-ben megkapta az "időtesztelt" díjat (az elméletben és a gyakorlatban jelentős figyelmet kapott algoritmusok díját) a vezető adatbányászati konferencián, a KDD-n [3] .
Korai verziók
1972-ben Robert F. Ling már publikált egy cikket The Theory and Construction of k-Clusters [4] címmel a The Computer Journal folyóiratban , hasonló algoritmussal, a számítási komplexitás becslésével [4] . A DBSCAN a legrosszabb eset bonyolultságával rendelkezik , és a DBSCAN megfogalmazása adatbázis-orientált kifejezésekkel rendelkezik a tartománylekérdezéseknél
[ clear ] lehetővé teszi az index szerinti gyorsítást. Az algoritmusok különböznek az élpontok kezelésében.
Előkészítés
Tekintsünk egy olyan ponthalmazt valamilyen térben, amely klaszterezést igényel. A DBSCAN-fürtözés végrehajtásához a pontokat alappontokra osztják, amelyek pontsűrűség szerint érhetők el , és a kiugró értékeket az alábbiak szerint:
- Egy p pont akkor főpont, ha legalább minPts pont távolsága nem haladja meg a ( a p -től mért maximális szomszédsági sugár ) tőle (beleértve magát a p pontot is ). Ezek a pontok állítólag közvetlenül elérhetők a p -ről .


- Egy q pont közvetlenül elérhető p -ből , ha q nem nagyobb , mint p távolságra p -től , és p - nek kell lennie az alappontnak.

- Egy A q pont akkor érhető el p -ről , ha van olyan út és -vel , ahol minden pont közvetlenül elérhető (az út minden pontjának elsődlegesnek kell lennie, kivéve q -t ).





- Minden olyan pont, amely nem érhető el az alappontokból, kiugró értéknek számít .
Most, ha p egy magpont, akkor egy klasztert alkot az összes ponttal (mag- vagy nem maggal), amely ebből a pontból elérhető. Minden klaszter legalább egy fő pontot tartalmaz. A nem esszenciális pontok lehetnek egy klaszter részei, de ezek képezik annak "élét", mert nem használhatók más pontok elérésére.
Az elérhetőség nem szimmetrikus reláció, mert definíció szerint nem magpontból távolságtól függetlenül egyetlen pont sem érhető el (tehát egy magon kívüli pont is elérhető, de onnan semmi sem érhető el). Ezért a DBSCAN algoritmus által talált klaszterek területének formális meghatározásához szükség van a további kapcsolódási koncepcióra. Két p és q pont sűrűségfüggő, ha van olyan o pont , amelynél p és q is elérhető o -ból . A sűrűség kapcsolat szimmetrikus .
Ekkor a klaszter két tulajdonságot teljesít:
- A klaszter összes pontja páronként sűrűn kapcsolódik.
- Ha egy pont a klaszter valamely pontjáról elérhető sűrűségű, akkor az is a klaszterhez tartozik.
Algoritmus
Az eredeti lekérdezés alapú algoritmus
A DBSCAN két paraméter megadását igényli: és azon pontok minimális számát, amelyeknek sűrű régiót kell alkotniuk [5] (minPts). Az algoritmus egy tetszőleges pontból indul, amelyet még nem tekintettek meg. Kiválasztjuk a pont szomszédságát, és ha az elegendő pontot tartalmaz, akkor egy klaszter jön létre, ellenkező esetben a pont zajként lesz megjelölve . Ne feledje, hogy ez a pont később egy másik pont szomszédságában található, és bekerülhet valamelyik klaszterbe.



Ha egy pontot egy klaszter sűrű pontjaként találunk, akkor a -szomszédsága is ennek a klaszternek a része. Ezért a pont -szomszédságában található összes pont hozzáadódik a fürthöz. Ez a folyamat addig folytatódik, amíg egy sűrűséghez kapcsolódó klasztert nem találunk. Ezután egy új meg nem látogatott pont kerül kiválasztásra és feldolgozásra, ami a következő klaszter vagy zaj felfedezéséhez vezet.


A DBSCAN bármilyen távolságfüggvénnyel használható [1] [6] (valamint hasonlósági függvénnyel vagy logikai feltétellel) [7] . A távolságfüggvény (dist) ezért további paraméternek tekinthető.
Az algoritmus pszeudokódban a következőképpen írható [6] :
DBSCAN(DB, distFunc, eps, minPts) {
C=0 /* Klaszterek száma */
minden P ponthoz a DB adatbázisban {
if label(P) ≠ undefined then folytatás /* A pontot a belső ciklusban kerestük */
Neighbors N=RangeQuery(DB, distFunc, P, eps) / * Szomszédok keresése */
if |N|< minPts then { /* Sűrűségellenőrzés */
label(P)=Zaj /* Megjelölés zajként */
folytatás
}
C=C + 1 /* következő fürtcímke */
címke(P)=C /* Címke kezdőpontja */
Magkészlet S=N \ {P} /* Kibontandó szomszédok */
minden egyes Q ponthoz S { /* Az egyes magpontok kezelése */
ha címke(Q)=Zaj , akkor címke(Q)=C /* Zaj címke módosítása Edge-re */
ha címke(Q) ≠ nincs meghatározva , akkor folytassa /* Megtekintve */
címke(Q)= C /* Szomszéd megjelölése */
Szomszédok N=RangeQuery(DB, distFunc, Q, eps) /* Szomszédok keresése */
if |N|≥ minPts then { /* Sűrűség ellenőrzése */
S=S ∪ N /* Szomszédok hozzáadása kezdetleges pontok meghatározása */
}
}
}
}
ahol a RangeQuery megvalósítható adatbázis-index segítségével a jobb teljesítmény érdekében, vagy lineáris lassú keresés használható:
RangeQuery(DB, distFunc, Q, ) {

Szomszédok=üres lista
minden P ponthoz a DB adatbázisban { /* Az adatbázis összes pontjának vizsgálata */
if then { /* Távolság számítása és epsilon ellenőrzése */
Szomszédok=Szomszédok ∪ {P} /* Hozzáadás az eredményhez */

}
}
vissza Szomszédok
}
Absztrakt algoritmus
A DBSCAN algoritmus a következő lépésekre bontható [6] :
- Minden pont közelében pontokat találunk, és kiválasztjuk azokat a fő pontokat, amelyeknek több mint minPts szomszédjuk van.

- A főpontok összefüggő összetevőit a szomszédok gráfján találjuk meg, figyelmen kívül hagyva az összes nem alappontot.
- Minden nem elsődleges legközelebbi fürt hozzárendelése, ha a fürt -szomszéd, ellenkező esetben tekintse a pontot zajnak.

Az algoritmus naiv megvalósítása megköveteli a szomszédok memorizálását az 1. lépésben, tehát jelentős memóriát igényel. Az eredeti DBSCAN algoritmus ezt nem követeli meg, ha ezeket a lépéseket egyenként hajtja végre.
Nehézség
A DBSCAN minden adatbázispontot felkeres, esetleg többször is (például más fürtök jelöltjeként). A működési tapasztalatok alapján azonban az időbonyolultságot főként a regionQuery lekérdezések száma határozza meg. A DBSCAN pontosan egy ilyen lekérdezést hajt végre minden ponthoz, és ha olyan indexstruktúrát használunk, amely az szomszédsági lekérdezést O(log n ) idő alatt fejezi be , akkor a teljes átlagos időbonyolultság O( n log n ) (ha a paraméter ésszerűen választott, akkor olyan, hogy átlagosan csak O(log n ) pontot adunk vissza). Gyorsuló indexstruktúra használata nélkül vagy degenerált adatokon (például amikor minden pont kisebb, mint ), a legrosszabb eset futási ideje marad . A méret távolságmátrixa kiszámítható a távolságok újraszámításának elkerülése érdekében, de ehhez memória szükséges , míg a távolságmátrix nélküli DBSCAN megvalósítás csak O( n ) memóriát igényel.





Előnyök
- A DBSCAN nem követeli meg a klaszterek számának előzetes megadását az adatokban , ellentétben a k-means módszerrel .
- A DBSCAN tetszőleges alakú klasztereket találhat. Még olyan klasztereket is találhat, amelyeket teljesen körülvesznek (de nem kapcsolódnak) más klaszterek. A MinPts paraméternek köszönhetően csökken egy kapcsolat úgynevezett hatása (különböző klaszterek összekapcsolása vékony pontvonallal).
- A DBSCAN rendelkezik a zaj fogalmával, és tűri a kiugró értékeket .
- A DBSCAN csak két paramétert igényel, és többnyire érzéketlen az adatbázisban lévő pontok sorrendjére . (A két különböző klaszter határán lévő pontok azonban egy másik klaszterbe kerülhetnek, ha a pontok sorrendjét megváltoztatjuk, és a klaszterek hozzárendelése az izomorfizmusig egyedi.)
- A DBSCAN-t olyan adatbázisokkal való használatra tervezték, amelyek felgyorsíthatják a lekérdezéseket számos értéktartományban, például egy R*-fával .
- A minPt-eket és a paramétereket a kérdéses terület szakértői állíthatják be, ha az adatok jól értelmezhetők.

Hátrányok
- A DBSCAN nem teljesen egyértelmű – az egynél több klaszterből elérhető élpontok bármelyik fürthöz tartozhatnak, attól függően, hogy a pontokat milyen sorrendben nézzük. A legtöbb adatkészlet esetében ezek a helyzetek ritkán fordulnak elő, és csekély hatásuk van a klaszterezés eredményére [6] – a fő pontokat és a zajt a DBSCAN egyedileg dolgozza fel. A DBSCAN* [8] egy olyan változat, amely az élpontokat zajként kezeli, és így teljesen egyértelmű eredményt, valamint a sűrűséghez kapcsolódó komponensek konzisztensebb statisztikai értelmezését éri el.
- A DBSCAN minősége a regionQuery(P,ε) függvényben használt távolságméréstől függ. A leggyakrabban használt távolságmérő az euklideszi metrika . Különösen nagy dimenziós adatok klaszterezésekor ez a mérőszám szinte használhatatlan lehet az úgynevezett "dimenziós átka" miatt, ami megnehezíti a megfelelő érték megtalálását . Ez a hatás azonban minden más euklideszi távolságon alapuló algoritmusban jelen van.

- A DBSCAN nem tudja jól klaszterezni a nagy sűrűségkülönbséggel rendelkező adatkészleteket, mert nem tud olyan kombinációt választani, amely minden klaszter számára elfogadható [9] .

- Ha az adatokat és a léptéket nem értjük jól, nehéz lehet értelmes távolsági küszöböt választani.

Tekintse meg az alábbi szakaszt a bővítményekről az ezekkel a problémákkal foglalkozó algoritmikus módosításokról.
Paraméterbecslés
Minden adatbányászati feladatnak paraméterproblémája van. Bármely paraméter specifikus hatással van az algoritmusra. A DBSCAN algoritmushoz paraméterek és minPts szükséges . A paramétereket a felhasználónak kell meghatároznia. Ideális esetben az értéket a megoldandó probléma (pl. fizikai távolságok) határozza meg, majd a minPts meghatározza a minimálisan kívánt klaszterméretet [5] .


- MinPts : Ahogy a tapasztalat azt mutatja, a minimális minPts értéket az adatkészlet D dimenziójából kaphatjuk meg, mint . Az alacsony minPts =1 értéknek nincs értelme, mivel akkor bármely pont klaszter lesz. Az eredmény ugyanaz lesz, mint a hierarchikus klaszterezés egyetlen kapcsolati metrikával, dendrogramos metszés magasságban . Ezért a minPts -nek legalább 3-nak kell lennie. Zajos adatkészleteknél azonban a nagyobb értékek általában jobbak, és jelentősebb klasztereket eredményeznek. A tapasztalatok szerint a [7] érték használható , de előfordulhat, hogy nagyobb adathalmazokhoz, zajos adatokhoz vagy sok ismétlődést tartalmazó adatokhoz nagyobb értéket kell választani [6] .




: Az érték a k-távolság grafikon segítségével választható ki , ábrázolva a ( ) legközelebbi szomszéd távolságát a legnagyobbtól a legkisebbig [6] . Jó értékek azok, ahol a grafikon "hajlással" rendelkezik [1] [7] [6] - ha túl kicsire választja, az adatok többsége nem kerül klaszterbe, és túl nagy értékek esetén a klaszterek összeolvadnak és a legtöbb az objektumok közül ugyanabban a klaszterben lesz. Általában a kis értékek előnyösebbek [6] , és a tapasztalat azt mutatja, hogy a pontoknak csak kis hányadának kell ilyen távolságra lennie egymástól. Alternatív megoldásként egy OPTICS diagramot is használhatunk a [6] kiválasztásához , de ekkor maga az OPTICS algoritmus is használható a klaszterezéshez.






- Távolságfüggvény: A távolságfüggvény kiválasztása szorosan összefügg a választással , és nagy hatással van az eredményekre. Általában először meg kell határozni egy adatkészlet hasonlóságának ésszerű mértékét, mielőtt kiválasztaná a . Erre a paraméterre nincsenek becslések, de a távolságfüggvényeket az adatkészletnek megfelelően kell kiválasztani. Például a földrajzi adatokhoz a nagy körtávolság gyakran jó választás.


Az OPTICS a DBSCAN általánosításaként fogható fel, amelyben a paramétert az a maximális érték váltja fel, amely a legnagyobb hatással van a teljesítményre. A MinPts ekkor a minimális fürtméret lesz. Bár az algoritmus a paraméterkiválasztási tartományban lényegesen egyszerűbb, mint a DBSCAN, eredményeit nehezebb használni, mivel általában hierarchikus klaszterezést hoz létre a DBSCAN által előállított egyszerű particionálás helyett.

A közelmúltban a DBSCAN egyik szerzője átdolgozta a DBSCAN-t és az OPTICS-t, és közzétette a hierarchikus DBSCAN (HDBSCAN*) [8] átdolgozott változatát , amely már nem tartalmazza az élpontok fogalmát. Csak a fő pontok alkotnak klasztert.
Kiterjesztések
Az általánosított DBSCAN (GDBSCAN) [7] [10] ugyanazon szerzők általánosítása tetszőleges logikai "környéki" és "sűrűség" kifejezésekre. A paraméterek és a minPts eltávolításra kerülnek az algoritmusból, és átkerülnek logikai feltételekre. Például a sokszögű adatokon a "szomszédság" a sokszögek tetszőleges metszéspontja lehet, míg a sűrűségfeltétel a területet használja a jellemzők száma helyett.

A DBSCAN algoritmus különféle kiterjesztését javasolták, beleértve a párhuzamosítási módszereket, a paraméterbecslést és a megkérdőjelezhető adatok támogatását. Az alapötletet az OPTICS algoritmus kiterjesztette a hierarchikus klaszterezésre . A DBSCAN algoritmust olyan altér klaszterezési algoritmusok részeként is használták, mint a PreDeCon és a SUBCLU . A HDBSCAN [8] a DBSCAN hierarchikus változata, amely az OPTICS-nál is gyorsabb, és amelyben a hierarchiából kivonható egy lapos partíció, amely a legláthatóbb klaszterekből áll [11] .
Elérhetőség
Az algoritmus különféle implementációit óriási teljesítménykülönbséggel találták meg, a leggyorsabbak 1,4 másodperc alatt végezték el a tesztadatokkal kapcsolatos munkát, a leglassabbak pedig 13803 másodpercet töltöttek el [12] . A különbség a megvalósítás minőségének, a nyelvek és fordítók különbségének, valamint az indexek használatának a felgyorsítására vezethető vissza.
- Az Apache Commons Math egy olyan algoritmus Java implementációját tartalmazza , amely négyzetes időben fut.
- Az ELKI a DBSCAN, GDBSCAN és egyéb lehetőségek megvalósítását biztosítja. Ez a megvalósítás különböző indexstruktúrákat használhat a szubquadratikus futásidő biztosítására. Ebben a megvalósításban tetszőleges távolságfüggvények és tetszőleges adattípusok használhatók, a gyorsítás pedig alacsony szintű optimalizálással és speciális módszerek alkalmazásával érhető el kis adathalmazokon.
- A PostGIS tartalmazza az ST_ClusterDBSCAN-t, a DBSCAN kétdimenziós megvalósítását, amely egy R-fát használ indexként. Bármilyen geometriatípus támogatott, például pont, vonal, sokszög stb.
- Az R nyelvben az fpc csomag tartalmazza a DBSCAN-t, amely egy tetszőleges távolságfüggvényt támogat távolságmátrixokon keresztül. Az implementáció azonban nem támogatja az indexeket (ezért négyzetes futási idővel és időbonyolultsággal rendelkezik), és el kell mondani, hogy az implementáció lassú az R interpreter használata miatt Gyorsabb C ++ implementáció kd fákkal (csak euklideszi távolságokhoz) az R csomagban található dbscan .
- A scikit-learn tartalmazza a DBSCAN Python - megvalósításáttetszőleges Minkowski-metrikákhoz , amely felgyorsítható kd-fákkal és ball-fákkal , de amely a legrosszabb esetben másodfokú memóriát használ. A scikit-learn kiegészítő csomagja a HDBSCAN* algoritmus megvalósítását biztosítja.
- A pyclustering könyvtár a DBSCAN Python és C++ megvalósítását tartalmazza csak az euklideszi távolságra, valamint az OPTICS algoritmus egy implementációját.
- Az SPMF a DBSCAN algoritmus megvalósítását tartalmazza, csak az euklideszi távolság kd fa támogatásával.
- A Weka (a legújabb verzióban opcionális csomagként) tartalmaz egy lineáris memóriát igénylő, négyzetes időben futó alapvető DBSCAN implementációt.
Jegyzetek
- ↑ 1 2 3 Ester, Kriegel, Sander, Xu, 1996 , p. 226–231.
- ↑ Microsoft Academic Search, 2010 .
- ↑ Időpróba díj, 2014 .
- ↑ 12. Ling , 1972 , p. 326–332.
- ↑ 1 2 Míg a minPts intuitív módon a minimális klaszterméret, bizonyos esetekben a DBSCAN kisebb klasztereket is képes előállítani ( Schubert, Sander, Ester, Kriegel, Xu 2017 ). Egy DBSCAN-fürt legalább egy magpontból áll . Mivel más pontok egynél több klaszter élpontjai is lehetnek, nincs garancia arra, hogy minden klaszterben legalább minPts pont szerepel.
- ↑ 1 2 3 4 5 6 7 8 9 Schubert, Sander, Ester, Kriegel, Xu, 2017 , p. 19:1–19:21.
- ↑ 1 2 3 4 Sander, Ester, Kriegel, Xu, 1998 , p. 169–194.
- ↑ 1 2 3 Campello, Moulavi, Zimek, Sander, 2015 , p. 1–51.
- ↑ Kriegel, Kröger, Sander, Zimek, 2011 , p. 231–240.
- ↑ Sander, 1998 .
- ↑ Campello, Moulavi, Zimek, Sander, 2013 , p. 344.
- ↑ Kriegel, Schubert, Zimek, 2016 , p. 341.
Irodalom
- Martin Ester, Hans-Peter Kriegel, Jörg Sander, Xiaowei Xu. Sűrűség alapú algoritmus zajjal járó klaszterek felfedezéséhez nagy térbeli adatbázisokban // 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. Sűrűség alapú klaszterezés térbeli adatbázisokban: A GDBSCAN algoritmus és alkalmazásai // Adatbányászat és tudásfeltárás. - Berlin: Springer-Verlag , 1998. - 2. évf . 2 . – S. 169–194 . - doi : 10.1023/A:1009745219419 .
- Microsoft Academic Search . - 2010. Archiválva : 2010. április 21. A Microsoft tudományos kereső legtöbbet idézett adatbányászati cikkei; A DBSCAN 24 pozícióból áll.
- 2014 SIGKDD Teszt of Time díj . – ACM SIGKDD, 2014.
- Ling RF A k-klaszterek elméletéről és felépítéséről // The Computer Journal. - 1972. - T. 15 , sz. 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: Miért és hogyan kell (még mindig) használni a DBSCAN-t // ACM Trans. Adatbázisrendszer.. - 2017. - július ( 42. évf. , 3. szám ). — ISSN 0362-5915 . - doi : 10.1145/3068335 .
- Hans-Peter Kriegel, Peer Kröger, Jörg Sander, Arthur Zimek. Sűrűség alapú klaszterezés // WIREs adatbányászat és tudásfelderítés. - 2011. - 1. évf. , szám. 3 . – S. 231–240 . - doi : 10.1002/widm.30 .
- Ricardo JGB Campello, Davoud Moulavi, Arthur Zimek, Jörg Sander. Hierarchikus sűrűségbecslések az adatcsoportosításhoz, a vizualizációhoz és a kiugró értékek észleléséhez // ACM-tranzakciók az adatokból való tudásfeltáráson. - 2015. - T. 10 , sz. 1 . — ISSN 1556-4681 . - doi : 10.1145/2733381 .
- George Sander. Általánosított sűrűség-alapú klaszterezés téradatbányászathoz. - Herbert Utz Verlag, 1998. - ISBN 3-89675-469-6 .
- Campello RJGB, Moulavi D., Zimek A., Sander J. Keretrendszer a klaszterek félig felügyelt és nem felügyelt optimális extrakciójához hierarchiákból // Data Mining and Knowledge Discovery. - 2013. - T. 27 , sz. 3 . - doi : 10.1007/s10618-013-0311-4 .
- Hans-Peter Kriegel, Erich Schubert, Arthur Zimek. A futásidejű kiértékelés (fekete) művészete: Algoritmusokat vagy implementációkat hasonlítunk össze? // Tudás és információs rendszerek. - 2016. - T. 52 , sz. 2 . - S. 341 . — ISSN 0219-1377 . - doi : 10.1007/s10115-016-1004-2 .