DBSCAN

DBSCAN
Ilustracja
Przykład klastrów uzyskanych za pomocą algorytmu DBSCAN
Rodzaj

klasteryzacja

Złożoność
Czasowa

O ( n l o g ( n ) ) {\displaystyle O(n\cdot log(n))} (średnia)

DBSCAN (od ang. Density-Based Spatial Clustering of Applications with Noise) – algorytm grupowania danych (klasteryzacji) oparty na gęstości[1][2]. Jego pierwsza wersja została opublikowana w 1996 roku przez Martina Estera wraz ze współautorami[3][4].

Klastrami utworzonymi za pomocą tego algorytmu są gęsto ułożone obszary obiektów, co odpowiada intuicyjnemu rozumieniu grupowania[5]. Algorytm umożliwia znalezienie klastra o dowolnym kształcie, w tym klastra otaczającego inny klaster[2]. W odróżnieniu od algorytmu k-średnich, DBSCAN nie wymaga określenia liczby klastrów[2]. Średnia złożoność czasowa algorytmu wynosi O ( n l o g ( n ) ) {\displaystyle O(n\cdot log(n))} [3].

Opis

Ilustracja działania algorytmu dla M i n P t s = 4. {\displaystyle MinPts=4.} Czerwone punkty (w tym punkt A) są punktami centralnymi, żółte (B i C) są punktami granicznymi, niebieski (N) jest szumem

Algorytm przyjmuje dwa parametry wejściowe (należy je dobrać pod kątem konkretnego zagadnienia)[1][5]:

  • e p s {\displaystyle eps} – maksymalny promień sąsiedztwa,
  • M i n P t s {\displaystyle MinPts} – minimalna liczba obiektów wchodzących w skład klastra.

Algorytm dokonuje grupowania zbioru X {\displaystyle X} w następujący sposób[1][3][5]:

  1. Wylosuj ze zbioru danych punkt p X . {\displaystyle p\in X.}
  2. Znajdź wszystkie punkty ze zbioru X , {\displaystyle X,} których odległość od punktu p {\displaystyle p} jest mniejsza bądź równa e p s . {\displaystyle eps.}
  3. Jeśli liczba punktów znalezionych w punkcie 2 jest większa bądź równa M i n P t s , {\displaystyle MinPts,} punkt p {\displaystyle p} jest punktem centralnym i można na jego podstawie zbudować nowy klaster. W takim wypadku:
    1. Utwórz nowy klaster zawierający punkt p {\displaystyle p} i wszystkie punkty znalezione w punkcie 2.
    2. Dołączaj do klastra kolejne punkty, o ile są osiągalne gęstościowo z punktów już znajdujących się w klastrze, to znaczy:
      1. jeśli odległość punktu q X {\displaystyle q\in X} od dowolnego punktu centralnego w klastrze jest mniejsza bądź równa e p s , {\displaystyle eps,} a w odległości mniejszej bądź równej e p s {\displaystyle eps} od punktu q {\displaystyle q} znajduje się co najmniej M i n P t s {\displaystyle MinPts} punktów, punkt q {\displaystyle q} jest także punktem centralnym – do klastra należy ten punkt oraz wszystkie inne znajdujące się w promieniu e p s , {\displaystyle eps,}
      2. jeśli odległość punktu q X {\displaystyle q\in X} od dowolnego punktu centralnego w klastrze jest mniejsza bądź równa e p s , {\displaystyle eps,} ale w odległości mniejszej bądź równej e p s {\displaystyle eps} od punktu q {\displaystyle q} znajduje mniej niż M i n P t s {\displaystyle MinPts} punktów, punkt q {\displaystyle q} jest punktem granicznym – do klastra należy ten punkt, ale już niekoniecznie inne punkty znajdujące się w promieniu e p s . {\displaystyle eps.}
  4. Wybierz kolejny punkt p X {\displaystyle p\in X} (pomijając punkty znajdujące się już wewnątrz klastrów i punkty sprawdzone w punkcie 3) i wróć do punktu 3. Jeśli nie ma już nieprzejrzanych punktów, zakończ działanie algorytmu. Punkty niezaklasyfikowane do żadnego z klastrów traktowane są jako szum.

W zależności od kolejności przetwarzania punktów, przynależność punktów granicznych do klastrów może się zmienić. Pod tym względem algorytm jest więc niedeterministyczny[2].

Implementacje

Implementacja algorytmu jest dostępna między innymi w bibliotece scikit-learn języka Python[6].

Przypisy

  1. a b c ArturA. Starczewski ArturA., PiotrP. Goetzen PiotrP., Meng JooM.J. Er Meng JooM.J., A New Method for Automatic Determining of the DBSCAN Parameters, „Journal of Artificial Intelligence and Soft Computing Research”, 10 (3), 2020, s. 209–221, DOI: 10.2478/jaiscr-2020-0014 [dostęp 2024-01-08]  (ang.).
  2. a b c d KarolinaK. Sala KarolinaK., Przegląd technik grupowania danych i obszary zastosowań, „Społeczeństwo i Edukacja. Międzynarodowe Studia Humanistyczne”, 2 (25), Instytut Studiów Międzynarodowych i Edukacji Humanum, 2017, s. 141–145 [dostęp 2024-01-08] .
  3. a b c MartinM. Ester MartinM. i inni, A density-based algorithm for discovering clusters in large spatial databases with noise, „Proceedings of the Second International Conference on Knowledge Discovery and Data Mining (KDD-96)”, AAAI Press, 1996, s. 226–231 .
  4. Saif UrS.U. Rehman Saif UrS.U. i inni, DBSCAN: Past, present and future, IEEE, luty 2014, s. 232–238, DOI: 10.1109/ICADIWT.2014.6814687, ISBN 978-1-4799-2259-8 .
  5. a b c AgnieszkaA. Nowak-Brzezińska AgnieszkaA., TomaszT. Xięski TomaszT., Grupowanie danych złożonych, „Studia Informatica”, 32 (2A), Gliwice: Wydawnictwo Politechniki Śląskiej, 2011, s. 391–402 [dostęp 2024-01-08] .
  6. sklearn.cluster.DBSCAN [online], scikit-learn [dostęp 2024-01-08]  (ang.).