97
Rok akademicki 2014/2015 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA MAGISTERSKA Piotr Gumowski Zastosowanie algorytmu DBSCAN do grupowania danych rozproszonych Opiekun pracy Dr inż. Jakub Koperwas Ocena: ..................................................... ................................................................. Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

Zastosowanie algorytmu DBSCAN do grupowania danych … · Rok akademicki 2014/2015 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • Rok akademicki 2014/2015 Politechnika Warszawska

    Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki

    PRACA DYPLOMOWA MAGISTERSKA

    Piotr Gumowski

    Zastosowanie algorytmu DBSCAN do grupowania danych rozproszonych

    Opiekun pracy Dr inż. Jakub Koperwas

    Ocena: ..................................................... .................................................................

    Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

  • Kierunek: Informatyka

    Specjalność: Inżynieria Systemów Informatycznych

    Data urodzenia: 1989.06.29

    Data rozpoczęcia studiów: 2012.10.01

    Życiorys

    Urodziłem się 29 czerwca 1989 roku w Grójcu. Naukę rozpocząłem w Publicznej Szkole Podstawowej im. Komisji Edukacji Narodowej w Białobrzegach, następnie uczęszczałem do Publicznego Gimnazjum a później do Liceum Ogólnokształcącego im. Armii Krajowej, również w Białobrzegach. W październiku 2008 roku rozpocząłem studia na wydziale Elektroniki i Technik Informacyjnych na kierunku Informatyka, wybierając później specjalność ”Inżynieria Systemów Informatycznych”. We wrześniu 2012 roku uzyskałem tytuł inżyniera a w październiku rozpocząłem studia magisterskie a na tej samej uczelni. W czasie trwania studiów odbyłem praktyki a następnie pracowałem przez okres dwóch lat w firmie Capgemini zajmując się systemami CRM. Obecnie pracuję w firmie Roche jako programista Salesforce.com

    ....................................................... Podpis studenta

    EGZAMIN DYPLOMOWY

    Złożył egzamin dyplomowy w dniu .................................................................................. 20__ r

    z wynikiem ..................................................................................................................................

    Ogólny wynik studiów: ...............................................................................................................

    Dodatkowe wnioski i uwagi Komisji: .........................................................................................

    ......................................................................................................................................................

    ......................................................................................................................................................

  • STRESZCZENIE

    Celem niniejszej pracy było przedstawienie rozproszonego podejścia do grupowania danych wykorzystując w tym celu algorytm DBSCAN.

    Praca ta rozpoczyna się od krótkiego wprowadzenia w dziedzinę eksploracji danych a przede wszystkim w dziedzinę grupowania - zostały przedstawione najważniejsze pojęcia związane z grupowaniem danych oraz szerzej omówiony algorytm DBSCAN.

    W dalszej części zostało wyjaśnione dlaczego algorytmy działające na danych rozproszonych są tak ważne, jakie trudności się z nimi wiążą oraz został zaprezentowany algorytm DBDC, który wykorzystuje podejście tworzenia modeli lokalnych dla każdej rozproszonej bazy danych a następnie ich łączenie w dodatkowym etapie, jego słabe i mocne strony. Dla tego algorytmu zaproponowano także sposób radzenia sobie z klastrami, które na poziomie lokalnym traktowane są jako szum.

    Praca ta omawia również podejście, zakładające wstępne posortowanie danych trafiających do każdej z baz będących składową systemu, gdzie rozpatrzenia wymagają tylko punkty znajdujące się w pobliżu krańców przedziałów, korzyści z tego płynące oraz wpływ na wyniki grupowania.

    Dla obydwu powyższych algorytmów została zbadana jakość grupowania w odniesieniu do wyników dostarczanych przez algorytm DBSCAN uruchamiany na całości danych, bazując na wybranej mierze jakości. Ponadto został pokazany wpływ stopnia rozproszenia danych na jakość otrzymanych wyników a także zbadany procent punktów przesyłanych z lokalnych baz danych celem wykonania obliczeń globalnych.

    Słowa kluczowe: eksploracja danych, grupowanie, algorytm DBSCAN, rozproszony algorytm DBSCAN

    DBSCAN ALGORITHM IN DISTRIBUTED DATA CLUSTERING

    The purpose of this thesis was to present approach for distributed data clustering using the DBSCAN algorithm.

    This paper starts with brief introduction to the field of data mining and especially to the field of data clustering - key concepts related to data clustering were presented and DBSCAN algorithm was widely discussed.

    Further part of the thesis explains why algorithms working on distributed data are so important and the difficulties related to them. There was also presented DBDC algorithm, which creates local models for each data base being a part of the system and then combines them in the next step, its strengths and weaknesses. For this algorithm is also proposed a way to deal with clusters considered to be noise at local stage.

    This paper discuss also approach based on pre-sorted data written in each data base which is part of the system, where only points located near to border of interval need to be taken into account, the benefits and impact on clustering quality.

    For both above-mentioned algorithms a distributed clustering quality compared to the results from DBSCAN working on all data set was evaluated. Moreover, the number of sites impact on results quality was presented as well as percentage of local points sent to perform global analysis was examined. Keywords: data mining, clustering, DBSCAN algorithm, distributed DBSCAN

  • Spis treści

    1. Wstęp ................................................................................................................ 8

    1.1. Wprowadzenie ................................................................................................................. 8

    1.2. Przegląd literatury .......................................................................................................... 10

    1.3. Cel i zakres pracy .......................................................................................................... 11

    1.4. Układ treści .................................................................................................................... 12

    2. Grupowanie .................................................................................................... 13

    2.1. Zagadnienie grupowania danych ................................................................................... 13

    2.2. Miary podobieństwa stosowane w grupowaniu ............................................................. 15

    2.3. Podział algorytmów grupowania ................................................................................... 16

    2.4. Algorytm DBSCAN ...................................................................................................... 17

    3. Algorytm DBDC ............................................................................................ 22

    3.1. Zarys problemu .............................................................................................................. 24

    3.2. Opis algorytmu .............................................................................................................. 27

    3.3. Budowanie modeli lokalnych ........................................................................................ 27

    3.4. Wyznaczanie modelu globalnego .................................................................................. 33

    3.5. Aktualizacja grup danych lokalnych ............................................................................ 34

    3.6. Wady algorytmu ............................................................................................................ 35

    3.7. Propozycje usprawnień .................................................................................................. 39

    4. Algorytm IBDC .............................................................................................. 48

    4.1. Zarys problemu .............................................................................................................. 48

    4.2. Opis algorytmu .............................................................................................................. 51

    4.3. Etap lokalny ................................................................................................................... 51

    4.4. Etap globalny ................................................................................................................. 53

    4.5. Aktualizacja numerów grup ........................................................................................... 56

  • 5. Wykonane eksperymenty ............................................................................. 58

    5.1. Miara podobieństwa grupowania ................................................................................... 58

    5.2. Weryfikacja poprawności rozwiązań ............................................................................. 61

    5.3. Zbiory danych ................................................................................................................ 65

    5.4. Algorytm DBDC ............................................................................................................ 68

    5.4.1. Aggregation ............................................................................................................. 68

    5.4.2. Gen_without_noise ................................................................................................. 72

    5.4.3. Gen_with_noise ...................................................................................................... 74

    5.4.4. 40c ........................................................................................................................... 76

    5.4.5. s1 ............................................................................................................................. 78

    5.5. Algorytm IBDC ............................................................................................................. 79

    5.5.1. Aggregation ............................................................................................................. 79

    5.5.2. Gen_without_noise ................................................................................................. 81

    5.5.3. Gen_with_noise ...................................................................................................... 81

    5.5.4. 40c ........................................................................................................................... 82

    5.5.5. s1 ............................................................................................................................. 83

    5.6. Znajdowanie niewielkich klastrów ................................................................................ 84

    5.7. Podsumowanie testów ................................................................................................... 88

    5.8. Badanie wydajności ....................................................................................................... 89

    Podsumowanie pracy i wnioski ........................................................................ 92

    Zawartość płyty CD........................................................................................... 94

    Literatura ........................................................................................................... 95

  • 8

    Rozdział 1

    Wstęp

    1.1. Wprowadzenie

    Wraz z postępem technologicznym, upowszechnieniem się systemów informatycznych oraz rozwojem Internetu ilość generowanych danych zaczęła gwałtownie rosnąć. Dane te, mające swe źródło w nauce i medycynie, handlu, finansach, telekomunikacji oraz w wielu innych dziedzinach życia mogą kryć w sobie cenną wiedzę. Wiedza ta oczywiście mogłaby się przyczynić do rozwoju na przykład medycyny (lepsze diagnozowanie chorób) ale z całą pewnością byłaby także cenna dla wszelakich zastosowań biznesowych i ekonomicznych. Dziedzina nauki zajmująca się takim właśnie odkrywaniem wiedzy z dużych zbiorów danych nazywa się eksploracją danych (ang. data mining). Do jej rozwoju z pewnością przyczynił się spadek kosztów przechowywania danych (tańsze, bardziej pojemne i niezawodne dyski) ale także coraz to bardziej zaawansowane sposoby ich pozyskiwania np.: czytniki kodów kreskowych.

    Próbując zdefiniować termin eksploracja danych można powiedzieć, że jest to proces automatycznego odkrywania reguł, schematów, wzorców czy też zależności, które są jednocześnie nietrywialnie, potencjalnie przydatne oraz dotychczas nieznane.

    W eksploracji danych można wyróżnić kilka głównych metod. Są to: klasyfikacja, grupowanie, odnajdywanie reguł asocjacyjnych bądź wzorców sekwencji. Poniżej znajduje się ich krótki opis.

    Zadaniem klasyfikacji jest znalezienie modelu (lub funkcji) opisującego i rozróżniającego klasy występujące w istniejących danych tak, aby na jego podstawie można było przyporządkowywać nowe obiekty do określonej, znanej wcześniej klasy [1]. Przykładem klasyfikacji może być przyporządkowanie klienta firmy telekomunikacyjnej do danego segmentu klientów na podstawie rodzaju taryfy, średniej kwoty płaconych rachunków oraz dodatkowo wykupionych pakietów. Najpopularniejsze metody klasyfikacji to budowa drzew decyzyjnych, klasyfikacja Bayesowska oraz metoda najbliższych sąsiadów.

    Grupowanie zwane również klasteryzacją lub analizą skupień polega na jak najlepszym

    podziale zbioru dostępnych danych na pewne grupy tak aby obiekty przydzielone do jednej grupy były do siebie maksymalnie podobne oraz różniły się znacznie od obiektów

  • 9

    przydzielonych do innych grup [1]. Zagadnieniu grupowania będzie poświęcony kolejny rozdział.

    Do odkrywania związków pomiędzy występowaniem grup elementów w zbiorach danych służą reguły asocjacyjne. W bardzo wielu przykładach dotyczących reguł asocjacyjnych pojawia się przykład 'sklepowy' — klienci, którzy w hipermarkecie kupują kiełbaski i pieczywo bardzo często sięgają również po musztardę bądź ketchup. Ma to pewnie związek z tym, że metoda jest często używana do odpowiedniego rozmieszczenia towarów w sklepie, bądź planowania odpowiednich akcji promocyjnych.

    Odkrywanie wzorców sekwencji ma za cel znalezienie zależności pomiędzy występowaniem określonych zdarzeń w czasie [2]. Przykładem takiego wzorca jest wypożyczenie z biblioteki książki 'Ogniem i mieczem'. Jeśli klient wypożyczy po pewnym czasie również 'Potop' to na tej podstawie można wnioskować, że wkrótce wypożyczy także 'Pana Wołodyjowskiego'. Odkrywanie wzorców sekwencji jest często stosowane w inwestycjach giełdowych (przewidywanie kursu akcji).

    Tradycyjne metody eksploracji danych wymagają pełnego dostępu do danych, które mają

    zostać poddane analizie. Współcześnie, coraz więcej z nich jest rozproszonych pomiędzy wiele centrów, laboratoriów i komputerów. Danych takich także bardzo często jest zbyt wiele aby przetwarzanie tylko na jednej maszynie przynosiło zadowalające rezultaty. Wiążę się to z coraz bardziej popularnym pojęciem Big Data. Big Data jest to termin odnoszący się do dużych, zmiennych oraz różnorodnych zbiorów danych, których przetwarzanie i analiza jest trudna ale też wartościowa, bowiem może prowadzić do zdobycia nowej wiedzy [3]. W epoce Big Data, chcąc dokonać klasyfikacji, grupowania bądź jakiejkolwiek innej operacji istnieje często potrzeba opracowania nowych rozwiązań i algorytmów, bądź też udoskonalania starych.

    W dotychczasowym podejściu do eksploracji danych w przypadku rozproszonych danych pojawia się oczywisty problem — wszystkie dane te trzeba przetransmitować do jednostki bądź serwera, która ma wykonać zadaną operację. Nie stanowi to problemu, jeżeli danych nie jest zbyt wiele, bądź też użytkownicy dysponują szybkimi łączami. Jeżeli jednak danych do przesłania jest bardzo dużo skutkuje to znacznie wydłużonym czasem odpowiedzi oraz bardzo dużym obciążeniem sieci. Warto jako przykład przywołać NASA Earth Observing System (EOS). Dane z tego systemu przechowywane są w wielu, ponad tysiąc czterystu rozproszonych bazach danych, rozsianych po całym terytorium Stanów Zjednoczonych. Przy założeniu, że codziennie do jednej takiej bazy trafia kilkaset gigabajtów danych pochodzących z różnych satelitów i systemów pomiarowych widać, że wręcz niemożliwym staje się wykorzystanie tradycyjnego podejścia do zagadnienia [4].

    Często bywa tak, że dane rozproszone nie mogą w ogóle zostać nigdzie przetransmitowane nawet jeżeli ich ilość na to pozwala. Jest to podyktowane ograniczeniami prawnymi dotyczącymi danych wrażliwych bądź chronionych albo po prostu względami bezpieczeństwa. Jako przykład można rozpatrzyć bank, który posiada lokalne (krajowe) dane o swoich klientach i ich transakcjach. W tradycyjnym podejściu eksploracji danych, dane te musiałyby zostać przesłane w jedno miejsce celem wykonania obliczeń, co w wielu przypadkach może być działaniem niepożądanym.

    Jak widać powyżej, upowszechnienie się rozproszenia danych, które miały być analizowane i monitorowane musiało pociągnąć za sobą rozwój i opracowanie algorytmów i metod, które byłyby w stanie działać na takich danych rozproszonych.

    Rysunki 1.1 oraz 1.2. przedstawiają schematy centralnego oraz rozproszonego podejścia do eksploracji danych, znajdujących się na wielu osobnych maszynach.

  • Rysunek 1.2. Podejście rozproszone

    1.2. Przegląd literatury

    Do tej pory zostało opracowanych Znaczna część przyjmuje założenie, że wszystkie dane, na których ma operować algorytm znajdują się w jednym miejscu.algorytmów opracowano ich wersje równolegle a także algorytmy działające na danych rozproszonych.

    W dziedzinie algorytmówdotyczących danych rozproszonychartykule "A Data-clustering Algorithm on Distributed Memory Multiprocessors"jest implementacją algorytmu kalgorytmu k-środków dotyczy

    Rysunek 1.1. Podejście centralne

    Rysunek 1.2. Podejście rozproszone

    Przegląd literatury

    Do tej pory zostało opracowanych wiele algorytmów z dziedziny eksploracji danych. przyjmuje założenie, że wszystkie dane, na których ma operować algorytm

    znajdują się w jednym miejscu. W celu poprawy wydajności przetwarzania dla istniejących algorytmów opracowano ich wersje równolegle a także algorytmy działające na danych

    W dziedzinie algorytmów grupowania, również powstało wiele interesujących pracdotyczących danych rozproszonych. Jako przykład można wymienić algorytm opisany w

    clustering Algorithm on Distributed Memory Multiprocessors"

    implementacją algorytmu k-środków działającą na rozproszonych środków dotyczy algorytm przedstawiony w artykule "Fast and exact out

    10

    algorytmów z dziedziny eksploracji danych. przyjmuje założenie, że wszystkie dane, na których ma operować algorytm

    W celu poprawy wydajności przetwarzania dla istniejących algorytmów opracowano ich wersje równolegle a także algorytmy działające na danych

    powstało wiele interesujących prac . Jako przykład można wymienić algorytm opisany w

    clustering Algorithm on Distributed Memory Multiprocessors" [6], który to danych. Również

    "Fast and exact out-of-core

  • 11

    and distributed K-Means clustering" [7]. W tym pierwszym, każda ze stron wyznacza niezależnie, bazując na własnych danych środki klastrów a następnie przesyła je do pozostałych stron biorących udział w grupowaniu. Po otrzymaniu środków klastrów ze wszystkich baz danych a przed rozpoczęciem kolejnej iteracji, nowe środki są wyznaczane na podstawie uzyskanych danych.

    Dla algorytmów hierarchicznych także powstały wersje rozproszone. Przykładowo są to algorytmy pochodzące z takich prac jak: "RACHET: An Efficient Cover-Based Merging of Clustering Hierarchies from Distributed Datasets" [8] czy też " Collective, Hierarchical Clustering From Distributed, Heterogeneous Data" [9]. W algorytmach tych, globalny dendrogram jest wyznaczany na podstawie lokalnych modeli – również dendrogramów, wyznaczonych przez każdą ze stron osobno. Warto wspomnieć także algorytm zaproponowany w artykule "Effective and Efficient distributed model-based clustering" [10], będący przykładem rozproszonego algorytmu opartego o konstrukcję modelu danych.

    Niestety, jeżeli chodzi o algorytmy gęstościowe, liczba prac jest mniejsza – jedynym algorytmem dla którego zaproponowano podejście rozproszone jest DBSCAN. Nie udało mi się znaleźć rozwiązań ani dla algorytmu OPTICS ani też dla DENCLUE.

    W przypadku algorytmu DBSCAN najbardziej popularnym rozwiązaniem jest algorytm DBDC [5], który szerzej omówiony zostanie w rozdziale trzecim. Algorytm ten wykorzystuje podejście tworzenia modeli lokalnych i w odrębnej jednostce, na ich podstawie wyznaczanie modelu globalnego.

    Innymi rozproszonymi rozwiązaniami opartymi na algorytmie DBSCAN są algorytmy PENS [11]: a także algorytm opisany w artykule "A new approach for Distributed Density Based Clustering on Grid Platform" [12]. Pierwszy z nich działa w architekturze Peer-to-Peer, natomiast drugi oparty jest o technologię gridową. Mimo, że powyższe dwa algorytmy oparte są na różnych architekturach, wykorzystują podejście takie samo lub nieznacznie zmodyfikowane w stosunku do zastosowanego w algorytmie DBDC, a mianowicie budowanie modeli lokalnych oraz modelu globalnego.

    Ostatnimi czasy, bardzo dużą popularność zyskała platforma do równoległego przetwarzania dużych zbiorów danych – MapReduce [13]. W oparciu o tę platformę powstały dwa kolejne rozwiązania bazujące na algorytmie DBSCAN – algorytm MR-DBSCAN [27] oraz algorytm opisany w artykule "Efficient Map/Reduce-based DBSCAN Algorithm with Optimized Data Partition" [28].

    Na MapReduce bazuje także projekt organizacji Apache Software Foundation – Mahout[14], którego celem jest dostarczenie skalowalnych oraz rozproszonych implementacji algorytmów z zakresu uczenia maszynowego. Projekt ten posiada zaimplementowane algorytmy takie jak naiwny klasyfikator Bayesowski, ukryte modele markowa czy też algorytm k-środków oparty o logikę rozmytą. Niestety nie zostały zaimplementowane do tej pory algorytmy grupowania bazujące na pojęciu gęstości, co więcej Mahout powoli rezygnuje z używania MapReduce na rzecz innego projektu fundacji Apache – Spark [15].

    1.3. Cel i zakres pracy

    W ramach tej pracy zostało przedstawione rozproszone podejście do grupowania danych. Zostały pokazane korzyści uzyskane dzięki zastosowaniu rozwiązań rozproszonych ale także ich wady oraz cechy na które należy zwrócić szczególną uwagę. Został wybrany algorytm DBSCAN bowiem jest on jednym z najbardziej popularnych algorytmów grupowania, potrafi znajdować klastry o różnych kształtach a nawet takie, które są otoczone w całości przez inne. Ponadto algorytm DBSCAN wykorzystuje pojęcie gęstości a nie odległości.

  • 12

    W tym celu został zaimplementowany algorytm DBDC zaproponowany przez trzech naukowców z Uniwersytetu w Monachium. Algorytm ten wykorzystuje przedstawione na rysunku 1.2. podejście do grupowania danych rozproszonych, mianowicie tworzenie modeli lokalnych a w dalszym kroku ich scalanie w procesie grupowania globalnego. Mimo zadowalających wyników, powyższy algorytm nie radzi sobie ze znajdowaniem małych klastrów a ponadto wymaga dokładnego i przemyślanego podania parametrów grupowania (w przeciwnym przypadku na etapie globalnym odrębne klastry mogę zostać połączone w jeden). Znalezienie sposobu na wyznaczanie grup, które są złożone z punktów będących lokalnym szumem również była celem tej pracy.

    Pewną alternatywą może być zaproponowane podejście zakładające, że poszczególne węzły systemu zawierają dane posortowane w ten sposób, że w każdej z baz danych znajdują się punkty z konkretnego przedziału. Rozwiązanie takie cechuje się lepszą jakością grupowania, bliską 100% jednak również wymaga odpowiedniego doboru parametrów.

    Celem pracy było również porównanie rozwiązań pod względem jakości dawanych wyników dla rozmaitych zbiorów danych oraz dla rozproszenia pomiędzy trzy, pięć oraz dziesięć węzłów. Została także porówna liczba transmitowanych punktów służących do wyznaczenia modelu globalnego w obydwu przypadkach.

    1.4. Układ treści

    W rozdziale drugim została omówiona jedna z metod eksploracji danych jaką jest grupowanie. Zostały przedstawione wymagania mu stawiane, podział algorytmów grupowania, najbardziej popularne miary odległości, zastosowanie grupowania w realnym świecie oraz szerzej opisany algorytm DBSCAN.

    Rozdział trzeci zawiera wprowadzenie w dziedzinę grupowania rozproszonego przedstawia algorytm DBDC (Density Based Distributed Clustering). Zostały dokładnie omówione etapy z jakich składa się ten algorytm oraz jego wady i zalety oraz propozycje usprawnień.

    Kolejny, czwarty rozdział opisuje podejście do grupowania jeżeli każda baza danych zawiera dane z konkretnego określonego wcześniej przedziału. Również tutaj omówione są poszczególne lokalne i globalne etapy algorytmu.

    W piątym rozdziale został przedstawiony sposób w jaki wyznaczana jest jakość algorytmów działających na danych rozproszonych, użyte zbiory danych oraz same wyniki przeprowadzonych badań.

    Ostatni rozdział zawiera podsumowanie pracy oraz wnioski z niej płynące.

  • Rozdział 2

    Grupowanie

    W tym rozdziale zostanie danych jaką jest grupowanie. Ponadto, zodległości pomiędzy punktami, podział algorytmów grupowania a także zostanie szerzej omówiony algorytm DBSCAN.

    2.1. Zagadnienie grupowania danych

    Grupowanie jest procesem polegającym na podgrupy, wewnątrz których obiekty są do siebieod obiektów wchodzących w skład

    Na rysunku 2.1 przedstawiona jest przykładowa zawartość bazy danych złożonej z obiektów będących dwuwymiarowymi punktami. Rysgrupowania tychże danych. Jak widać niektóre punkty leżą na tyle blisko siebie i na tyle daleko od innych punktów, że można zaobserwować pewne skupiska danych. Skupiska te (lub inaczej grupy) zostały oznaczone tym samym

    Rysunek 2.1. Zawartość bazy danych

    Grupowanie

    W tym rozdziale zostanie przedstawiona jedna z najważniejszych metod eksploracji Ponadto, zostaną też przedstawione najczęściej

    odległości pomiędzy punktami, podział algorytmów grupowania a także zostanie szerzej omówiony algorytm DBSCAN.

    2.1. Zagadnienie grupowania danych

    Grupowanie jest procesem polegającym na podziale zbioru danych wejściowychktórych obiekty są do siebie maksymalnie podobne oraz różnią

    obiektów wchodzących w skład innych grup. Na rysunku 2.1 przedstawiona jest przykładowa zawartość bazy danych złożonej z

    obiektów będących dwuwymiarowymi punktami. Rysunek 2.2. z kolei przedstawia wynik grupowania tychże danych. Jak widać niektóre punkty leżą na tyle blisko siebie i na tyle daleko od innych punktów, że można zaobserwować pewne skupiska danych. Skupiska te (lub inaczej grupy) zostały oznaczone tym samym kolorem.

    . Zawartość bazy danych Rysunek 2.2. Wynik grupowania

    13

    jedna z najważniejszych metod eksploracji ostaną też przedstawione najczęściej stosowane miary

    odległości pomiędzy punktami, podział algorytmów grupowania a także zostanie szerzej

    2.1. Zagadnienie grupowania danych danych wejściowych na takie

    oraz różnią się znacznie

    Na rysunku 2.1 przedstawiona jest przykładowa zawartość bazy danych złożonej z unek 2.2. z kolei przedstawia wynik

    grupowania tychże danych. Jak widać niektóre punkty leżą na tyle blisko siebie i na tyle daleko od innych punktów, że można zaobserwować pewne skupiska danych. Skupiska te

    Wynik grupowania

  • 14

    Bardziej formalny zapis procesu grupowania może wyglądać następująco: Dany jest zbiór X obiektów (danych wejściowych) xi, takich, że: �� ∈ ��, � = 1,… ,� Grupowaniem G, nazywamy wówczas zbiór grup C: � = {��, ��, … ��}, takich, że:

    • ∀�� ∈ � ∶ |��| > 0 • ∀��, �� ∈ � ∶ � ≠ � ⇒ �� ∩ �� = ∅ • �� ∪ �� ∪ …∪ �� = �

    Formalnie grupowanie można potraktować jako minimalizację błędu kwantyzacji zdefiniowanego następująco [20]: !"# = �$∑ ∑ &��||�� − (�||�$�)���)� , gdzie

    ||•|| to identyfikator odległości, m – liczba elementów podlegających grupowaniu, k liczba grup do których zostaną przydzielone elementy, wji – współczynnik przynależności elementu j do wzorca i ( &�� ∈ [0,1]) oraz vj – wektor odniesienia.

    Ważne jest umiejętne rozróżnienie pojęć grupowania i klasyfikacji. Otóż klasyfikacja polega na przypisaniu etykiety nowemu obiektowi na podstawie znajomości etykiet istniejących danych, podczas gdy grupowanie polega na znalezieniu tychże etykiet opierając się tylko i wyłącznie na zależnościach pomiędzy danymi.

    Grupowanie oczywiście jest dziedziną naukową a więc jak każdej dziedzinie naukowej są mu stawiane pewne wymogi. Do najbardziej istotnych należą:

    • Skalowalność – algorytmy powinny działać nie tylko na niewielkiej ilości danych ale także radzić sobie w sytuacjach gdy tych danych będzie znacząca ilość, atrybuty będą złożone itd. Czas odpowiedzi takiego algorytmu powinien być zadowalający.

    • Minimalna zależność od parametrów wejściowych – dobry algorytm grupowania nie powinien dawać diametralnie różnych wyników dla różnych parametrów wejściowych, których liczba również powinna być minimalna. Algorytm nie powinien też być od nich zbytnio zależny.

    • Możliwość wykrywania grup o dowolnym kształcie. • Radzenie sobie z danymi zaszumionymi.

    Do najważniejszych zastosowań grupowania można wymienić:

    • segmentacja bazy klientów banków, towarzystw ubezpieczeniowych, firm telekomunikacyjnych etc.,

    • grupowanie dokumentów tekstowych bądź stron internetowych na podstawie ich zawartości,

    • rozpoznawanie obrazów, • biologia - grupowanie gatunków na podstawie informacji genetycznej, • medycyna - grupowanie pacjentów na podstawie objawów chorób (przykładowo

    identyfikacja typu depresji na podstawie towarzyszących jej objawów),

  • 15

    • wykrywanie rozmaitych odchyleń od norm, które mogą być interpretowane jako przestępstwa w handlu elektronicznym, bądź oszustwa związane z kartami kredytowymi na przykład bardzo kosztowne zakupy w krótkim przedziale czasu.

    2.2. Miary podobieństwa stosowane w

    grupowaniu

    Sposób, w jaki określa się podobieństwo między obiektami podlegającymi grupowaniu ma kluczowe znaczenie dla jego wyników Do jego określania używa się różnych miar podobieństwa (odległości), które to zostały omówione poniżej. Wcześniej jednak, należy podać warunki jakie musi spełniać każda z nich [1]:

    • -.�, /) ≥ 0 • -.�, �) = 0 • -.�, /) = -./, �) • -.�, /) ≤ -.�, 2) + -./, 2),

    gdzie d(x,y) to odległość między obiektami x i y.

    Przy założeniu liczbowej wartości każdego atrybutu można zdefiniować miarę odległości a więc i podobieństwa między obiektami. Istnieje wiele miar podobieństwa. Poniżej zostały przedstawione najważniejsze z nich:

    Miara euklidesowa - jest prawdopodobnie najczęściej używaną i najbardziej popularną miarą odległości. Miara ta, to zwykła, geometryczna odległość w przestrzeni n-wymiarowej.

    -.�, /) = 45.�� − /�)���)6

    Miara Manhattan (miejska) – jest sumą różnicy odległości w każdym z wymiarów z osobna.

    -.�, /) = 5|�� − /�|��)6 Miara Czebyszewa – maksymalna odległość spośród odległości wyznaczonych dla każdego z wymiaru z osobna. -.�, /) = max |�� − /�|

    Miara Minkowskiego – uogólnienia miara odległości w przestrzeni euklidesowej. W przypadku gdy parametr q=1 miara ta staje się miarą Manhattan, dla q=1 miarą euklidesową, natomiast dla q=∞ jest to miara Czebyszewa

  • 16

    -.�, /) = 45.|�� − /�|):��)6;

    W pracy tej jako miara podobieństwa między obiektami będzie używana miara Euklidesowa. Ponadto, zostało przyjęte, że obiekt (punkt) podlegający grupowaniu jest reprezentowany jako wektor w przestrzeni n-wymiarowej o postaci [u1,u2,….un], gdzie ui oznacza wartość i-tej współrzędnej

    2.3. Podział algorytmów grupowania

    Do tej pory zostało opracowanych tak wiele algorytmów grupowania, że omówienie każdego z nich nawet bardzo zwięźle jest zadaniem wręcz niemożliwym. Algorytmy te różnią się głównie sposobem przetwarzania danych, zastosowaniem, a także samą definicją pojęcia grupy. Niestety trudno dokonać pełnej klasyfikacji, bowiem wiele z algorytmów może posiadać cechy kwalifikujące do więcej niż jednej kategorii. Ogólnie, algorytmy grupowania można podzielić następująco.

    Algorytmy iteracyjno-optymalizacyjne – są to najprostsze algorytmy grupowania takie

    jak k-środków (ang. k-means) lub k-median (ang. k-medoids). Ich celem jest podział zbioru n danych wejściowych na zadaną liczbę (k) grup, a więc najważniejszym parametrem algorytmów iteracyjno-optymalizacyjnych (jak i wielu innych) jest liczba grup jakie muszą zostać znalezione. Warunkiem jaki muszę spełniać wyniki algorytmów tego typu jest fakt, że każdy obiekt nawet oddalony od pozostałych musi przynależeć do jakiejś grupy.

    W pierwszej fazie odbywa się wstępne grupowanie obiektów – dane są przypisane do pewnej grupy i jeżeli podział nie jest satysfakcjonujący następuje relokacja obiektów, czyli ich przeniesienie z jednej grupy do innej. Bardzo często uzyskanie poprawnych wyników wiąże się z wieloma iteracjami a przeszukanie całej przestrzeni możliwych sposobów podziału zbioru wejściowego na k podprzestrzeni jest praktycznie nierealizowalne. W praktyce algorytm taki jest uruchamiany kilkakrotnie dla różnych podziałów początkowych a jako wynik końcowy wybierany jest najlepszy z otrzymanych podziałów. Poniżej został ukazany przykładowy algorytm oparty na podziale – algorytm k-środków.

    K-Means (SetOfPoints, k)

    Losowo wybierz k punktów będących początkowo środkami k klastrów;

    WHILE występują zmiany przydziału obiektów do grup DO

    Przypisz kaŜdy punkt do tego klastra, do którego odległość od

    jego środka jest najmniejsza;

    Uaktualnij środki klastrów w ten sposób, Ŝe środkiem jest

    średnia współrzędnych punktów danego klastra;

    END WHILE;

    END; //K-Means

    Algorytmy hierarchiczne – jak sama nazwa wskazuje algorytmy hierarchiczne

    hierarchicznie dekomponują zadany zbiór danych. Wyróżniane są tutaj dwa podejścia: zstępujące (ang. top-down) oraz wstępujące (ang. bottom-up). W podejściu zstępującym wszystkie rozpatrywane obiekty początkowo należą do jednego klastra, który w dalszych iteracjach jest dzielony na mniejsze a te dalej na jeszcze mniejsze. Drugie podejście różni się

  • 17

    tym, że z początku każdy obiekt jest osobną grupą, która w dalszych iteracjach jest łączona z inną tworząc nową, większą grupę.

    Algorytmy hierarchiczne opierają się na pojęciu drzewa, w którym liście reprezentują poszczególne obiekty, natomiast węzły to grupy tych obiektów. Poniżej znajduje się przykładowy zapis algorytmu hierarchicznego używającego podejścia wstępującego.

    Bottom-Up (SetOfPoints)

    KaŜdemu punktowi przypisz osobny klaster;

    WHILE NOT Warunki końcowe DO

    Znajdź najbliŜszą parę klastrów i połącz ją w jeden klaster;

    END WHILE;

    END; //Bottom-Up

    Algorytmy te kończą swe działanie, gdy zajdą zadane warunki końcowe na przykład

    wymagana liczb grup albo iteracji, gdy wszystkie obiekty znajdą się w jednej grupie (wstępujące) albo gdy każdy obiekt to osobny klaster (zstępujące). Ich minusem jest fakt, że gdy jeden krok zostanie wykonany, nie może już zostać cofnięty a algorytm kontynuuje działanie. Przykładami algorytmów hierarchicznych są Chameleon oraz Birch.

    Algorytmy gęstościowe – jest to grupa algorytmów, która obok pojęcia odległości

    wykorzystuje pojęcie gęstości. Główną ideą takich algorytmów jest obserwacja, że wewnątrz grup gęstość punktów jest znacznie większa niż poza nimi. Oznacza to, że dopóki liczba obiektów wokół klastra jest duża (z zadanym parametrem) klaster ten będzie się powiększał.

    Dużą zaletą algorytmów gęstościowych jest możliwość znajdowania grup o dowolnym kształcie, nie tylko sferycznym. Przykładowymi algorytmami z tej dziedziny są DBSCAN, OPTICS oraz DENCLUE.

    Algorytmy oparte o strukturę gridową (siatkową) – przestrzeń obiektów jest dzielona na skończoną liczbę komórek na których wykonywany jest cały proces grupowania. Zaletą tych algorytmów jest skalowalność i możliwość działania dla dużych porcji danych. Szybkość algorytmów nie zależy od liczby danych ale od liczby komórek na jakie została podzielona przestrzeń danych. Przykładowe algorytmy to STING oraz WaveCluster.

    Algorytmy oparte o konstrukcję modelu danych – algorytmy te zakładają pewien model danych dla każdego z klastrów a następnie przypisują do nich obiekty zgodnie z przyjętym modelem. Jednym z takich algorytmów jest algorytm COBWEB.

    2.4. Algorytm DBSCAN

    Algorytm DBSCAN (ang. Density Based Spatial Clustering of Application with Noise) jak już zostało wspomniane wcześniej, jest algorytmem zaliczanym do klasy algorytmów gęstościowych. Został on zaproponowany w 1996 roku przez czterech naukowców: Martina Estera, Hansa-Petera Kriegela, Jörga Sandera oraz Xiaowei'a Xiu w pracy: "A Density-Based Algorithm for Discovering Clusters In Large Spatial Databases with Noise".

    DBSCAN jest jednym z najpopularniejszych oraz najczęściej cytowanych algorytmów grupowania. O jego znaczeniu świadczy fakt przyznania w 2014 roku na konferencji "20th ACM SIDKDD Conference of Knowledge Discovery and Data Mining" w Nowym Jorku nagrody "THE SIGKDD Test of Time", która jest przyznawana pracom wnoszącym znaczy wkład w rozwój metod eksploracji danych.

  • 18

    Do największych zalet tego algorytmu należy znajdowanie grup o różnych, nawet złożonych kształtach, nie tylko sferycznych, odnajdywanie grup otoczonych całkiem przez inne klastry (przykładowy wygląd danych wejściowych ilustruje rysunek poniżej) a także dobre radzenie sobie z danymi zaszumionymi oraz brak konieczności podawania liczby grup jakie mają zostać znalezione – algorytm sam je znajdzie.

    Rysunek 2.3. Wyniki działania algorytmu DBSCAN

    1

    DBSCAN jako wejście przyjmuje dwa parametry. Pierwszy z nich to minimalna ilość punktów wymagana do utworzenia grupy oznaczany jako n lub minPts, natomiast drugi to maksymalny promień sąsiedztwa – ε lub Eps. Samo sąsiedztwo (lub otoczenie) jest to zbiór punktów D leżących w odległości mniejszej bądź równiej Eps od danego punktu p i jest definiowane jako:

    ?.@) = {A ∈ B: -.@, A) ≤ @D}, gdzie d(p,q) oznacza odległość między punktami p i q. Poniżej znajduje się lista podstawowych pojęć związanych z algorytmem DBSCAN. Rdzeń (ang. core point) – punkt p spełniający warunek taki, że w jego epsilonowym sąsiedztwie znajduje się co najmniej minPts punktów. |?.@)| ≥ ��EFGD Punkt graniczny (ang. border point) – punkt, który nie jest rdzeniem ale jest osiągalny z innego rdzenia. Stwierdzenie, że jeden punkt jest osiągalny z innego punktu zostało wyjaśnione w dalszej części.

    1 Przedstawiony zbiór danych został zaprezentowany w artykule [21]

  • 19

    Rysunek 2.4. Rdzeń (p), punkt graniczny (q) oraz szum (r)

    Bezpośrednia osiągalność (ang. directly density-reachable) – punkt p jest bezpośrednio osiągalny z punktu q jeśli:

    • @ ∈ ?.A) – punkt p leży w epsilonowym sąsiedztwie punktu q • |?.A)| ≥ ��EFGD– punkt q jest rdzeniem

    Osiągalność punktu (ang. density-reachable)- punkt p jest osiągalny z punktu q wtedy, jeśli istnieje taki zbiór punktów p1…pn, p1=q, pn=p oraz każdy punkt pi+1 jest bezpośrednio osiągalny z punktu pi.

    Rysunek 2.5. Osiągalność punktów q i r

    Gęstościowe połączenie (ang. density-connected)- punkt r jest gęstościowo połączony z punktem q, jeżeli istnieje taki punkt p, że obydwa punkty r i q są z niego osiągalne.

    Rysunek 2.6. Gęstościowe połączenie punktów q i r

  • 20

    Grupa, klaster (ang. cluster) – grupą nazywa się taki podzbiór wszystkich rozpatrywanych punktów, spełniający następujące warunki:

    • Jeżeli punkt p należy do grupy a punkt q jest z niego osiągalny, to punkt q również należy do tej grupy.

    • Jeżeli dwa punkty należą do tej samej grupy, to są one gęstościowo połączone. Szum (ang. noise) – jest to podzbiór wszystkich punktów z bazy danych nie należący do żadnej znalezionej grupy. Przykładowy punkt będący szumem został przedstawiony na rysunku 2.4.

    Poniżej został przedstawiony zapis algorytmu DBSCAN w pseudokodzie pochodzący z artykułu [17] a w dalszej części znajduje się jego bardziej dokładny opis: DBSCAN(SetOfPoints, Eps, MinPts)

    //SetOfPoints is UNCLASSIFIED

    ClusterId := nextId(NOISE);

    FOR i FROM 1 TO SetOfPoints.size DO

    Point := SetOfPoints.get(i);

    IF Point.CiId = UNCLASSIFIED THEN

    IF ExpandCluster(SetOfPoints,Point,ClusterId,Eps,MinPts) THEN

    ClusterId := nextId(ClusterId);

    END IF;

    END IF;

    END FOR;

    END; // DBSCAN

    ExpandCluster(SetOfPoints,Point,ClId,Eps,MinPts) : Boolean

    seeds :=SetOfPoints.regionQuery(Point,Eps);

    IF seeds.size= MinPts THEN

    FOR i FROM 1 TO result.size DO

    resultP := result.get(i);

    IF resultP.ClId IN (UNCLASSIFIED, NOISE} THEN

    IF resultP.ClId = UNCLASSIFIED THEN

    seeds.append(resultP)

    END IF;

    SetOfPoints.changeCiId(resultP, ClId)

    END IF; //UNCLASSIFIED or NOISE

    END FOR;

    END IF; //result.size >= MinPts

    Seeds.delete(currentP)

    END WHILE; //seeds Empty

    RETURN True ;

    END IF

    END; //ExpandCluster

    Algorytm DBSCAN po kolei przegląda wszystkie nieodwiedzone (unclassified) jeszcze

    punkty. Dla każdego z nich w metodzie expandCluster() sprawdzana jest liczba wszystkich punktów znajdujących się w jego otoczeniu. Jeżeli liczba takich punktów jest mniejsza niż

  • 21

    parametr minPts dany punkt jest tymczasowo oznaczany jako szum a algorytm bierze kolejny z nierozpatrywanych jeszcze punktów. W przeciwnym wypadku tworzona jest nowa grupa składająca się początkowo z punktów z otoczenia bieżącego rdzenia (zbiór seeds).

    Dla każdego punktu należącego do zbioru seeds sprawdzana jest ilość sąsiadów. Jeżeli liczba ta jest większa bądź równa minPts wszystkie nieodwiedzone wcześniej punkty z sąsiedztwa rozpatrywanego punktu są dołączane do zbioru seeds a więc klaster jest rozszerzany. Jeżeli w takim sąsiedztwie znajdą się punkty wcześniej oznaczone jako szum zostaną one dodane do klastra. Jego rozszerzanie kończy się w momencie gdy wszystkie punkty ze zbioru seeds zostaną zbadane.

    DBSCAN oprócz zalet posiada także wady. Algorytm ten nie jest do końca

    deterministyczny – jego wyniki zależą od kolejności w jakiej przeglądane są dane. Punkt graniczny, który jest już przypisany do jednej grupy może później znaleźć się w innej jeżeli leży dostatecznie niej blisko - zostało to zobrazowane na rysunku 2.7.

    Rysunek 2.7. Przykład ilustrujący brak pełnej deterministyczności algorytmu DBSCAN

    Jeżeli przez algorytm jako pierwszy z pary punktów D i F zostanie rozpatrzony punkt D, wówczas punkt E (żółty) leżący w jego otoczeniu zostanie przypisany do grupy "czerwonej". Następnie przy rozpatrywaniu punktu F, wszystkie punkty z jego otoczenia znajdą się w tej samej grupie do której należy F, a więc punkt E zostanie zabrany do grupy "zielonej". Odwrotna sytuacja będzie miała miejsce jeżeli pierwszy zostanie wzięty punkt F – wtedy w wyniku grupowania punkt E będzie "czerwony".

    Sytuacja ta na szczęście nie jest częsta a co najważniejsze nie ma dużego wpływu na wyniki grupowania.

  • 22

    Rozdział 3

    Algorytm DBDC

    Niekiedy liczba danych jakie należy przetworzyć jest na tyle duża, że pojedyncza maszyna nawet jeżeli jest wysokiej klasy może sobie nie dać z nimi rady. Jednym z rozwiązań jest zrównoleglenie obliczeń. Dzięki wykorzystaniu mocy obliczeniowej kilku lub kilkunastu procesorów, czas potrzebny na wykonanie algorytmów może znacząco zmaleć. Podejście takie mimo, że początkowo może wydawać się proste, w rzeczywistości takim może nie być. Algorytmy, który były zaprojektowane do operowania na danych pochodzących z jednego źródła, często bardzo trudno jest zrównoleglić. Wymaga to odpowiedniej dekompozycji zadań, podziału danych wejściowych oraz zapewnienia synchronizacji, komunikacji oraz równomiernego obciążenia wszystkich jednostek obliczeniowych.

    Współcześnie coraz częściej dane nie znajdują się w jednym miejscu ale są rozproszone w wielu bazach danych znajdujących się w różnych miejscach na świecie. Podejście w którym dane z każdej bazy przetwarzane są z osobna a uzyskane wyniki lokalne są łączone w jeden wspólny model również może okazać się bardziej skomplikowane. W takiej sytuacji zachodzi konieczność opracowania algorytmów operujących na takich niepełnych danych tak aby uzyskane wyniki charakteryzowały się jak największą jakością, być może nawet porównywalną z jakością algorytmu który operowałby na całości danych.

    Jak można zauważyć powyższe dwa podejścia są do siebie bardzo podobne – w obydwu z nich obliczenia prowadzone są równolegle a na koniec, wyniki muszą tworzyć jeden wspólny model. Pomimo widocznego podobieństwa warto w tym miejscu wskazać różnicę pomiędzy algorytmem równoległym a rozproszonym. • Algorytm równoległy – dane znajdują się w jednym miejscu. Na początku powinny

    zostać odpowiednio rozdzielone i przypisane do odpowiednich węzłów, które dane te przetworzą niezależnie. W ostatnim kroku wyniki zwrócone przez poszczególne jednostki powinny zostać odpowiednio złączone (scalone).

    • Algorytm rozproszony – dane rozproszone pomiędzy wiele niezależnych baz danych. Również tutaj występuje etap przetwarzania równoległego – skoro system jest złożony z pewnej liczby osobnych węzłów przechowujących dane, poszczególne jednostki mogą przetwarzać swoje dane równolegle. Po tym etapie również konieczny jest proces scalenia cząstkowych danych.

    Konieczność poradzenia sobie z ogromem danych a także z ich rozproszeniem skutkowała

    opracowaniem wielu równoległych oraz rozproszonych algorytmów eksploracji danych.

  • 23

    Rozproszona eksploracja danych (ang. Distributed data mining, DDM) jest dziedziną, która powstała stosunkowo niedawno, a która szczególną wagę przykłada do eksploracji danych ze źródeł rozproszonych biorąc pod uwagę także problemy takie jak koszta transmisji danych etc. W literaturze dotyczącej DDM można znaleźć dwa podejścia co do sposobu rozproszenia danych: podejście homogeniczne oraz heterogeniczne[18].

    • podejście homogeniczne – dane są podzielone horyzontalnie to znaczy, że każda baza danych zawiera te same atrybuty (kolumny) ale różne rekordy danych.

    • podejście heterogeniczne – dane są podzielone wertykalnie, co można sobie wyobrazić jako podzielenie jednej dużej tabeli 'pionowo' tak, że rozproszona tabela zawiera różne atrybuty (kolumny) dla tych samych (o tym samym identyfikatorze) wierszy danych. Ważne jest aby odpowiednie wiersze posiadały taki sam identyfikator pozwalający na właściwe powiązanie danych.

    Podejścia homogeniczne oraz heterogeniczne zostały przedstawione na poniższych rysunkach. W dalszej części pracy przyjęte zostało założenie, że dane w każdej z baz są homogeniczne.

    Nazwisko Typ Specjalność Miasto

    Nowacki Lekarz Reumatologia Poznań

    Kowalczyk Lekarz - Poznań

    Radomska Pielęgniarka - Warszawa

    Nazwisko Typ Specjalność Miasto

    Cieślik Lekarz Neurologia Gdańsk

    Grodecka Pielęgniarka - Poznań

    Zieliński Aptekarz - Gdańsk

    Tabele 3.1. – 3.2. Przykład podejścia homogenicznego

    ID Nazwisko Typ Specjalność Miasto

    1452 Nowacki Lekarz Reumatologia Poznań

    1129 Kowalczyk Lekarz - Poznań

    1517 Radomska Pielęgniarka - Warszawa

    ID Data ur. Tytuł

    1452 01.08.1947 Prof.

    1129 21.11.1971 -

    1517 15.03.1984 -

    Tabele 3.3. – 3.4. Przykład podejścia heterogenicznego

    Większość algorytmów rozproszonej eksploracji danych opiera się na następującym schemacie [19]:

    • Wykonanie obliczeń na lokalnych danych i na tej podstawie wygenerowanie modelu przez każdy węzeł systemu.

    • Przesłanie lokalnych modeli do węzła centralnego celem wyznaczenia modelu globalnego

  • • Na podstawie zebranych danych z lokalnych baz wyznaczenie globalnego modelu • Aktualizacja danych na podstawie modelu globalnego w każdej ze stro W tym rozdziale zostanie zaprezentowany algorytm DB

    danych wykorzystujący zaprezentowane powyżej podejście z wyznaczaniem lokalnych modeli, zaproponowany, jak to zostało wspomniane we wstępie do pracy, przez trzech naukowców z Monachium – Eshrefa Januzaja, Hansa Petera Kriegla oraz Martina Pfeifle w 2004 roku. W następnym rozdziale zaś zdanych rozproszonych, jednak baz, to znaczy, każda rozproszona baza zawiera dane z pewnego zakresu wszystkich danych.

    3.1. Zarys problemu

    Algorytm przedstawiony w tym rozdzialelokalnych dla każdej z rozproszonych stron a następnie budowania modelu globalnego dla wszystkich danych na podstawie otrzymanych lokalnych modelialgorytmu został zaprezentowany na rysunku

    Dalej, w tym podrozdziale został przedstawiony główny problem jaki pojawia się przy konieczności grupowania rozproszonych danych

    Na rysunkach (3.2. – 3.4.) danych, wchodzących w skład rozproszonego systemu.

    Na podstawie zebranych danych z lokalnych baz wyznaczenie globalnego modelu Aktualizacja danych na podstawie modelu globalnego w każdej ze stro

    W tym rozdziale zostanie zaprezentowany algorytm DBDC operujący na rozproszonych danych wykorzystujący zaprezentowane powyżej podejście z wyznaczaniem lokalnych

    , zaproponowany, jak to zostało wspomniane we wstępie do pracy, przez trzech Eshrefa Januzaja, Hansa Petera Kriegla oraz Martina Pfeifle w

    W następnym rozdziale zaś zostanie także przedstawiony algorytm rozproszonych, jednak przy założeniu, że są one wstępnie umieszczone

    baz, to znaczy, każda rozproszona baza zawiera dane z pewnego zakresu wszystkich danych.

    Zarys problemu

    Algorytm przedstawiony w tym rozdziale wykorzystuje podejście konstruowania modeli lokalnych dla każdej z rozproszonych stron a następnie budowania modelu globalnego dla wszystkich danych na podstawie otrzymanych lokalnych modeli. Ogólny schemat takiego algorytmu został zaprezentowany na rysunku poniżej:

    Rysunek 3.1. Schemat algorytmu

    tym podrozdziale został przedstawiony główny problem jaki pojawia się przy konieczności grupowania rozproszonych danych.

    3.4.) zostały pokazane punkty znajdujące się w wchodzących w skład rozproszonego systemu.

    24

    Na podstawie zebranych danych z lokalnych baz wyznaczenie globalnego modelu Aktualizacja danych na podstawie modelu globalnego w każdej ze stron systemu

    operujący na rozproszonych danych wykorzystujący zaprezentowane powyżej podejście z wyznaczaniem lokalnych

    , zaproponowany, jak to zostało wspomniane we wstępie do pracy, przez trzech Eshrefa Januzaja, Hansa Petera Kriegla oraz Martina Pfeifle w

    ostanie także przedstawiony algorytm działający na umieszczone w każdej z

    baz, to znaczy, każda rozproszona baza zawiera dane z pewnego zakresu wszystkich danych.

    podejście konstruowania modeli lokalnych dla każdej z rozproszonych stron a następnie budowania modelu globalnego dla

    . Ogólny schemat takiego

    tym podrozdziale został przedstawiony główny problem jaki pojawia się przy

    każdej z trzech baz

  • 25

    Rysunki 3.2.-3.4. Zawartość poszczególnych baz danych

    Jak widać na rysunkach 3.2 – 3.4 każda baza zawiera pewną ilość różnych punktów. Najważniejsze pytanie które użytkownicy takiego systemu sobie zadają brzmi: do jakich grup należałyby zawarte w lokalnej bazie danych punkty, biorąc pod uwagę dane nie tylko 'własne' ale z całego systemu? Odpowiedź na to pytanie została przedstawiona na rysunku 3.8 Niestety, uzyskanie takiego rezultatu może być zadaniem trudnym a wyniki grupowania na danych lokalnych mogą w mniejszym lub większym stopniu odbiegać od rzeczywistości, co też zostało zobrazowane na rysunkach 3.5.-3.7.

  • 26

    Rysunki 3.5.- 3.7. Lokalne wyniki grupowań

    Rysunek 3.8. Oczekiwany rezultat grupowania

    Uruchamiając dla każdego zbioru danych niezależnie algorytm DBSCAN udaje się oczywiście znaleźć kilka grup (są one zaznaczone na rysunkach 3.5.-3.7.). Niestety wyniki te

  • 27

    są dalekie od rzeczywistych bowiem, na pierwszy rzut oka można dostrzec, że kilka grup znalezionych lokalnie w rzeczywistości tworzy jeden większy klaster. Podobnie – punkty uznane lokalnie za szum, w rzeczywistości należą do jakiegoś klastra. Celem dobrego algorytmu rozproszonego byłyby wynik przypisujący dwóm podobnym punktom taki sam numer grupy mimo ich faktycznej przynależności do różnych baz danych.

    3.2. Opis algorytmu

    Algorytm przedstawiony w tym rozdziale składa się z dwóch etapów: • grupowanie lokalne – każda lokalna baza danych wykorzystując algorytm DBSCAN

    dokonuje grupowania swoich danych niezależnie od pozostałych. Warto zauważyć, że przetwarzanie takie może być wykonywane równolegle, choć nie musi.

    • grupowanie globalne – grupowanie, również przy użyciu algorytmu DBSCAN wybranych punktów ze wszystkich baz lokalnych najlepiej charakteryzujących zawartość każdej z tych baz.

    Pierwszy etap algorytmu polega na wykonaniu grupowania osobno dla punktów z każdej

    bazy danych. Oczywisty jest fakt, że znalezione na etapie grupowania lokalnego grupy, uwzględniając punkty z innych baz danych mogą okazać się fragmentami większych, rozproszonych skupisk danych. Z tego powodu bardzo istotnym krokiem pomiędzy etapem lokalnym a globalnym jest taki dobór punktów, który będzie jak dokładniej odwzorowywał zawartość swojej bazy a przy tym zachowa rozsądne rozmiary. Zbiór takich punktów nazywany będzie dalej modelem lokalnym.

    Mając tak zdefiniowany model dla każdej z baz niezależnie, kolejnym krokiem jest etap grupowania globalnego. Celem tego etapu jest sprawdzenie czy mniejsze, lokalne klastry są w rzeczywistości częścią większego klastra, rozproszonego pomiędzy kilka baz.

    Oczywiście pozostaje jeszcze etap aktualizacji grup. Jeżeli lokalny klaster jest fragmentem większego, globalnego, należy taką informację przesłać z powrotem do odpowiedniego węzła oraz przypisać wskazanym punktom znaleziony nowy, globalny numer grupy. Co więcej, należy też ponownie rozpatrzyć punkty, które na etapie grupowania lokalnego były zakwalifikowane jako szum czy być może nie są faktycznie częścią jakiegoś klastra znajdującego się w innej bazie danych.

    Biorąc pod uwagę powyższe rozważania można wspomniane wcześniej dwa etapy zastąpić czterema:

    • grupowanie lokalne • stworzenie odpowiedniego modelu lokalnego • grupowanie globalne na podstawie danych z modeli lokalnych • aktualizacja grup (przypisanie wszystkim punktom globalnych numerów grup)

    Jako, że etap grupowania jest stosunkowo prosty (wykorzystywany jest tutaj standardowy

    algorytm DBSCAN) w dalszej części pracy zostanie omówiony sposób wyznaczania modeli lokalnych oraz modelu globalnego a także sposób uaktualniania grup danych lokalnych.

    3.3. Budowanie modeli lokalnych

    Po dokonaniu grupowania algorytmem DBSCAN, a więc mając już znalezione wszystkie grupy danych oraz punkty będące szumem można przystąpić do etapu wyznaczania modelu lokalnego. Jak to zostało wcześniej wspomniane modelem lokalnym jest pewien zbiór

  • 28

    punktów z lokalnej bazy danych, który jak najdokładniej odzwierciedla rozkład oraz kształt znalezionych grup a także zachowuje rozsądny rozmiar w stosunku do rozmiaru wszystkich lokalnych danych. Wszystkie takie wyznaczone modele lokalne zostaną później rozpatrzone przez węzeł centralny i to na nich zostanie wykonane grupowanie globalne.

    W tym podrozdziale zostanie przedstawione jak taki lokalny model danych skonstruować, co powinien zawierać oraz jaka będzie jego użyteczność w dalszej części.

    Załóżmy, że wynik grupowania jednej z baz danych wygląda następująco:

    Rysunek 3.9. Przykładowy wynik grupowania lokalnych danych

    Jak widać na rysunku, zostało znalezionych pięć grup. Brak jest jednak pewności, że: • uwzględniając punkty z innych baz danych dwie lub więcej lokalne grupy są w

    rzeczywistości częścią jednej większej (na przykład grupy niebieska, zielona i czerwona to w rzeczywistości jedna grupa a "brakujące" punkty pomiędzy nimi znajdują się w kolejnej bazie danych.

    • znaleziona grupa jest tylko fragmentem większej grupy składającej się też z punktów z innych baz

    • punkty oznaczone jako szum (na rysunku jako znaki "x") w rzeczywistości należą do jakiejś grupy.

    Aby uzyskać jak najdokładniejszy rezultat grupowania oczywiście najlepiej byłoby

    rozpatrzyć wszystkie punkty ze wszystkich baz danych równocześnie (a więc przesłać je do węzła centralnego) co oczywiście nie jest dopuszczalne. Celem jest więc taki wybór punktów aby możliwie jak najdokładniej reprezentował wyniki grupowania lokalnego. Nietrudno zauważyć, że zbiór taki im będzie większy, tym bardziej dokładne wyniki zostaną uzyskane podczas grupowania globalnego, jednakże zbyt duży zbiór będzie miał oczywiście negatywny wpływ na wydajność a co bez wątpienia również jest istotną kwestią.

    Oczywiście zamiast przesyłać wszystkie punkty z danej bazy danych można przesłać na przykład te, które wchodzą w skład jakichś grup i w węźle centralnym próbować na takich danych dokonać grupowania globalnego. Niestety, rozwiązanie to sprawdzi się tylko w przypadkach, gdzie większość danych stanowi szum.

    Znacznie częściej w wyniku grupowania większość obiektów wchodzi w skład jakichś grup a szum jest rzadkością (celem grupowania jest przecież znajdowanie grup a nie szumu) a więc koniecznością było przesłanie znacznej liczby punktów. Można to zauważyć również na

  • 29

    rysunku 3.9, gdzie tylko kilka punków stanowi szum a większość należy do znalezionych grup. Widać więc, że podejście takie jest bezcelowe.

    Innym pomysłem jest wybór tylko rdzeni, jako, że dosyć dobrze odzwierciedlają one znalezione grupy. Niestety również tutaj występuje podobny problem – w szczególnie gęstych rejonach a także jeśli parametr minPts nie jest zbyt duży, obok siebie może znajdować się bardzo wiele punktów będących rdzeniami. Sytuacja taka oczywiście zapewni doskonałą dokładność i dobrze odzwierciedli kształt grup danych ale spowoduje też spory narzut obliczeniowy. W skrajnych przypadkach jeżeli Eps jest duży wszystkie punkty klastra, nawet te leżące na jego obrzeżach mogą być rdzeniami co prowadzi do wcześniej opisywanej sytuacji. Przykład ten dobrze ilustruje rysunek 3.10. – zakładając, że wszystkie punkty poniżej to rdzenie, w samym tylko otoczeniu punktu A jest ich dosyć dużo a więc rozpatrywanie ich wszystkich mija się z celem.

    Rysunek 3.10. Gęstość rdzeni w swoim otoczeniu

    Rozważania na temat wyboru odpowiedniego zbioru punktów charakteryzującego dane

    grupy a wiec tworzącego model lokalnego rozpoczęły się od rozpatrzenia trywialnego zbioru – zbioru zawierającego wszystkie punkty. Potem jedynie te punkty, wchodzące w skład znalezionych grup a dalej, zawężając ten zbiór jeszcze bardziej – do punktów będących rdzeniami, co również nie jest w żadnej mierze satysfakcjonujące. W tym miejscu chciałbym się skupić na sposobie wyboru odpowiedniego zbioru punktów (zbioru reprezentantów) charakteryzującego lokalne grupy a więc determinującego lokalny model obliczeń.

    Jak to zostało wcześniej wspomniane rdzenie to punkty, które dosyć dobrze

    odzwierciedlają tworzone grupy, jednak jest ich zbyt dużo aby zastosowanie ich jako model lokalny mogło być użyteczne (rys. 3.10.), dlatego pożądany jest zbiór o wiele mniej liczny ale o podobnej skuteczności.

    Można zauważyć że jeżeli jakiś rdzeń zawiera w swoim otoczeniu inne takie punkty, jak to widać na rysunku 3.10., do dalszych obliczeń wystarczy wybrać tylko jeden z nich. Idąc dalej tym rozumowaniem obszar grupy można dosyć dokładnie pokryć takimi punktami (nazwijmy je punktami reprezentującymi). Punkty takie charakteryzują się tym, że:

    • każdy z nich jest rdzeniem: ∀� ∈ �H@I:� ∈ �JKHI

    • w epsilonowym otoczeniu takiego punktu nie może się znaleźć inny punkt reprezentujący: ∀�� , �� ∈ �H@I: ⌐�� ∈ ?.��)

  • 30

    • każdy rdzeń musi znajdować się w otoczeniu jakiegoś punktu reprezentującego: ∀� ∈ �JKHI ∃� ∈ �H@I: � ∈ ?.�)

    gdzie Corec, Repc, to odpowiednio zbiory wszystkich rdzeni oraz wszystkich punktów reprezentujących dla danego klastra C.

    To, że punkty reprezentacyjne dobrze odzwierciedlają rozkład danych pokazują dwa poniższe rysunki. Co bardzo ważne ich liczba jest też o wiele mniejsza niż liczba punktów, które są rdzeniami. Przykładowa baza danych z rysunku 3.9 jest złożona z 446 punktów. Liczba rdzeni wynosi 368 wszystkich punktów (82%), natomiast liczba punktów reprezentujących to 55. Stanowi to tylko 12% wszystkich danych z bazy a więc jest to wynik bardzo zadowalający.

    Rysunek 3.11. Rdzenie

    Rysunek 3.12. Zbiór punktów reprezentujących

  • 31

    Jak to było wcześniej wspomniane, że punkty reprezentujące to rdzenie, które nie mogą znaleźć się w swoim sąsiedztwie. Zostało to przedstawione na poniższym rysunku:

    Rysunek 3.13. Punkty reprezentujące

    Jak widać, jako punkty reprezentujące mogą zostać wybrane punkty A oraz C, albowiem

    nie leżą one w swoim otoczeniu albo punkt B. Jeżeli jako reprezentant zostanie wybrany punkt A, nie może nim być B, bo obydwa punkty leżą w swoim sąsiedztwie (ani w ogóle żaden inny rdzeń leżący w otoczeniu A). Natomiast jeżeli jako pierwszy zostanie odwiedzony punkt B, wówczas punkt A nie może być punktem reprezentującym, natomiast punkt C wciąż może nim zostać (nie leży w otoczeniu B).

    Zbiór punktów reprezentujących jest niedeterministyczny. Oznacza, to że w zależności od tego od jakiego punktu rozpocznie się przeglądanie, mogą być wyznaczone różne zbiory punktów reprezentujących (mogą to być zbiory zawierające między innymi punkty A i C albo punkt B)..

    Mając wyznaczone punkty reprezentujące tworzące model lokalny potrzebna jest

    informacja jakie inne punkty taki punkt reprezentuje. Jest to niezbędne podczas etapu aktualizacji grup, kiedy każdy punkt reprezentujący ma przypisany już globalny numer grupy. Zachodzi wówczas potrzeba przypisania tego numeru do pozostałych punktów z lokalnej bazy danych, niewchodzących w skład modelu lokalnego. Opieranie się tutaj tylko na wartości parametru ε jest niewystarczające, co zostało pokazane poniżej.

  • 32

    Rysunek 3.14. Wyznaczanie wartości εRep.

    Rysunek ten jest bardzo podobny do poprzedniego – jeżeli punkt A zostanie wybrany reprezentantem, wówczas nie mogą nim zostać ani B ani D (leżą w otoczeniu A). Punkt A reprezentuje punkty w swoim otoczeniu (czerwone) co oznacza, że punktom tym zostanie przypisany globalny numer klastra taki sam jaki ma A. Niestety, zielone punkty leżące w otoczeniu B i D, nie leżą w otoczeniu A więc nie zostanie im przypisany globalny numer grupy, mimo iż na poziomie lokalnym należą do tego samego klastra. Aby sprostać temu wyzwaniu należy znaleźć metodę pozwalającą reprezentować nie tylko punkty we własnym otoczeniu ale również punkty z otoczenia wszystkich rdzeni reprezentowanych przez dany punkt reprezentujący.

    Osiągnąć to można wprowadzając nową wartość εRep, która określa promień w jakim wszystkie punkty są reprezentowane przez dany punkt reprezentacyjny. Wartość ta musi wynosić tyle aby wszystkie punkty z sąsiedztwa rdzeni leżących w otoczeniu punktu reprezentującego mogły być przez niego reprezentowane. Wynika z tego, że εRep równe jest wartości ε powiększonej o odległość do najbardziej oddalonego rdzenia z otoczenia punktu reprezentującego. W przypadku z rysunku 3.14. (załóżmy, że rozpatrujemy tylko B i D) wartość ta będzie wynosić: NO"> = N + -.P, B) (bowiem, -.P, B) > -.P, Q)). Ogólnie więc wartość εRep wynosi:

    NO">O = N +maxR-.�, F�)S , F� ∈

  • 33

    3.4. Wyznaczanie modelu globalnego

    W poprzednim podrozdziale został przedstawiony sposób wyznaczania lokalnego modelu dla każdej rozproszonej bazy danych. Model ten jak wspomniano składa się z punktów reprezentujących wraz przypisanymi im wartościami εRep. W kolejnym kroku wyznaczony model lokalny jest przesyłany do centralnego węzła, gdzie razem z innymi modelami lokalnymi jest wykorzystywany w procesie grupowania globalnego.

    Zadaniem grupowania globalnego jest możliwie jak najdokładniejsze znalezienie grup jakie tworzą wszystkie dane opierając się na dostarczonych lokalnych modelach z każdej bazy. Aby tego dokonać należy w etapie tym sprawdzić czy istnieje możliwość połączenia ze sobą dwóch lub większej ilości lokalnych klastrów, tak aby tworzyły jedną dużą grupę. Zostało to pokazane na rysunkach 3.15. i 3.16.

    Rysunek 3.15. Modele lokalne pochodzące z dwóch baz danych

    Rysunek 3.16. Dane po procesie grupowania globalnego

  • 34

    Powyżej widać, że w procesie grupowania globalnego biorą udział dane zebrane z dwóch baz danych, oznaczone odpowiednio kolorami niebieskim i brązowym. Można zauważyć, że dwa klastry z bazy 1 po uwzględnieniu danych z bazy 2. należą do jednego dużego klastra oznaczonego kolorem niebieskim na rysunku 3.16. Widać także, że niektóre z grup lokalnych są tak naprawdę częściami większych klastrów.

    Grupowanie globalne jest również wykonywane za pomocą algorytmu DBSCAN. Punktami na których to grupowanie będzie wykonane są punkty wchodzące w skład modeli lokalnych z każdej bazy danych biorącej udział w rozproszonym procesie grupowania (rysunki 3.15., 3.16). Kwestią, która wymaga w tym miejscu dodatkowego komentarza jest odpowiedni dobór parametrów tego algorytmu – minPtsg oraz εg oznaczające odpowiednio – minimalną liczbę punktów dla grupowania globalnego oraz wartość epsilon dla tegoż grupowania. Nie jest niczym odkrywczym, że użycie parametrów takich jak w grupowaniu lokalnym nie przyniesie oczekiwanych rezultatów.

    Wiedząc, że jeden punkt reprezentujący jest przedstawicielem innych punktów ze swojej macierzystej bazy danych można próbować wnioskować o wartości parametru minPtsg . Skoro dwa punkty reprezentacyjne z różnych baz danych leżą w swoim otoczeniu, oznacza to, że wchodzą w skład tego samego klastra globalnego. Wartość minPtsg powinna więc wynosić dwa – wystarczy złączyć dwa takie punkty, co oznacza połączenie dwóch lokalnych grup w jedną większą.

    Niestety znalezienie odpowiedniej wartości εg jest trudniejsze. Jak wiadomo punkty reprezentacyjne reprezentują pewne zbiory punktów i leżą w większej odległości od siebie niż ε, dlatego też wartość εg powinna być większa niż ε (przyjęcie wartości mniejszej może spowodować, że niektóre większe klastry, składające się z mniejszych, reprezentowanych przez punkty pochodzące z różnych baz nie zostaną poprawnie znalezione). Z drugiej strony wiadomo, że wartość εRep przypisana do danego punktu reprezentującego jest niewiększa niż dwukrotność ε, a zatem przyjęcie większej wartości dla εg spowoduje, że w jeden mogą zostać scalone klastry lokalne, które w rzeczywistości tworzą różne grupy. Rozważania te prowadzą do wniosku, że wartość parametru εg powinna być nie większa niż dwukrotność ε oraz niemniejsza niż ε a więc: NU ∈ .NV , 2NV), gdzie NV to wartość ε z grupowania lokalnego.

    Najlepszym rozwiązaniem wydaje się dobór tego parametru przez użytkownika na podstawie wartości NO"> pochodzących z modeli lokalnych. Jeśli wartości te są niewielkie to i parametr NU powinien nie być duży. Podobnie jeżeli wartości NO"> są duże to odpowiednio dobrany powinien zostać NU.

    3.5. Aktualizacja grup danych lokalnych

    Po zakończeniu etapu grupowania globalnego wyznaczony model globalny a więc wszystkie punkty reprezentujące wraz z ich globalnymi numerami grup jest transmitowany do każdej lokalnej bazy danych.

    Ostatnim etapem jest teraz przypisanie nowego, globalnego numeru grupy wszystkim danym zawartym w poszczególnych bazach. Polega to na przypisaniu każdemu punktowi numeru klastra jaki ma najbliższy mu przesłany punkt reprezentacyjny.

    Nie jest niczym zaskakującym sytuacja w której punkty oznaczone jako wchodzące w skład różnych grup należą teraz do jednej. Ponadto bardzo ważny jest proces włączania do

  • 35

    grup punktów początkowo oznaczonych jako szum – biorąc pod uwagę dane z innych baz może się okazać, że punkty te należą jednak do jakiejś grupy (Rysunek 3.19.).

    Rysunek 3.17. Przykład przypisywania szumu do grupy globalnej

    Niebieskie punkty pochodzą z jednej lokalnej bazy danych. Jak widać zostały znalezione

    dwa klastry. Ponadto na rysunku można zauważyć dwa punkty A i B będące szumem. Po uwzględnieniu danych z innej baz danych (na rysunku zielone punkty), widać że lokalne klastry to w rzeczywistości fragmenty jednego dużego, globalnego klastra. Widać także, że punkty A i B leżą w otoczeniu innych punktów (mimo, że zlokalizowanych w innej bazie), co oznacza, że nie są szumem na poziomie globalnym.

    Teraz, po wykonaniu grupowania na rozproszonych danych użytkownik jest w stanie zadawać zapytania dotyczące nie tylko znanych mu lokalnych grup ale też wszystkich pozostałych np. znajdź wszystkie punkty ze wszystkich baz należące do tej samej grupy co lokalny punkt A.

    3.6. Wady algorytmu

    Algorytm ten, co zostanie pokazane w rozdziale szóstym daje bardzo dobre rezultaty, niewiele różniące się od wyników dostarczanych przez algorytm, który operuje na całości danych. Niestety, jak można się tego było domyślić wcześniej (bowiem algorytm nie bierze pod uwagę w ogóle punków będących szumem lokalnym), występuje tutaj problem z małymi klastrami, co jest spowodowane tym, że w procesie grupowania globalnego biorą udział tylko punkty reprezentujące. Jeśli punkty tworzące klastry rozmieszczone są w taki sposób, że podczas grupowania lokalnego żaden klaster nie zostanie znaleziony, nie powstanie model lokalny a punkty takie będą oznaczone jako szum. Taka sytuacja może mieć miejsce, jeśli parametr minPts ma zbyt dużą wartość w stosunku do liczby punktów składających się na klaster. Przykładowo, jeżeli parametr minPts=10, dane rozproszone są pomiędzy pięć węzłów a klaster złożony z czterdziestu pięciu punktów został rozproszony równomiernie (a więc po dziewięć punktów na węzeł) wówczas na etapie grupowania lokalnego klaster ten, nie będzie znaleziony (minPts=10) a wszystkie punkty wchodzące w jego skład zostaną uznane za szum. Skrajnym przypadkiem może być takie rozproszenie danych, że mimo iż algorytm referencyjny jest w stanie wyznaczyć grupy danych, algorytm rozproszony znajduje tylko szum. Przypadek taki jest przedstawiony poniżej.

  • 36

    Wykres 3.1 przedstawia zbiór punktów (wraz ze znalezionymi grupami), który następnie został rozproszony pomiędzy trzy węzły – ich zawartość pokazano na wykresach 3.2-3.4 (parametr minPts wynosi 3).

    Wykres 3.1. Wyniki dla algorytmu referencyjnego

    Wykres 3.2. Zawartość pierwszego węzła

    Wykres 3.3. Zawartość drugiego węzła

    0

    2

    4

    6

    8

    10

    12

    0 5 10 15

    y

    x

    Szum

    Klaster 1

    Klaster 2

    0

    2

    4

    6

    8

    10

    12

    0 5 10

    y

    x

    Szum

    0

    2

    4

    6

    8

    10

    12

    0 5 10

    y

    x

    Szum

  • 37

    Wykres 3.4. Zawartość trzeciego węzła

    Wykres 3.5. Wyniki algorytmu dla parametru minPts=3

    Na wykresie 3.1. widać, że dane, które podlegają grupowaniu zawierają dwie grupy

    (złożone z czterech oraz pięciu punktów). Następnie dane te zostały rozproszone w taki sposób, że wspomniane grupy nie mogły zostały odnalezione. Sytuacja taka, w której algorytm nie znajduje niewielkich klastrów na szczęście jest niezbyt częsta, jednak w przy dużym rozproszeniu danych ich ilość może być znaczna.

    Inną wadą tego algorytmu jest konieczność wprowadzenia dodatkowego parametru εg.

    We wstępnie do tej pracy zostało wspomniane, że dobry algorytm grupowania powinien się charakteryzować jak najmniejszą liczbą wymaganych parametrów. Jest to o tyle kłopotliwe bowiem dobranie odpowiedniej wartości εg jest dosyć zajmujące (zła wartość skutkuje na przykład tym, że dwa odrębne klastry są połączone w jeden, co znacząco obniża jakość grupowania).

    Wad tych pozbawione jest rozwiązanie w którym dana baza danych zawiera punkty tylko

    z określonego przedziału. Na wykresie 3.6, widać, że w pierwszej bazie danych znajdują się tylko punkty, których pierwsza współrzędna mieści się w zakresie 0-5, w drugiej bazie danych punkty o współrzędnej 5-11 etc. Dzięki takiemu podejściu w dwóch bazach danych zostaną znalezione klastry (jest spełniony warunek minPts=3), wyznaczone modele lokalne a algorytm zwróci wyniki identyczne jak algorytm referencyjny.

    0

    2

    4

    6

    8

    10

    12

    0 5 10 15

    y

    x

    Szum

    0

    2

    4

    6

    8

    10

    12

    0 5 10 15

    y

    x

    Szum

  • 38

    Wykres 3.6. Dane rozmieszczone według wartości pierwszej współrzędnej

    Niestety, takie rozwiązanie również nie jest pozbawione błędów. Wystarczy tylko

    przywołać przykład w którym mały klaster trafia do dwóch sąsiednich baz aby nie został znaleziony. Sytuacja taka przedstawiona została na wykresie 3.7, gdzie grupa złożona z czterech punktów została rozproszona między dwie bazy danych, tak, że do każdej trafiły po dwa punkty. Wiedząc, że minPts=3, nie zostanie wyznaczony model lokalny a grupa ta zostanie uznana za szum. Ponadto nie ma najmniejszego sensu wyznaczanie modeli lokalnych dla klastrów, które w całości znajdują się w jednej bazie danych.

    Wykres 3.7. Grupa złożona z czterech punktów uznana za szum

    Rozważania te, mogą prowadzić do wniosku, że podejście takie, gdzie bazy przechowują

    pewne zakresy danych jest dobre, jednak rozpatrzenia wymagają nie wszystkie punkty ale tylko te z krańców przedziałów (aby połączyć rozproszone klastry oraz znaleźć te małe). Podejście takie zostało szerzej przedstawione w rozdziale czwartym, jednak wcześniej w następnym podrozdziale zostały przedstawione pewne propozycje usprawnień dla algorytmu DBDC pomagające znajdować małe klastry złożone z punktów będących lokalnym szumem.

  • 39

    3.7. Propozycje usprawnień

    Jak to zostało już wcześniej wspomniane, dużą wadą algorytmu DBDC jest fakt, że algorytm ten nie jest w stanie wykrywać klastrów które złożone są z punktów będących lokalnie szumem, jednak patrząc z globalnego punktu widzenia tworzą grupę.

    W tym podrozdziale przedstawione zostaną pewne propozycje usprawnień dla tego algorytmu, dzięki, którym możliwe będzie znajdowanie większości takich niewielkich klastrów. Oczywiście aby móc znaleźć grupy złożone z lokalnego szumu, szum ten powinien zostać przesłany z każdej bazy danych biorącej udział w grupowaniu do jednostki globalnej i tam odpowiednio zbadany. Nie będzie niczym odkrywczym stwierdzenie, że im mniej tych punktów będących szumem trzeba przesłać, tym lepiej.

    Pierwsze, zaprezentowane podejście opiera się na wyznaczeniu modelu lokalnego dla

    lokalnego szumu z każdej bazy danych. Dzięki temu potencjalne, niewielkie skupiska punktów, które są zbyt małe aby utworzyć osobną grupę zostaną wzięte pod uwagę jako potencjalne klastry w procesie globalnym. Obliczenia w tym przypadku będą bardzo podobne do obliczeń związanych z wyznaczaniem modelu lokalnego dla znalezionych grup, jednakże inne będą tych obliczeń parametry: wartość ε pozostanie taka sama, natomiast parametr minPts, zostanie odpowiednio zmniejszony aby taki potencjalny klaster w ogóle wykryć. Tak zmodyfikowany algorytm będzie wyglądał następująco:

    • grupowanie danych lokalnych • stworzenie głównego modelu lokalnego • grupowanie globalne na podstawie danych z modeli lokalnych • aktualizacja grup na podstawie modelu lokalnego • stworzenie odpowiednika modelu lokalnego dla lokalnego szumu, z parametrami

    grupowania: εnoise = ε ,

    minPts]^_`a = bc_]de`f g, gdzie minPts to dotychczasowa wartość parametru minPts w grupowaniu lokalnym a k, to liczba rozproszonych baz danych biorących udział w procesie grupowania.

    • grupowanie globalne na podstawie wyznaczonego wcześniej modelu • aktualizacja ewentualnie znalezionych grup dla szumu lokalnego

    Jak można zauważyć, algorytm ten stanowi rozszerzenie algorytmu z rozdziału 3.2. o trzy

    dodatkowe kroki, mianowicie zbudowanie analogicznego modelu lokalnego ale dla punktów będących szumem, grupowanie globalne tychże punktów oraz aktualizacja grup do których ewentualnie należą.

    Kryterium wyznaczenia odpowiedniego modelu dla szumu jest wybór takich punktów dla których prawdopodobieństwo, że punkty te wraz z punktami znajdującymi się w innych bazach danych są faktycznie częścią jednego, niewielkiego klastra jest największe – można to próbować określić na podstawie liczby punktów znajdujących się lokalnie w otoczeniu rozpatrywanego punktu, będącego szumem. Im więcej sąsiadów posiada taki punkt, tym większe prawdopodobieństwo, że uwzględniając punkty z innych baz danych, tworzoną one klaster. Z tego też względu, dla punktów, które po etapie grupowania lokalnego oznaczone są jako szum, sprawdzana jest liczba posiadanych sąsiadów. Im jest ich więcej, tym większa jest szansa na znalezienie klastra.

  • 40

    To czy jest sens rozpatrywać dany zbiór punktów globalnie zależy od jego wielkości a więc także od wartości minPts oraz liczby rozproszonych baz danych. Innymi słowy, jeżeli liczba sąsiadów danego punktu spełnia warunek minPts]^_`a ≥ bc_]de`f g, wówczas punkt taki staje się reprezentantem i w dalszym etapie zostanie poddany grupowaniu globalnemu wraz z innymi tego typu punktami z pozostałych baz danych..

    Wartość parametru minPtsnoise została dobrana w taki sposób aby klaster złożony z co najmniej minPts punktów i rozproszony równomiernie pomiędzy k baz danych został znaleziony. Przykładowo, jeżeli system jest złożony z dziesięciu baz danych (k=10) a wartość minPts=19, wówczas: minPts]^_`a = bc_]de`f g = b�h�6g = i1.9l = 2, oznacza to, że w każdej bazie danych muszą znajdować się co najmniej dwa punkty w swoim otoczeniu aby brać je pod uwagę w globalnym procesie znajdowaniu potencjalnego klastra. Warto zauważyć w tym miejscu, że dla podanych parametrów klaster złożony ze 180 może nie zostać wykryty używając tylko algorytmu DBDC. Proces znajdowania potencjalnych klastrów z szumu lokalnego został dokładniej omówiony na poniższym przykładzie. Przykład 1.

    Klaster złożony z piętnastu punktów został rozproszony pomiędzy trzy baz danych. Do pierwszej bazy trafiły cztery, do drugiej pięć a do trzeciej sześć punktów, co przy parametrach grupowania minPts=7 oraz ε=2.5 spowoduje uznanie tychże punktów przez algorytm DBDC za szum, a więc wspomniany klaster nie zostanie znaleziony – sytuacja ta została przedstawiona na wykresach poniżej.

    Dzięki zastosowaniu omówionego do tej pory podejścia z wyznaczaniem modeli dla szumu lokalnego (wartość minPtsnoise wynosi: minPts]^_`a = bc_]de`f g = bmng = b2 �ng = 3) Na wykresach 3.9., 3.10. oraz 3.11. prostokątami zostały zaznaczone punkty, które pełnią rolę punktów reprezentujących dla modeli lokalnych uwzględniających szum. Punkty te wezmą następnie udział w grupowaniu globalnym co doprowadzi do wykrycia klastra, który na etapie lokalnym nie został znaleziony.

    Wykres 3.8. Klaster złożony z piętnastu punktów, rozproszony między trzy bazy danych

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    0 2 4 6 8 10

    y

    x

  • 41

    Wykres 3.9. Zawartość pierwszej bazy danych

    Wykres 3.10. Zawartość drugiej bazy danych

    Wykres 3.11. Zawartość trzeciej bazy danych

    Niestety, przedstawione rozwiązanie, mimo tej zalety, że jest w stanie znajdować pewne

    klastry uznane przez algorytm DBDC jako szum nie jest pozbawione wad. Przede wszystkim wciąż może się zdarzyć, że niektóre klastry nie będą znalezione i uznane zostaną za szum. Sytuacja taka została przedstawiona w przykładzie drugim. Widać tam, że dla zadanych

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    0 2 4 6 8 10

    y

    x

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    0 2 4 6 8 10

    y

    x

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    0 2 4 6 8 10

    y

    x

  • 42

    parametrów grupowania, grupa została rozproszona w ten sposób, że nawet po zastosowaniu zaprezentowanego usprawnienia nie będzie ona znaleziona. Przykład 2.

    Drugi przykład przedstawia sytuację, gdzie klaster złożony z pięciu punktów został rozproszony pomiędzy trzy bazy danych jak to pokazano na wykresie poniżej. Parametry tego grupowania to minPts=5 oraz ε= 1.5 oraz k=3.

    Wykres 3.12. Przykład drugi

    W powyższej sytuacji, podobnie jak poprzednio klaster został rozproszony pomiędzy trzy

    strony. Parametr minPtsnoise wynosi w tym przypadku: minPts]^_`a = bc_]de`f g = bpng = b1 �ng = 2.

    Model lokalny został oznaczony prostokątem. Jak widać na wykresie, w bazie trzeciej

    znajduje się zbyt mało punktów aby można było wyznaczyć punkt reprezentacyjny a więc w etapie globalnym klaster niestety nie zostanie znaleziony.

    Inną wadą tego algorytmu jest fakt, że jeżeli parametr minPts jest mniejszy od liczby

    stron biorących udział w grupowaniu (k) wówczas minPts]^_`a = bc_]de`f g = 1 a więc każdy punkt jest traktowany jako fragment potencjalnego klastra co wymaga przesłania całego szumu.

    Drugim podejściem do wykrywania klastrów złożonych z lokalnego szumu, dające największą skuteczność, jest po prostu całe jego przesłanie i dalsza analiza podczas grupowania globalnego. Oczywiście rozwiązanie to powinno być stosowane z umiarem, bowiem jeżeli dane poddawane grupowaniu są zaszumione w znacznym stopniu, przesłanie szumu lokalnego będzie wąskim gardłem jeżeli chodzi o wydajność rozwiązania. Prostszym rozwiązaniem może być próba zmiany parametrów grupowania.

    Rozwiązanie takie, w którym lokalny szum poddawano by badaniu w etapie globalnym wymagałoby tylko dodania szumu do wyznaczonego modelu lokalnego i przesłania go razem z nim. W kolejnym etapie, globalnym po grupowaniu punktów reprezentacyjnych należy dokonać grupowania otrzymanego szumu z parametrami takimi samymi jak w grupowaniu lokalnym a więc: minPtsglobal = minPtslocal, εglobal= εlocal.

    0

    1

    2

    3

    4

    5

    6

    7

    -1 1 3 5 7

    y

    x

    Baza 1

    Baza 2

    Baza 3

  • 43

    Dzięki zastosowaniu takiego podejścia nie stanowi problemu znalezienie wszystkich, nawet niezbyt licznych grup. Odbywa się to niestety kosztem przesłania o wiele większej liczby punktów a co za tym idzie jak już wspomniano spadkiem wydajności.

    Rozwiązania omówione w tym rozdziale zostały zebrane razem i zaprezentowane na jednym, wspólnym przykładzie.

    Przykład 3.: Na rysunku 3.18. został przedstawiony zbiór punktów podlegających procesowi grupowania z parametrami minPts=5 oraz ε=0.6. Punkty te następnie zostały rozproszone pomiędzy trzy bazy danych tak jak to pokazano na rysunkach 3.19. – 3.21. Dalej, na kolejnych trzech rysunkach przedstawiono wyniki grupowania dla trzech wersji algorytmu DBDC: wersji omówionej w rozdziale trzecim, wersji z wyznaczaniem modelu dla szumu oraz wersji, w której cały szum został przesłany do jednostki globalnej.

    Rysunek 3.18. Punkty podlegające grupowaniu

  • 44

    Rysunek 3.19. Lokalne wyniki w pierwszej bazie

    Rysunek 3.20. Lokalne wyniki w drugiej bazie

  • 45

    Rysunek 3.21. Lokalne wyniki w trzeciej bazie

    Rysunek 3.22. Wyniki grupowania algorytmem DBDC

  • 46

    Rysunek 3.23. Wyniki grupowan