Zastosowanie algorytmu DBSCAN do grupowania danych rozproszonych

Podobne dokumenty
Grupowanie Witold Andrzejewski, Politechnika Poznańska, Wydział Informatyki 201/633

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

Algorytm grupowania danych typu kwantyzacji wektorów

4.3 Grupowanie według podobieństwa

Hierarchiczna analiza skupień

INDUKOWANE REGUŁY DECYZYJNE ALORYTM APRIORI JAROSŁAW FIBICH

Informacje i materiały dotyczące wykładu będą publikowane na stronie internetowej wykładowcy, m.in. prezentacje z wykładów

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Wyszukiwanie binarne

Agnieszka Nowak Brzezińska Wykład III

Eksploracja danych. Grupowanie. Wprowadzanie Definicja problemu Klasyfikacja metod grupowania Grupowanie hierarchiczne. Grupowanie wykład 1

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Michał Kozielski Łukasz Warchał. Instytut Informatyki, Politechnika Śląska

METODY CHEMOMETRYCZNE W IDENTYFIKACJI ŹRÓDEŁ POCHODZENIA

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Aproksymacja funkcji a regresja symboliczna

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Agnieszka Nowak Brzezińska Wykład III

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

SAS wybrane elementy. DATA MINING Część III. Seweryn Kowalski 2006

Analiza skupień. Analiza Skupień W sztucznej inteligencji istotną rolę ogrywają algorytmy grupowania

Elementy modelowania matematycznego

PODSTAWY BAZ DANYCH. 19. Perspektywy baz danych. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Optymalizacja. Przeszukiwanie lokalne

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Interaktywne wyszukiwanie informacji w repozytoriach danych tekstowych

Prawdopodobieństwo czerwonych = = 0.33

Optymalizacja ciągła

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

dr inż. Olga Siedlecka-Lamch 14 listopada 2011 roku Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Eksploracja danych

Analiza danych. TEMATYKA PRZEDMIOTU

8. Neuron z ciągłą funkcją aktywacji.

Analiza ilościowa w przetwarzaniu równoległym

SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska

Inteligentna analiza danych

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Widzenie komputerowe (computer vision)

Algorytmy klasyfikacji

Alicja Marszałek Różne rodzaje baz danych

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Eksploracja Danych. wykład 4. Sebastian Zając. 10 maja 2017 WMP.SNŚ UKSW. Sebastian Zając (WMP.SNŚ UKSW) Eksploracja Danych 10 maja / 18

Maciej Piotr Jankowski

Gęstościowe grupowanie danych i wyznaczanie najbliższego sąsiedztwa z użyciem nierówności trójkąta

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

Systemy uczące się Lab 4

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

DBSCAN segmentacja danych punktowych oraz rastrowych w środowisku wolnodostępnego oprogramowania R

Algorytmy rozpoznawania obrazów. 11. Analiza skupień. dr inż. Urszula Libal. Politechnika Wrocławska

W kolejnym kroku należy ustalić liczbę przedziałów k. W tym celu należy wykorzystać jeden ze wzorów:

Modelowanie procesów współbieżnych

AiSD zadanie trzecie

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Co to jest grupowanie

SZTUCZNA INTELIGENCJA

Analiza algorytmów zadania podstawowe

Spacery losowe generowanie realizacji procesu losowego

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

CLUSTERING. Metody grupowania danych

Analiza Skupień Cluster analysis

CLUSTERING II. Efektywne metody grupowania danych

Klasyfikacja publikacji biomedycznych w konkursie JRS 2012 Data Mining Competition - Szkic koncepcji

TADEUSZ KWATER 1, ROBERT PĘKALA 2, ALEKSANDRA SALAMON 3

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

Algorytm grupowania danych typu kwantyzacji wektorów

Naszym zadaniem jest rozpatrzenie związków między wierszami macierzy reprezentującej poziomy ekspresji poszczególnych genów.

METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING

Techniki grupowania danych w środowisku Matlab

REFERAT PRACY DYPLOMOWEJ

Wnioskowanie bayesowskie

Numeryczna algebra liniowa

Galileo - encyklopedia internetowa Plan testów

Testowanie modeli predykcyjnych

Text mining w programie RapidMiner Michał Bereta

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

Metody wykrywania odchyleo w danych. Metody wykrywania braków w danych. Korelacja. PED lab 4

Analiza składowych głównych. Wprowadzenie

Adrian Horzyk

TEORETYCZNE PODSTAWY INFORMATYKI

Klasyfikacja obiektów Drzewa decyzyjne (drzewa klasyfikacyjne)

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

A Zadanie

6. Zagadnienie parkowania ciężarówki.

Wprowadzenie do technologii informacyjnej.

LEMRG algorytm generowania pokoleń reguł decyzji dla baz danych z dużą liczbą atrybutów

Diagramu Związków Encji - CELE. Diagram Związków Encji - CHARAKTERYSTYKA. Diagram Związków Encji - Podstawowe bloki składowe i reguły konstrukcji

Data Mining Wykład 5. Indukcja drzew decyzyjnych - Indeks Gini & Zysk informacyjny. Indeks Gini. Indeks Gini - Przykład

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

1 Wprowadzenie do algorytmiki

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

Metoda Karnaugh. B A BC A

Analiza korespondencji

Bazy danych TERMINOLOGIA

0 + 0 = 0, = 1, = 1, = 0.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Transkrypt:

Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki Rok akademicki 2014/2015 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: Specjalność: Informatyka 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

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 8

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. 9

Rysunek 1.1. Podejście centralne Rysunek 1.2. Podejście rozproszone 1.2. Przegląd literatury Do tej pory zostało opracowanych wiele algorytmów z dziedziny eksploracji danych. Znaczna część 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 rozproszonych. W dziedzinie algorytmów grupowania, również powstało wiele interesujących prac dotyczących danych rozproszonych. Jako przykład można wymienić algorytm opisany w artykule "A Data-clustering Algorithm on Distributed Memory Multiprocessors" [6], który to jest implementacją algorytmu k-środków działającą na rozproszonych danych. Również algorytmu k-środków dotyczyy algorytm przedstawiony w artykule "Fast and exact out-of-core 10

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. 11

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. 12

Rozdział 2 Grupowanie W tym rozdziale zostanie przedstawiona jedna z najważniejszych metod eksploracji danych jaką jest grupowanie. Ponadto, zostaną też przedstawione najczęściej stosowane miary 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ściowych na takie grupy, wewnątrz których obiekty są do siebie maksymalnie podobne oraz różnią się znacznie od 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. Rysunek 2.1. Zawartość bazy danych Rysunek 2.2. Wynik grupowania 13

Bardziej formalny zapis procesu grupowania może wyglądać następująco: Dany jest zbiór X obiektów (danych wejściowych) x i, takich, że:, =1,, Grupowaniem G, nazywamy wówczas zbiór grup C: >0, = = ={,, }, takich, że: 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, w ji współczynnik przynależności elementu j do wzorca i ( [0,1]) oraz v j 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), 14

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, )=, ), ), )+, ), 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., )= ) Miara Manhattan (miejska) jest sumą różnicy odległości w każdym z wymiarów z osobna., )= 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 15

, )= ) 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 [u 1,u 2,.u n ], gdzie u i 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ę 16

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. 17

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: )={ :, ) }, 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. ) 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] 18

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: ) punkt p leży w epsilonowym sąsiedztwie punktu q ) 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 p 1 p n, p 1 =q, p n =p oraz każdy punkt p i+1 jest bezpośrednio osiągalny z punktu p i. 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 19

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 //no core point SetOfPoints.changeClId(Point,NOISE); RETURN False; ELSE //all points in seeds are density-reachable from Point SetOfpoints.changeCiIds(seeds,ClId); seeds.delete(point) WHILE seeds <> Empty DO currentp := seeds.first(); result := setofpoints.regionquery(currentp,eps); IF result.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ż 20

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. 21

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. 22

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 23

Na podstawie zebranych danych z lokalnych baz wyznaczenie globalnego modelu Aktualizacja danych na podstawie modelu globalnego w każdej ze stron systemu W tym rozdziale zostanie zaprezentowany algorytm DBDC operujący na rozproszonych 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ś zostanie także przedstawiony algorytm działający na danych rozproszonych, jednak przy założeniu, że są one wstępnie umieszczone w każdej z baz, to znaczy, każda rozproszona baza zawiera dane z pewnego zakresu wszystkich danych. 3.1. 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 Dalej, w tym podrozdziale został przedstawiony główny problem jaki pojawia się przy konieczności grupowania rozproszonych danych. Na rysunkach (3.2. 3.4..) zostały pokazane punkty znajdujące się w każdej z trzech baz danych, wchodzących w skład rozproszonego systemu. 24

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. 25

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 26

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 27

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 28

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: : w epsilonowym otoczeniu takiego punktu nie może się znaleźć inny punkt reprezentujący:, : ) 29

każdy rdzeń musi znajdować się w otoczeniu jakiegoś punktu reprezentującego: : ) gdzie Core c, Rep c, 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 30

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. 31

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ć: = +, ) (bowiem,, ) >, )). Ogólnie więc wartość ε Rep wynosi: = +max, ), ) Jak to było wcześniej wspomniane, wartość ε Rep jest bardzo istotna w procesie aktualizacji grup po etapie grupowania globalnego. W tym momencie udało się znaleźć taki zbiór danych będący modelem lokalnym. Podsumowując, lokalny model danych jest to zbiór punktów reprezentujących, spełniających warunki jak powyżej, wraz z przypisanymi każdemu z nich wartościami ε Rep. 32

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 33

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 minpts g 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 minpts g. 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ść minpts g 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:,2 ), gdzie to wartość ε z grupowania lokalnego. Najlepszym rozwiązaniem wydaje się dobór tego parametru przez użytkownika na podstawie wartości pochodzących z modeli lokalnych. Jeśli wartości te są niewielkie to i parametr powinien nie być duży. Podobnie jeżeli wartości są duże to odpowiednio dobrany powinien zostać. 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 34

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. 35

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). 12 10 8 y 6 4 2 Szum Klaster 1 Klaster 2 0 12 0 5 10 15 x Wykres 3.1. Wyniki dla algorytmu referencyjnego y 10 8 6 4 2 Szum 0 0 5 10 x Wykres 3.2. Zawartość pierwszego węzła y 12 10 8 6 4 2 Szum 0 0 5 10 x Wykres 3.3. Zawartość drugiego węzła 36

y 12 10 8 6 4 2 Szum 0 12 0 5 10 15 x Wykres 3.4. Zawartość trzeciego węzła y 10 8 6 4 2 Szum 0 0 5 10 15 x 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. 37

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. 38

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 =, 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. 39

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, 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 minpts noise 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 = = = 1.9 =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ść minpts noise wynosi: minpts = = = 2 =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. y 10 9 8 7 6 5 4 3 2 1 0 0 2 4 6 8 10 Wykres 3.8. Klaster złożony z piętnastu punktów, rozproszony między trzy bazy danych x 40

y y y 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 10 9 8 7 6 5 4 3 2 1 0 0 2 4 6 8 10 x Wykres 3.9. Zawartość pierwszej bazy danych 0 2 4 6 8 10 x Wykres 3.10. Zawartość drugiej bazy danych 0 2 4 6 8 10 x 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 41

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. 7 6 5 y 4 3 2 1 Baza 1 Baza 2 Baza 3 0-1 1 3 5 7 x Wykres 3.12. Przykład drugi W powyższej sytuacji, podobnie jak poprzednio klaster został rozproszony pomiędzy trzy strony. Parametr minpts noise wynosi w tym przypadku: minpts = = = 1 =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 = = 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: minpts global = minpts local, ε global = ε local. 42

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 43

Rysunek 3.19. Lokalne wyniki w pierwszej bazie Rysunek 3.20. Lokalne wyniki w drugiej bazie 44

Rysunek 3.21. Lokalne wyniki w trzeciej bazie Rysunek 3.22. Wyniki grupowania algorytmem DBDC 45

Rysunek 3.23. Wyniki grupowania algorytmem z modelem lokalnym dla szumu Rysunek 3.24. Wyniki grupowania algorytmu z przesyłaniem całości szumu Patrząc na rysunek 3.22. widać, że przez algorytm DBDC zostały znalezione cztery klastry. Mają one tę cechę wspólną, że przynajmniej w jednej bazie danych został znaleziony jeden punkt rdzenny dla danego klastra (przynajmniej dla jednego punktu spełniony był warunek minimalnej liczby punktów w otoczeniu). Innymi słowy przynajmniej w jednej bazie dla takiego klastra można było wyznaczyć punkt reprezentujący, który został przesłany do serwera i tam poddany procesowi grupowania globalnego a więc znaleziony został globalny klaster. Niestety, oprócz wspomnianych czterech klastrów dane zawarte w bazach danych tworzą cztery inne grupy, których ten algorytm nie znalazł. Jest to spowodowane takim rozproszeniem danych, że w ani jednej bazie nie został znaleziony dla nich punkt reprezentujący a więc punkty te zostały po prostu uznane za lokalny szum. Widać to na rysunkach 3.19 3.21. Porównując wyniki z rysunków 3.22. oraz 3.24. można także 46

zauważyć, że algorytm DBDC znalazł klaster złożony z sześciu punktów ale nie znalazł klastra złożonego z dwunastu. Rysunek 3.23. przedstawia wyniki dla algorytmu, który wyznacza model lokalny dla szumu. Algorytm ten znalazł dodatkowe dwie grupy, nieznalezione przez DBDC. Niestety, znalezienie dwóch ostatnich grup, a więc wszystkich klastrów wymagało podejścia z przesłaniem całego szumu (rysunek 3.24). 47

Rozdział 4 Algorytm IBDC Przedstawiony w tym rozdziale algorytm opiera się na założeniu, że każda lokalna baza danych zawiera pewien fragment uporządkowanego zbioru. Jego nazwaa powstała poprzez analogię do nazwy poprzedniego algorytmu, tutaj IBDC Interval Based Density Clustering. Ogólny schemat takiego algorytmu został zaprezentowany poniżej. 4.1. Zarys problemu Rysunek 4.1. Schemat algorytmu W sytuacji opisywanej w tym rozdziale dane mające podlegać grupowaniu są, jak to miało miejsce poprzednio zawarte w kilku różnych bazach danych. Bazy te są od siebie niezależne jednak pewnym uproszczeniem niech będzie fakt, że każda z nich zawiera dane tylko z pewnego, określonegoo przedziału. Sytuacja ta (dla przestrzeni dwuwymiarowej) jest przedstawiona na poniższym rysunku: 48

Rysunek 4.2. Przykład uporządkowanych danych zawartych w kilku bazach Rysunek 4.2. przedstawia następującą sytuację: system składa się z czterech baz danych (pokazanych na jednej, wspólnej ilustracji), gdzie w każdej z nich znajdują się dane z odpowiedniego przedziału (0-2, 2-4, 4-6, 6-8). W wyniku grupowania w pierwszym przedziale (0-2) zostały znalezione dwie grupy (C1 oraz C2). Jak widać punkty A, B oraz C, D, E z tej bazy zostały uznane za szum bowiem w ich otoczeniu nie ma wystarczającej liczby innych punktów aby utworzyć grupę. Bardzo podobna sytuacja występuje także w przypadku punktów F, G oraz H. Warto przyjrzeć się również trzem klastrom oznaczonym powyżej jako C4, C6 i C7. Nietrudno zauważyć, że mimo iż znajdują się w osobnych bazach danych, na poziomie globalnym jest to jeden, większy klaster. Oczekiwany rezultat jaki powinien zostać uzyskany w wyniku procesu grupowania rozproszonego został pokazany poniżej. Rysunek 4.3. Oczekiwane wyniki grupowania 49

Jak widać, punkty A i B wchodzą w skład klastra C3, mimo, że lokalnie zostały uznane za szum. Punkty C, D, E, F i G, mimo, że na poziomie lokalnym są szumem, leżą na tyle bliskie siebie, że po uwzględnieniu danych z sąsiedniej bazy widać, iż tworzą grupę. Podobnie wygląda wspomniana wcześniej sytuacja z klastrami C4, C6 i C7 z rysunku 4.2. Po rozpatrzeniu punktów z sąsiednich baz danych można odkryć, że klastry te są jedynie fragmentami jednej większej grupy. Pokazany powyżej przykład można rozciągnąć na więcej niż dwa wymiary. Ponadto przedziały 'obsługiwane' przez bazy danych nie muszą być takiej samej wielkości, choć warto brać pod uwagę kwestię aby w każdym z nich znajdowała się podobna liczba punktów. Inna sytuacja została pokazana na rysunku 4.4. Tutaj również przestrzeń danych została podzielona na cztery części ale podział miał miejsce w dwóch wymiarach zamiast w jednym. Podział danych za pomocą jak najmniejszej liczby wymiarów ma duży wpływ na skomplikowanie obliczeń w fazie scalania podczas etapu globalnego. Rysunek 4.4. Przykład podziału w dwóch wymiarach Podsumowując, w algorytmie wykorzystującym podział zbioru danych na posortowane partycje, można napotkać trzy sytuacje, wymagające rozpatrzenia: nie wiadomo, czy punkty uznane za szum w jednej bazie danych nie są w rzeczywistości fragmentami jakiegoś klastra znajdującego się w sąsiedniej bazie danych (punkty A i B z rysunku 4.2.) dwie lub więcej grup w rzeczywistości są fragmentami jednej większej grupy (klastry C4, C6 i C7 z rysunku 4.2.). punkty uznane za szum w sąsiednich bazach danych tworzą, niewielką grupę (punkty C, D, E, F, G). Oczywistym jest fakt, że każdy węzeł może posiadać swoje własne klastry nie leżące blisko granicy podziału a więc nie podlegające dalszej analizie. To właśnie odległość od linii wyznaczającej podział danych jest wyznacznikiem tego czy punkty bądź grupy powinny zostać analizowane w dodatkowym kroku celem połączenia wyników. 50

4.2. Opis algorytmu Algorytm opisany w tym rozdziale składa się z poniższych etapów: grupowanie lokalne i wyznaczenie punktów krańcowych etap globalny łączenia w grupy otrzymanych punktów krańcowych aktualizacja przypisanych grup w bazach lokalnych Algorytm, podobnie jak omawiany poprzednio, rozpoczyna działanie od dokonania grupowania na swoich danych lokalnych. Grupowanie to oczywiście jest wykonywane przy użyciu algorytmu DBSCAN. Po wyznaczeniu klastrów lokalnych kolejnym krokiem jest wyznaczenie wszystkich punktów znajdujących się w odległości niewiększej niż epsilon od krańców przedziałów. Wszystkie takie znalezione punkty wraz z przypisanymi im numerami grup są przesyłane do węzła centralnego. Kolejny etap, etap globalny polega na sprawdzeniu czy istnieje możliwość połączenia istniejących klastrów w jeden, bądź czy punkty będące szumem wchodzą w skład jakichś grup, ewentualnie czy szum znajdujący się blisko granic podziału jest w stanie utworzyć nową grupę. Ostatnim już etapem jest przypisanie punktom z wszystkich lokalnych baz danych odpowiedniego, zaktualizowanego numeru klastra, jeżeli obecny klaster do którego dane punkty są przypisane jest fragmentem większego. Ponadto należy dokonać aktualizacji numerów grup dla punktów będących lokalnie szumem a z globalnego punktu widzenia wchodzącego w skład jakiejś grupy. W dalszej części zostanie dokładniej omówiony etap lokalny, etap globalny a także etap aktualizacji numerów grup. 4.3. Etap lokalny Na samym początku, wszystkie dane zawarte w lokalnej bazie muszą zostać poddane grupowaniu przy użyciu algorytmu DBSCAN. Mając wyznaczone grupy do jakich należą dane kolejny krok to znalezienie wszystkich punktów krańcowych znajdujących się w lokalnej bazie danych. Wspomniane punkty krańcowe to wszystkie te punkty, których odległość od krańców przedziału jest mniejsza niż Eps. Zostało to przedstawione na rysunku poniżej. 51

Rysunek 4.5. Punkty krańcowe w przykładowej bazie danych Jak widać na rysunku 4.5. powyższa baza danych zawiera punkty, których pierwsza współrzędna (x) należy do przedziału 1-6. W wyniku grupowania zostały znalezione cztery klastry. Widać także, że punktów leżących blisko granic przedziałów x=1 lub x=6 (a więc punktów krańcowych) jest całkiem sporo. W takiej sytuacji prawdopodobne jest, że w innej bazie danych, która odpowiada za sąsiedni przedział znajdą się kolejne punkty tworzące razem jedną grupę (widać to na rysunkach 4.2. i 4.3. klastry C4, C6, C7 z rysunku 4.2.). Ponadto, jak widać punktami krańcowymi nie muszą być tylko punkty wchodzące w skład klastrów ale mogą nimi być także punkty będące szumem (punkty oznaczone x na powyższym rysunku). To właśnie wszystkie, wyznaczone punkty krańcowe w danej bazie zostaną przesyłane do jednostki centralnej. Są one więc pewnym odpowiednikiem modelu lokalnego z wcześniej omawianego algorytmu. Wyznaczenie i przesłanie punktów krańcowych kończy etap lokalny. Warto w tym miejscu przyjrzeć się jeszcze jednej kwestii jaką jest dobór odpowiedniej wartości Eps oraz odpowiednio dużego przedziału. Jeżeli parametry te nie będą odpowiednie to mimo uzyskania dobrej jakości grupowania wydajność będzie dosyć niska, co będzie spowodowane koniecznością przesłania wielu punktów krańcowych. Przedstawia to rysunek 4.6. Widać na nim, że jeśli wartość przedziału nie będzie znacząco większa od wartości Eps jako krańcowe zostanie wybrane zbyt wiele punktów co może być wąskim gardłem w przypadku transmisji danych do jednostki centralnej. Zbiór punktów krańcowych powinien być relatywnie mały. 52

Rysunek 4.6. Nieodpowiednio dobrana wartość parametru i wielkości przedziału. 4.4. Etap globalny Wyznaczone lokalnie punkty krańcowe są przesyłane do węzła centralnego, gdzie zostaną poddane etapowi łączenia danych. Etap ten polega na próbie scalenia otrzymanych danych to znaczy na próbie wyznaczenia globalnych grup, które są rozrzucone pomiędzy kilka baz danych. Ponadto na etapie tym następuje sprawdzenie czy punkty będące szumem w rzeczywistości należą do klastrów, których większość punktów znajduje się w innych bazach danych. Rozpatrywana jest także sytuacja w której szum z krańców przedziałów to fragmenty nieznalezionych do tej pory niewielkich grup. W tym etapie parametry Eps i minpts są takie same jak na etapach lokalnych, to znaczy: ε = ε,minpts =minpts Etap globalny składa się z trzech kroków: 1. Łączenie grup, 2. Włączanie szumu do klastrów, 3. Tworzenie nowych grup z szumu, Kroki te zostały omówione poniżej: Łączenie kilku lokalnych grup w jedną polega, jak to było kilkukrotnie wspomniane na sprawdzeniu czy dwie lub więcej grupy z różnych baz danych to w rzeczywistości fragmenty jednej dużej grupy, która jest złożona z punktów z sąsiednich baz danych. Sprawdzenie takie polega na zbadaniu czy punkty krańcowe z jednej bazy danych mają w swoim otoczeniu punkty krańcowe z innych baz danych, takie, że punkty te wchodzą w skład modeli lokalnych. Wystarczy, że jeden punkt będący rdzeniem zawiera w swoim otoczeniu rdzeń z sąsiedniej 53

bazy aby zdecydować, że dwa sąsiednie klastry są w rzeczywistości fragmentami jednego większego. Zostało to zilustrowane na rysunku 4.7. Rysunek 4.7. Łączenie klastrów z sąsiadujących baz danych Łączenie grup odbywa się według następującego algorytmu: MergeClusters(ClustersA, ClustersB) FOR EACH ClusterA FROM ClustersA DO PointsA := ClusterA.getPoints(); FOR EACH ClusterB FROM ClustersB DO PointsB := ClusterB.getPoints(); FOR EACH PointA FROM PointsA DO FOR EACH PointB FROM PointsB DO IF PointA.IsCore && PointB.Iscore &&Distance(PointA,PointB)<Eps IF PointA.GlobalClId==NULL && PointB.GlobalClId==NULL GlobalClusterId := NextId(); assignglobalcluster(pointsa, GlobalClusterId); assignglobalcluster(pointsb, GlobalClusterId); END IF; ELSE IF PointA.GlobalClId==NULL && PointB.GlobalClId<>NULL assignglobalcluster(pointsa, PointB.GlobalClId); END ELSE IF; ELSE assignglobalcluster(pointsb, PointA.GlobalClId); END ELSE; BREAK; END IF; END FOR; END FOR; END FOR; END FOR; END; //MergeClusters Drugi krok polega na sprawdzeniu, czy punkty krańcowe będące szumem w jednej bazie danych należą do grupy, która znajduje się w sąsiedniej bazie (są jej punktami granicznymi). Polega to na sprawdzeniu czy punkty te znajdują się w otoczeniu jakichś punktów z klastra z sąsiedniej bazy. Przedstawiono to na rysunku 4.8. 54

Rysunek 4.8. Włączanie szumu do klastrów Poniżej znajduje się algorytm włączania szumu do klastrów. Wygląda on następująco: AddNoiseToCluster(NoiseList, Clusters) FOR EACH Noise FROM NoiseList DO FOR EACH Cluster FROM Clusters DO Points := Cluster.getPoints(); FOR EACH Point FROM Points DO IF Distance(Noise,Point)<Eps IF Point.GlobalClId<>NULL assignglobalcluster(noise, Point.GlobalClId); END IF; ELSE GlobalClusterId := NextId(); Noise.GlobalClId:=GlobalClusterId; assignglobalcluster(points, GlobalClusterId); END ELSE; BREAK; END IF; END FOR; END FOR; END FOR; END; //AddNoiseToCluster Ostatnim krokiem jest próba wygenerowania nowego klastra z pozostałego szumu. W tym celu po prostu obliczana jest liczba punktów w otoczeniu aktualnie rozpatrywanego punktu i jeśli jest ona większa niż minpts nowy klaster jest tworzony. 55

Rysunek 4.9. Łączenie szumu w klaster Sposób generowania nowych klastrów z szumu: CreateNewClusterFromNoise (NoiseA, NoiseB, minpts) AllNoise:= NoiseA.addAll(NoiseB) //Lista wszystkich punktów, które są szumem do sprawdzenia FOR i FROM 1 TO AllNoise.size() DO NoiseA:= AllNoise.get(i); IF NoiseA.GlobalClId <> NULL CONTINUE; END IF; potentialcluster.add(noisea); FOR j FROM 1 TO AllNoise.size() DO NoiseB:= AllNoise.get(j); IF Distance(NoiseA,NoiseB)<Eps potentialcluster.add(noiseb); END IF; END FOR; IF potentialcluster.size()>=minpts GlobalClusterId := NextId(); assignglobalcluster(potentialcluster, GlobalClusterId); END IF; END FOR; END; // CreateNewClusterFromNoise 4.5. Aktualizacja numerów grup Ostatni etap algorytmu polega na zaktualizowaniu grup przypisanych poszczególnym punktom danych lokalnych tak aby odzwierciedlały wyniki uzyskane na etapie globalnym. Odbywa się to w dwóch etapach. Pierwszym jest przypisanie punktom należącym do globalnych klastrów (rozproszonych między więcej niż jedną bazę danych) nowych numerów grup na podstawie odebranej z serwera mapy z wynikami. Mapa ta zawiera mapowanie: lokalny klaster globalny klaster. Odnosząc się rysunków 4.2. i 4.3. takie mapowanie może wyglądać następująco: 56

C4 C6 C5 C6 C7 C6 Drugi etap to aktualizacja lokalnego szumu, a więc przypisanie numeru grupy globalnej, której elementem jest dany punkt. 57

Rozdział 5 Wykonane eksperymenty Badania algorytmów działających na danych rozproszonych zostały przeprowadzone dla pięciu zbiorów danych. Ponadto, dodatkowe eksperymenty zostały wykonane dla szóstego zbioru, tak aby pokazać wyniki jakie daje zastosowanie przedstawionych w rozdziale 3.7. usprawnień w odniesieniu do algorytmu DBDC. Najpierw został uruchomiony algorytm DBSCAN dla całości danych służący jako rozwiązanie wzorcowe a następnie algorytmy rozproszone dla trzech, pięciu oraz dziesięciu węzłów z danymi (k=1, k=3, k=5, k=10). Dla algorytmu z wyznaczaniem modeli lokalnych dane były losowo umieszczane na poszczególnych węzłach i zawierały podobną ilość punktów. Jako, że drugi algorytm z partycjonowaniem, przyjmuje założenie, że dane są wstępnie posortowane toteż każdy węzeł przechowuje dane z konkretnego przedziału. Zostanie to szerzej omówione przy opisie testów dla tego algorytmu. Po zakończeniu obliczeń przez dany algorytm rozproszony jego wyniki były porównywane z wynikami algorytmu DBSCAN działającego na całości danych przy użyciu pokazanej w podrozdziale 5.1. miary podobieństwa (jakości). Dalej znajduje się opis zbiorów danych użytych do grupowania wraz z wynikami uzyskanymi dla algorytmu DBSCAN na tychże danych (rozwiązania referencyjne). 5.1. Miara podobieństwa grupowania Mając zaimplementowane algorytmy działające na danych rozproszonych kolejnym krokiem było opracowanie skutecznej metody, która pozwoliłaby określić podobieństwo takiego rozproszonego grupowania w odniesieniu do wyników zwracanych przez algorytm DBSCAN wykonanego na całości danych (rozwiązanie referencyjne). Nie będzie niczym zaskakującym stwierdzenie, że dla dobrych (podobnych) wyników miara ta powinna przyjmować wyższe wartości niż dla wyników gorszych. Załóżmy, że zbiór danych podlegających grupowaniu składa się z punktów P1,..,.P8 znajdujących się w dwóch bazach danych. Punkty te zostały poddane grupowaniu rozproszonemu a wyniki, a także wyniki algorytmu referencyjnego zostały zamieszczone w tabeli 5.1.: 58

Punkt Klaster ref. Klaster rozpr. P1 C1 D1 P2 C1 D1 P3 C1 D2 P4 C1 D2 P5 C2 D3 P6 C2 D3 P7 C2 D4 P8 C2 D4 Tabela 5.1. Jak widać grupowanie referencyjne, operujące na całości danych znalazło dwa klastry C1 oraz C2, każdy składający się z czterech punktów. Rozwiązanie rozproszone natomiast znalazło cztery dwupunktowe klastry D1, D2, D3, D4. Istotne jest więc posiadanie metody, która pomoże określić, czy algorytm rozproszony dobrze grupuje dane, to znaczy, czy wyniki których dostarcza są wystarczająco podobne do wyników uzyskanych przy pomocy algorytmu referencyjnego a jeśli tak, to w jakim stopniu. Zastosowana do tego celu metoda oparta jest na indeksie Jaccarda. Poniżej znajduje się jej opis: Załóżmy, że mamy dwa zbiory wyników (znalezione klastry): wyniki algorytmu referencyjnego C={C1,C2,..Cm} oraz wyniki algorytmu rozproszonego D={D1,D2,..Dn} dla tego samego zbioru danych. Pierwszym krokiem jest zbudowanie macierzy podobieństwa, o postaci:, = Element, takiej macierzy jest nazywany Indeksem Jaccarda i jest równy: =, gdzie p to rozmiar części wspólnej a q rozmiar sumy zbiorów C i i D j (a więc punkty wspólne w klastrach C i i D j oraz suma punktów z tychże klastrów). Dla tak określonej macierzy jakość grupowania (lub podobieństwo między grupowaniami C i D) wynosi:, =,, max, ) Poniżej znajduje się przykład obliczania jakości grupowania dla danych z tabeli 1. Macierz podobieństwa: Klaster D1 D2 D3 D4 C1 2/4 2/4 0/6 0/6 C2 0/6 0/6 2/4 2/4 Tabela 5.2. 59

, = 2 4 +2 4 +0 6 +0 6 +0 6 +0 6 +2 4 +2 4 =0.5=50% 4 Będąc przy omawianiu sposób wyznaczania jakości grupowania warto zauważyć, że jakość na poziomie Q=90%, nie oznacza, że tyle punktów posiada poprawnie przypisaną grupę ale klastry zostały wyznaczone z poprawnością 90%. Ilustrują to poniższe przykłady: Przykład 1. Punkt Klaster ref. Klaster rozpr. P1 C1 D1 P2 C1 D1 P3 C1 D1 P4 C1 D1 P5 C1 D1 P6 C1 D1 P7 C1 D1 P8 C1 D1 P9 C2 SZUM P10 C2 D2 Tabela 5.3. Jak mogłoby się wydawać, jakość takiego grupowania powinna wynieść 90% (dziewięć na dziesięć punktów ma poprawnie przypisany klaster). Tak jednak nie jest klaster D1 odpowiada w całości klastrowi C1 z grupowania referencyjnego, natomiast drugi D2 tylko w połowie (jeden z dwóch punktów przyporządkowany jest poprawnie, drugi natomiast został uznany za szum). Jakość grupowania wynosi zatem Q=75%. Przykład 2. Punkt Klaster ref. Klaster rozpr. P1 C1 D1 P2 C1 D1 P3 C1 D1 P4 C1 D1 P5 C1 D1 P6 C2 D2 P7 C2 D2 P8 C2 D2 P9 C2 SZUM P10 C2 D2 Tabela 5.4. W tym przykładzie algorytm rozproszony również znalazł dwa klastry pierwszy poprawnie, w 100% odpowiadający klastrowi C1, natomiast drugi w 80% odpowiadający klastrowi C2 (cztery na pięć punktów co do rozwiązania referencyjnego). Wyliczona za pomocą powyższej metody jakość algorytmu rozproszonego wynosi zatem 90%. Z powyższych rozważań wynika, że dla określonej miary jakości algorytmów nie ma znaczenia liczba punktów, którym zostały przyporządkowane poprawne klastry ale to w jakim 60

stopniu klastry znalezione przez algorytm rozproszony odpowiadają klastrom znalezionym przez algorytm referencyjny. 5.2. Weryfikacja poprawności rozwiązań Aby zbadać jakość algorytmów działających na danych rozproszonych zostało przeprowadzonych kilka eksperymentów na różnych zbiorach liczących od kilkuset do kilku tysięcy punktów. Wcześniej jednak, została wykonana prosta weryfikacja na danych zawierających po kilkanaście obiektów i podzielonych pomiędzy trzy węzły, której celem było sprawdzenie czy dany algorytm w ogóle działa a jeśli tak, to jak dobrze radzi sobie z rozproszonymi danymi. Co więcej, zostały wykonane proste eksperymenty ukazujące słabe strony algorytmów oraz skrajne przypadki wraz z tak rozmieszczonymi danymi i tak dobranymi parametrami algorytmów dla których jakość obliczana przy użyciu opisanej wcześniej miary wynosiła Q=0%. Te proste testy pozwalające na pierwszy rzut zweryfikować działanie algorytmów zostały pokazane poniżej. Rozwiązanie referencyjne (wyniki działania algorytmu na całości danych) zostało pokazane na wykresie 5.1. Widać na nim, że grupowaniu podlegało trzynaście punktów, które tworzą trzy klastry a pozostałe dwa punkty to szum. Dane te zostały następnie rozdzielone pomiędzy trzy węzły i pogrupowane algorytmem DBSCAN z następującymi parametrami: dla dwóch pierwszych testów parametry algorytmu to minpts = 2, Eps = 1.1. Dla ostatniego wartość minpts wynosiła 3. 12 10 8 6 4 2 Klaster 1 Klaster 2 Klaster 3 Szum. Test 1. 0 0 5 10 15 Wykres 5.1. Dane dla algorytmu referencyjnego Test ten miał na celu zbadanie jakości grupowania dla rozproszonych pomiędzy trzy węzły danych. Kolejne wykresy prezentują zawartość każdego węzła. 61

12 10 8 6 4 Klaster 1 Szum 2 0-1 4 9 14 Wykres 5.2. Zawartość pierwszego węzła 12 10 8 6 Klaster 1 4 2 0 0 5 10 Wykres 5. 3. Zawartość drugiego węzła 12 10 8 6 4 Klaster 1 Szum 2 0-1 4 9 14 Wykres 5.4. Zawartość trzeciego węzła 62

Dla takiego rozproszenia danych jak na wykresach powyżej algorytm rozproszony dostarcza takich samych wyników jak algorytm referencyjny znajdowane są takie same klastry oraz takie same punkty są oznaczane jako szum, jakość więc wynosi Q=100%. Ciekawie wygląda sytuacja jeśli Klaster 1 z wykresu 5.1. zostanie rozdzielony pomiędzy dwa różne węzły. Jako, że parametr n = 2, obydwa punkty zostaną uznane lokalnie za szum, nie wejdą w skład modelu lokalnego, nie zostaną przesłane celem wyznaczenia modelu globalnego, co w rezultacie spowoduje, że Klaster 1 nie zostanie znaleziony a jakość grupowania spadnie do wartości Q = 66.67%. Jest to przedstawione jako kolejny przykład: Test 2: 12 10 8 6 4 Klaster 1 Klaster2 Szum 2 0-1 4 9 14 Wykres 5.5. Zawartość pierwszego węzła 12 10 8 6 Klaster 1 4 2 0-1 4 9 14 Wykres 5.6. Zawartość drugiego węzła 63

12 10 8 6 4 Klaster 1 Szum 2 0 0 5 10 15 Wykres 5.7. Zawartość trzeciego węzła 12 10 8 6 4 Klaster 1 Klaster 2 Szum 2 0 0 5 10 15 Wykres 5.8. Dane wraz z przypisanymi im klastrami Patrząc na powyższe wykresy, można zauważyć jedną zmianę jaka nastąpiła w stosunku do poprzedniego przykładu punkty wchodzące w skład danych klastrów zostały rozproszone po różnych węzłach (w poprzednim przykładzie całe klastry były zawarte razem). W tabeli poniżej zostały zebrane wyniki grupowań dla powyższych przykładów. Punkt [1,2] [2,2] [1,11] Rozw. ref. Klaster 1 Klaster 1 Szum Test 1 Klaster 1 Klaster 1 Szum Test 2 Szum Szum Szum [11,1] [12,1] [11,2] [12,2] Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 Klaster 3 [11,11] Szum Szum Szum [5,4] [5,5] [5,6] [6,5] Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 Klaster 2 64

[6,4] Klaster 2 Klaster 2 Klaster 2 Jakość - 100% 66.67% Tabela 5.5. W dalszej część pracy zostaną opisane bardziej zaawansowane eksperymenty dotyczące jakości grupowania. 5.3. Zbiory danych Do testów jakości algorytmów rozproszonych użytych zostało pięć zbiorów danych różniących się między sobą liczbą punktów, grup oraz liczbą danych stanowiących szum. Zbiory gen_without_noise oraz gen_with_noise zostały wygenerowane przeze mnie, natomiast pozostałe aggregation, 40c i s1 pochodzą z internetowych repozytoriów danych. Ponadto sztucznie został wygenerowany dodatkowy zbiór gen_small_clusters. Aggregation - niewielki zbiór danych, który jest złożony z siedmiu klastrów i nie zawiera szumu. Zbiór ten jest bardzo użyteczny przy eksperymentach dotyczących jakości grupowania z powodu niewielkiej liczby klastrów o niezbyt skomplikowanych kształtach i niewielkiej liczby punktów. Liczba punktów: 775 Liczba klastrów: 7 minpts=3 eps=1.5 Gen_without_noise jest to wygenerowany klaster, niezawierający szumu, złożony z pięciu grup o dużej gęstości 65

Liczba punktów: 6633 Liczba klastrów: 5 minpts=15 eps=70 Gen_with_noise również wygenerowany zbiór danych, bardzo podobny do poprzedniego z dodaną znaczną ilością szumu. Liczba punktów: 7630 Liczba klastrów: 5 minpts=15 eps=34 66

40c zbiór danych złożony z czterdziestu klastrów o bardzo różnej liczbie punktów oraz niewielkiej odległości od siebie. Zbiór ten jest przykładem, gdzie w grupowaniu rozproszonym wyniki nie są do końca identyczne z wynikami algorytmu referencyjnego co jest spowodowana bliską odległością klastrów od siebie, różną ich gęstością, kształtem a także bardzo niewielkimi grupami. Liczba punktów: 2563 Liczba klastrów: 40 minpts=5 eps=0.55 s1- zbiór danych złożony z piętnastu klastrów położonych w niewielkiej odległości od siebie 67

Liczba punktów: 5000 Liczba klastrów: 15 minpts=20 eps=35000 gen_small_clusters zbiór zawierający grupy o rozmiarze od 120 do 330 punktów. Służy do pokazania wyników algorytmów dla klastrów będących lokalnym szumem. Liczba punktów: 4580 Liczba klastrów: 20 minpts=120 eps=160 5.4. Algorytm DBDC Jak wspomniano wcześniej, dla każdego ze zbiorów danych były wykonywane osobne eksperymenty. Interesującą kwestią było sprawdzenie jaki wpływ na jakość grupowania ma rozproszenie danych pomiędzy coraz większą liczbę urządzeń. Testy były wykonane na danych rozproszonych pomiędzy trzy, pięć oraz dziesięć węzłów. 5.4.1. Aggregation Na wykresach poniżej zostały ukazane dane zawarte w trzech różnych bazach danych. Na pierwszy rzut oka widać, że lokalne grupowanie znajduje o wiele więcej klastrów niż jest ich w rzeczywistości (na kolejnym wykresie został uzyskany wynik grupowania rozproszonego) mimo użytych takich samych parametrów jak w grupowaniu referencyjnym (n=3, ε=1.5). To co zwraca uwagę, to fakt, że w stosunku do grupowania referencyjnego dwa klastry zostały złączone w jeden (skutkuje to jakością grupowania wynoszącą Q=85.71%.). Jest to spowodowane bliskością obydwu grup a także wartością parametru ε global który dwa punkty reprezentacyjne znajdujące się blisko siebie połączył w jeden klaster. Początkowa wartość tego parametru wynosi ε global =3. Już w typ przypadku widać, że algorytm ten wymaga 68

dostrajania to znaczy znalezienie (najczęściej metodą prób i błędów odpowiedniej, mniejszej wartości ε global ). Początkowe obniżenie do ε global =2.75 również powoduje uzyskanie takich samych wyników, dopiero wartość równa ε global =2.5 daje wynik identyczny jak algorytm referencyjny, zatem ostateczna jakość grupowania jest równa Q=100%. Wykres 5.9 Zawartość pierwszej bazy danych Wykres 5.10 Zawartość drugiej bazy danych Wykres 5.11 Zawartość trzeciej bazy danych 69

Wykres 5.12 Wyniki grupowania Dla rozproszenia danych pomiędzy pięć węzłów jakość wyniosła Q=99.58% nawet dla ε global =3 nie trzeba regulować tego parametru jak poprzednio. Może to oznaczać, że optymalna wartość tego parametru zależy w dużej mierze od wybranych punktów reprezentacyjnych. Jeżeli dla dwóch osobnych klastrów jako model lokalny zostaną wybrane punkty leżące blisko siebie wówczas dla zbyt wysokiej wartości ε global zostaną uznane za wchodzące w skład jednej grupy. Na rysunku poniżej znajduje się przykładowa zawartość jednej bazy. Jak widać w grupowaniu lokalnym występuje dosyć dużo szumu. Algorytm jednak dobrze radzi sobie z tym na etapie grupowania globalnego, bowiem szum ten zostaje poprawnie przypisany do odpowiednich grup. Wykres 5.13 Przykładowe dane dla k=5 Przy liczbie węzłów równej dziesięć jakość grupowania spada znacząco do poziomu Q=67.78%. Jest to spowodowane tym, że punktów w każdej bazie jest stosunkowo mało, bowiem zostały rozrzucone losowo między dziesięć węzłów. Na etapie grupowania lokalnego wiele z nich jest oznaczane jako szum a model lokalny nie jest kompletny co powoduje tak 70

niską jakość. Zostało to przedstawione na wykresie 5.14. widać, że liczba punktów w bazie jest niewielka, punkty są oddalone od siebie oraz występuje sporo szumu (żółte krzyżyki). Zachowanie takie jest dowodem na niezbyt dobrą skalowalność algorytmu wymaga jest tutaj interwencja użytkownika. Jedynym rozwiązaniem problemu jest regulacja parametrów algorytmu na przykład zwiększenie parametru ε np. do wartości ε=1.8. Dzięki temu więcej punktów zostanie włączonych do klastrów w grupowaniu lokalnym oraz więcej szumu zostanie przyłączone podczas etapu aktualizacji danych. Dla wartości ε=1.8 jakość jest większa i wynosi Q=71.43%. Dalsze zwiększanie wartości tego parametru może skutkować drastycznym obniżeniem jakości albowiem kilka różnych grup może zostać połączone w jedną. Jest to przedstawione na rysunku 5.15., gdzie dla ε=2.6 odległe klastry zostały złączone w jeden a jakość wynosi Q=28.57%. Początkowa wartość parametru n=3. Obniżenie tej wartości do dwóch niestety nie ma wpływu na poprawę jakości grupowania. Warto w tym miejscu napisać jak ważne dla jakości grupowania danych rozproszonych jest odpowiednie dobranie parametrów tegoż grupowania. Jeśli danych jest niewiele ważne jest dobranie takich parametrów aby przy wyznaczaniu modelu lokalnego jak najmniej punktów było oznaczane jako szum co będzie skutkowało bardzo niską skutecznością takiego grupowania. Warto też przyjrzeć się parametrowi n algorytmu DBSCAN. W przeciwieństwie do grupowania operującego na całości danych wartość ta powinna być mniejsza punkty wchodzące w skład danego klastra dla n=10 przy rozproszeniu ich między kilka węzłów będą w większości przypadków kwalifikowane jako szum. Problem ten został już zasygnalizowany wcześniej. Wykres 5.14 Przykładowe dane dla k=10 71

Wykres 5.15 Wynik grupowania dla ε=2.6 Liczba węzłów k=3 k=5 k=10 Jakość 100% 99.58% 71.43% 5.4.2. Gen_without_noise Jakość grupowania dla trzech rozproszonych baz wynosi 99.68%. Świadczy to o poprawnym doborze parametrów zarówno dla etapu grupowania lokalnego jak i globalnego. Z pewnością istotny jest fakt, że klastry są oddalone od siebie a więc nie ma konieczności regulowania parametrów, przede wszystkim ε global. Poniżej znajduje się przykładowa zawartość takiej bazy jak widać już na tym etapie znajdowane są poprawne grupy. Wykres 5.16 Przykładowe dane dla k=3 72

Nie inaczej jest też dla pięciu rozproszonych stron tutaj jakość algorytmu jest tylko nieznacznie gorsza wynosi 99.46% Podobnie jak dla trzech stron tutaj też, już na etapie grupowania lokalnego wyznaczane są prawidłowe klastry. Poniżej przykład. Wykres 5.17. Przykładowe dane dla k=5 Jeśli chodzi o rozproszenie na dziesięć węzłów jakość wynosi Q=98.51%. Różnicą w stosunku do poprzednich wyników jest fakt, że jeden z klastrów, lokalnie został uznany za kilka mniejszych oraz więcej danych uznane zostało za szum. Można to zobaczyć na rysunku poniżej. Wszystko to jednak jest 'naprawiane' podczas grupowania globalnego oraz podczas etapu aktualizacji danych a jakość na poziomie prawie 99% jest z całą pewnością zadowalająca. Przykład ten ukazuje, że istotna jest liczba punktów w bazach danych (nie może być za mała) oraz odpowiednie dobranie parametrów grupowania. Wykres 5.18. Przykładowe dane dla k=10 Liczba węzłów k=3 k=5 k=10 Jakość 99.68% 99.46% 98.51% 73

5.4.3. Gen_with_noise Test ten jest bardzo podobny do poprzedniego z jedną różnicą dodanych zostało sporo danych będących szumem. Ma to za cel sprawdzenie jak algorytm radzi sobie w przypadku gdy oprócz klastrów, ok. 15% zebranych danych stanowi szum. Dla trzech baz danych zawierających dane do grupowania zostało wykonanych kilka testów. Pierwszy z nich grupowanie z parametrami identycznymi jak dla algorytmu referencyjnego dało stosunkowo niską jakość grupowania 82.56%. Było to spowodowane m.in. tym, że jeden z klastrów został podzielony na kilka mniejszych. Obrazuje to rysunek 5.19. Rozważając uzyskany wynik mniejsze klastry nie zostały złączone, została zwiększona wartość parametru ε global lecz spowodowało to tylko nieznaczny wzrost jakości grupowania. Ponowne uruchomienie algorytmu tym razem z wartością parametru ε lokal z 34 do 40 dało o wiele bardziej satysfakcjonujący wynik jakość wyniosła 99.09% (rysunek 5.20). Ten test stanowi dobry przykład tego, że często koniecznym jest 'dostrojenie' lokalnych wartości parametrów algorytm uruchamiany z parametrami takimi jak algorytm operujący na całości danych może dawać gorsze wyniki. Wykres 5.19 Przykładowe dane dla k=3, ε=34 Wykres 5.20. Wyniki grupowania dla k=3, ε=34 74

Wykres 5.21 Wyniki grupowania dla k=3, ε=40 Dla pięciu rozproszonych stron również zostały wykonane dwa testy dla dwóch wartości parametru ε. Dla wartości równiej jak poprzednie ε=40 jakość grupowania była zaskakująco mała Q=54.61%. Było to wynikiem, że punkty wchodzące w skład jednego z klastrów zostały uznane za szum ich gęstość była mniejsza niż gęstość pozostałych grup. Poniżej znajduje się ilustracja przykładowych danych. Po zwiększeniu wartości tego parametru do pięćdziesięciu jakość grupowania była zadowalająca i wynosiła Q=98.79%. Wykres 5.22 Przykładowa baza danych dla k=5, ε=40 Przy liczbie dziesięciu rozproszonych baz danych początkowe parametry (n=15, ε=50) również nie zapewniły wystarczającej jakości grupowania znowu sporo danych zostało uznanych za szum. Tym razem zmiana dotyczyła nie parametru ε ale parametru n jego wartość została zmniejszona z 15 na 10. Zabieg ten zapewnił znaczny wzrost jakości grupowania z 61.98% na 99.16%. Na wykresach 5.23. i 5.24. znajduje się przykładowa zawartość bazy danych dla obydwu wartości n. Można zauważyć, że dla n=15 'prostokątny' klaster jest w większości uznany za szum. 75

Wykresy 5.23-24 Przykładowe bazy danych dla n=15 i n=10 5.4.4. 40c Liczba węzłów k=3, ε=34 k=3, ε=40 k=5, ε=40 k=5, ε =50 k=10, n=15 k=10, n=10 Jakość 82.56% 99.09% 54.61% 98.79% 61.98% 98.16% Jakość grupowania dla tego zbioru danych przy trzech węzłach jest niska wynosi tylko 69.60%. Jest to spowodowane tym, że wartość parametru n wynosząca pięć jest zbyt duża, bowiem kilka grup znalezionych przez algorytm referencyjny składa się z niewielu punktów - od trzech do dziesięciu. Skutkuje to potraktowaniem wspomnianych grup jako szum a konsekwencji niską jakością grupowania rozproszonego. Na przedstawionych poniżej rysunkach widać, że wiele klastrów zostało uznanych za szum w każdej, lokalnej bazie danych. 76

Wykresy 5.25-27 Zawartość trzech baz danych Po zmniejszeniu wartości parametru z n=5 do n=3 udało się uzyskać jakość grupowania równą Q=79.23%. Kolejne zmniejszenie tegoż parametru skutkuje jeszcze mniejszą jakością grupowania niż na początku. Podobna sytuacja ma miejsce dla liczby węzłów równej pięć. Tutaj jakość grupowania także jest dosyć niska i wynosi 77.87% a dla dziesięciu baz danych już tylko 75.33%. Test ma bardzo niską jakość z dwóch powodów. Po pierwsze klastry znajdują się w niewielkiej odległości od siebie a wiec dla zbyt dużych wartości ε global niektóre z nich mogą zostać złączone i potraktowane jako jeden, większy klaster. Drugą istotną kwestią jest fakt, że ten zbiór testowy zawiera wiele małych klastrów złożonych z kilku lub kilkunastu punktów które przy rozproszenie na kilka baz danych nie będą znalezione. Poniżej znajdują się przykładowe dane z baz dla k=5 i k=10. Widać na nich, że sporo danych jest oznaczanych jako szum, szczególnie przy rozproszeniu na dziesięć węzłów. Wykres 5.28 Przykładowa baza danych dla k=5 Wykres 5.29 Przykładowa baza danych dla k=10 Liczba węzłów k=3 k=5 k=10 Jakość 79.23 77.87% 75.33% 77

5.4.5 s1 Przy rozproszeniu danych na trzy węzły jakość grupowania wyniosła 98.89% Wykres 5.30 Przykładowa baza danych dla k=3 Dla pięciu baz danych wynik również jest zadowalający Q=98.59 Wykres 5.31 Przykładowa baza danych dla k=5 Dla takich samych parametrów algorytmu oraz podziale na dziesięć węzłów jakość grupowania wyniosła 93.02%. Zamieszczone poniżej rysunki ukazują, że przy poprawnie dobranych parametrach punkty będące lokalnie uznane za szum w jednej bazie (punkty w lewym dolnym rogu na rysunku po lewo), mogą mieć pobliżu wystarczająco dużo punktów znajdujących się w innych bazach i tworzących klastry (punkty w lewym dolnym rogu na rysunku po prawo), tak, że na etapie wyliczania modelu globalnego oraz aktualizacji danych zostaną włączone do klastra. Test ten także jest dobrym przykład, na dosyć wysoką jakość grupowania bez konieczności dopasowywania żadnego z parametrów algorytmu. 78

Wykresy 5.32-33 Dwie z dziesięciu przykładowe bazy danych dla k=10 5.5. Algorytm IBDC Liczba węzłów k=3 k=5 k=10 Jakość 98.89% 98.59% 93.02% Głównym założeniem tego algorytmu było wstępne sortowanie danych, takie, że każdy węzeł przechowuje dane z konkretnego przedziału (bądź dane przed zapisem trafiają do odpowiedniej bazy, która 'obsługuje' dany zakres wartości). Dane leżące blisko granic podziału to jest, nie dalej niż odległość równa ε były wysyłane do serwera koordynującego i tam scalane. Poniżej znajdują się wyniki dla tego algorytmu dla zbiorów danych jak wcześniej. 5.5.1. Aggregation Poniższe wykresy obrazują sposób rozmieszczenia danych na poszczególnych partycjach. Dla k=3 widać, że punkty dla których 12 trafiły do pierwszej bazy danych, te, dla których >12 oraz 32 do drugiej a pozostałe do trzeciej bazy danych. Można zauważyć, że dla pierwszego przedziału zostały znalezione cztery grupy. Dwie z nich to grupy lokalne, to znaczy takie, które nie mają punktów leżących blisko granicy podziału a dwie pozostałe to grupy globalne, czyli takie, których punkty znajdują się w więcej niż jednej bazie danych. Przedział drugi zawiera pięć grup, z których cztery leżą na tyle blisko granic podziału, że muszą być rozpatrzone w procesie łączenia. Ostatni przedział zawiera tylko dwie grupy globalne. Przypatrując się poniższym wykresom można zauważyć nierównomierny rozkład danych na poszczególnych węzłach jedna baza może zawierać wiele punktów a inna tylko kilka taka sytuacja występuje np. dla k=10, gdzie pierwszy przedział zawiera zaledwie kilka punktów (Wykres 5.36). Warto zauważyć, że jeśli partycji z danymi jest wiele pewne klastry mogą zostać rozproszone na kilka partycji. W tym konkretnym przypadku nie ma to wpływu na jakość grupowania która za każdym razem wynosi Q=100% nawet bez konieczności poprawiania parametrów algorytmu jak to miało miejsce poprzednio. Tutaj algorytm przyjmuje identyczne parametry jak DBSCAN uruchamiany dla całości danych. 79

Wykres 5.34 Zawartość poszczególnych baz danych dla k=3 Wykres 5.35 Zawartość poszczególnych baz danych dla k=5 Wykres 5.36. Zawartość poszczególnych baz danych dla k=10 Kwestią, której również warto się jest przyjrzeć jest ilość punktów granicznych w zależności od stopnia rozproszenia. Jeżeli k=3, liczba znalezionych punktów leżących w odległości mniejszej niż ε od granicy podziału wynosi w sumie 197 stanowi około 25% wszystkich punktów. Jest to wartość duża ale wciąż akceptowalna. Jeżeli w grupowaniu bierze udział 5 stron, liczba punktów granicznych wynosi 310 czyli 40% punktów. Jeszcze większa wartość jest dla k=10, gdzie liczba punktów wymagająca scalania wynosi 572 a więc aż 74%. Sytuacja taka jest spowodowana tym, że dla dziesięciu baz danych, każdy przedział ma szerokość równą 4, jest więc bardzo wąski, co dla wartości ε=1.5 powoduje, że większość punktów z danego przedziału znajduje się w odległości bliskiej granic podziału (sytuacja ta była wspomniana w rozdziale czwartym). Liczba węzłów k=3 k=5 k=10 Jakość 100% 100% 100% 80

5.5.2. Gen_without_noise Poniżej zostało ukazane rozmieszczenie danych w poszczególnych bazach dla k=3, k=5 oraz k=10. Jakość grupowania tychże danych jest bardzo wysoka (~100%). Wykres 5.38 Zawartość poszczególnych baz danych dla k=3 Wykres 5.39 Zawartość poszczególnych baz danych dla k=5 Wykres 5.40 Zawartość poszczególnych baz danych dla k=10 5.5.3. Gen_with_noise Liczba węzłów k=3 k=5 k=10 Jakość 99.99% 99.99% 99.93% Poniżej znajdują się wykresy przedstawiające sposób rozmieszczenia danych. Również w tym przypadku, mimo obecności szumu jakość grupowania jest bardzo wysoka. 81

Wykres 5.41 Zawartość poszczególnych baz danych dla k=3 Wykres 5.42 Zawartość poszczególnych baz danych dla k=5 Wykres 5.43 Zawartość poszczególnych baz danych dla k=10 Liczba węzłów k=3 k=5 k=10 Jakość 99.58% 99.56% 99.48% 5.5.4. 40c Jakość grupowania rozproszonego algorytmem DBDC dla tego zbioru danych była bardzo niska (70%-80%). Używając algorytmu z przedziałami uzyskane wyniki są również gorsze niż wyniki na innych zbiorach danych dla tego algorytmu, jednak w tym przypadku znacząco lepsze niż te algorytmu DBDC. Tutaj uzyskana jakość dla trzech rozproszonych baz danych jest bardzo wysoka i wynosi prawie 100%. Niestety dla pięciu czy dziesięciu baz danych jakość grupowania jest już niższa ~94%, co jest spowodowane nieregularną gęstością danych klastrów a także ich nie zawsze prostymi kształtami. Na wykresach poniżej został ukazany sposób rozmieszczenia danych w bazach. 82

Wykres 5.44 Zawartość poszczególnych baz danych dla k=3 Wykres 5.45 Zawartość poszczególnych baz danych dla k=5 Wykres 5.46 Zawartość poszczególnych baz danych dla k=10 Liczba węzłów k=3 k=5 k=10 Jakość 99.86% 94.04% 94.16% 5.5.5. s1 Grupowanie ostatniego zbioru danych pod względem jakościowym również było bardzo zadowalające. Uzyskana tutaj jakość przy rozproszeniu nawet na dziesięć baz danych była większa niż 99%. 83

Wykres 5.47 Zawartość poszczególnych baz danych dla k=3 Wykres 5.48 Zawartość poszczególnych baz danych dla k=5 Wykres 5.49. Zawartość poszczególnych baz danych dla k=10 Liczba węzłów k=3 k=5 k=10 Jakość 99.86% 99.63% 99.11% 5.6. Znajdowanie niewielkich klastrów Ten podrozdział zawiera opis eksperymentów wykonanych na zbiorze gen_small_clusters. Celem tych badań było porównanie wyników algorytmów DBDC, IBDC oraz dwóch zaproponowanych wcześniej udoskonaleń związanych z wykrywaniem rozproszonych klastrów złożonych z lokalnego szumu. Zbiór danych, sposób ich rozproszenia oraz parametry grupowania zostały celowo tak dobrane aby pokazać, że pomimo dwudziestu istniejących grup, znalezionych oczywiście przez algorytm DBSCAN uruchomiony na całości danych, algorytm DBDC nie poradził sobie z ich znalezieniem. Poniżej zostały przedstawione wyniki (k=3): 84