Analiza skupień. Konspekt do zajęć: Statystyczne metody analizy danych. Agnieszka Nowak-Brzezińska 28 maja 2012

Podobne dokumenty
Analiza skupie«konspekt do zaj : Statystyczne metody analizy danych

Hierarchiczna analiza skupień

Eksploracja danych w środowisku R

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

Inteligentna analiza danych

Analiza skupień. Idea

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

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

Agnieszka Nowak Brzezińska

Algorytm grupowania danych typu kwantyzacji wektorów

Algorytm grupowania danych typu kwantyzacji wektorów

ALGORYTM RANDOM FOREST

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

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

Klasyfikator. ˆp(k x) = 1 K. I(ρ(x,x i ) ρ(x,x (K) ))I(y i =k),k =1,...,L,

Co to jest grupowanie

Agnieszka Nowak Brzezińska Wykład III

CLUSTERING. Metody grupowania danych

Sieci Kohonena Grupowanie

Agnieszka Nowak Brzezińska Wykład III

Wykład 4: Statystyki opisowe (część 1)

METODY INŻYNIERII WIEDZY

Idea. Algorytm zachłanny Algorytmy hierarchiczne Metoda K-średnich Metoda hierarchiczna, a niehierarchiczna. Analiza skupień

Techniki grupowania danych w środowisku Matlab

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

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

METODY INŻYNIERII WIEDZY

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

4.3 Grupowanie według podobieństwa

Zagadnienie klasyfikacji (dyskryminacji)

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

Skalowanie wielowymiarowe idea

Metoda list prostych Wykład II. Agnieszka Nowak - Brzezińska

Metody analizy skupień Wprowadzenie Charakterystyka obiektów Metody grupowania Ocena poprawności grupowania

Czym jest analiza skupień?

SYSTEMY UCZĄCE SIĘ WYKŁAD 3. DRZEWA DECYZYJNE. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

METODY INŻYNIERII WIEDZY

Aproksymacja funkcji a regresja symboliczna

Elementy statystyki wielowymiarowej

Konkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji

Wykrywanie nietypowości w danych rzeczywistych

Optymalizacja systemów

CLUSTERING II. Efektywne metody grupowania danych

ALGORYTMY SZTUCZNEJ INTELIGENCJI

Analiza skupień. Idea

METODY CHEMOMETRYCZNE W IDENTYFIKACJI ŹRÓDEŁ POCHODZENIA

Uczenie się pojedynczego neuronu. Jeśli zastosowana zostanie funkcja bipolarna s y: y=-1 gdy z<0 y=1 gdy z>=0. Wówczas: W 1 x 1 + w 2 x 2 + = 0

Drzewa decyzyjne i lasy losowe

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Analiza składowych głównych. Wprowadzenie

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

Analiza skupień. Idea

IMPLEMENTACJA SIECI NEURONOWYCH MLP Z WALIDACJĄ KRZYŻOWĄ

SPOTKANIE 6: Klasteryzacja: K-Means, Expectation Maximization

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Analiza korespondencji

SCENARIUSZ LEKCJI. TEMAT LEKCJI: Zastosowanie średnich w statystyce i matematyce. Podstawowe pojęcia statystyczne. Streszczenie.

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Przestrzeń algorytmów klastrowania

Elementy modelowania matematycznego

Spacery losowe generowanie realizacji procesu losowego

Sztuczna inteligencja : Algorytm KNN

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

MODELE LINIOWE. Dr Wioleta Drobik

Metoda Karnaugh. B A BC A


Temat: Algorytm kompresji plików metodą Huffmana

Wprowadzenie do analizy dyskryminacyjnej

STATYSTYKA I DOŚWIADCZALNICTWO

TEORETYCZNE PODSTAWY INFORMATYKI

Analiza Skupień Cluster analysis

Wyszukiwanie informacji w internecie. Nguyen Hung Son

1. Grupowanie Algorytmy grupowania:

Analiza składowych głównych

Optymalizacja ciągła

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

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

Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport

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

Metody numeryczne I Równania nieliniowe

STATYSTYKA OPISOWA. LICZBOWE CHARAKTERYSTYKI(MIARY)

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Testy nieparametryczne

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

STATYSTYKA I DOŚWIADCZALNICTWO

Charakterystyki liczbowe (estymatory i parametry), które pozwalają opisać właściwości rozkładu badanej cechy (zmiennej)

Maciej Piotr Jankowski

Wektory, układ współrzędnych

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

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.

Otwórz R. Zmień katalog roboczy za pomocą File/Change Dir. Wczytaj plik przypisując go obiektowi o nazwie students:

Regresja wielokrotna. PDF created with FinePrint pdffactory Pro trial version

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Statystyka opisowa. Wykład I. Elementy statystyki opisowej

Programowanie dynamiczne

WYKŁAD 12. Analiza obrazu Wyznaczanie parametrów ruchu obiektów

Rozpoznawanie obrazów

MEODY GRUPOWANIA DANYCH

Transkrypt:

Analiza skupień Konspekt do zajęć: Statystyczne metody analizy danych Agnieszka Nowak-Brzezińska 28 maja 2012 1 Wprowadzenie Celem laboratorium jest analiza skupień wybranych zbiorów danych w środowisku R. Jest to metoda dokonująca grupowania (podziału) obiektów danego zbioru na względnie jednorodne klasy. Podstawą grupowania w większości algorytmów jest podobieństwo pomiędzy obserwacjami - wyrażone przy pomocy funkcji (metryki) podobieństwa. Istnieje wiele implementacji algorytmów analizy skupień w środowisku R, w ramach zajęć zostaną omówione te realizujące algorytmy: niehierarchiczne: k - średnich dostępny z funkcją k-means oraz k-medoidów dostępny z funkcją pam, hierarchiczne: agnes (ang. AGlomerative NESting) (dostępny z funkcją agnes) oraz hierarchiczny algorytm grupowania dostępny z funkcją hclust i możliwy do prezentacji graficznej dzięki funkcji plot. Każdy z pakietów uzupełniony jest o dokumentację, której znajomość pozwala wykonać poprawne analizy danych: http://cran.r-project.org/web/packages/cluster/cluster.pdf http://stat.ethz.ch/r-manual/r-patched/library/stats/html/00index. html http://cran.r-project.org/web/packages/mclust/mclust.pdf 2 Analiza skupień Grupowanie (ang. data clustering), zwane również analizą skupień lub klasyfikacją nienadzorowaną polega na podziale pewnego zbioru danych O O = {x i = (x i1,..., x id ) i=1,...,n } gdzie x i jest d-wymiarowym wektorem cech opisujących obiekt należący do zbioru, na pewne podzbiory wektorów (grupy). Podstawowym założeniem dotyczącym wynikowego podziału jest homogeniczność obiektów wchodzących w skład jednej grupy oraz heterogeniczność samych grup oznacza to, że wektory stanowiące jedną grupę powinny być bardziej podobne do siebie niż do wektorów pochodzących z pozostałych grup. Wynikiem grupowania N-elementowego zbioru O na c grup jest zazwyczaj tzw. macierz podziału B o wymiarze c N, w 1

której dany element b ik oznacza stopień przynależności wektora x k do grupy G i (wartość 1 świadczy o całkowitej przynależności wektora do grupy, natomiast 0 oznacza, że wektor do danej grupy wogóle nie należy). Ze względu na przyjęte założenia dotyczące przynależności wektorów do grup mówi się o trzech głównych typach podziałów: P odz c (N) = G 1,..., G c Gi O Podział twardy (ang. hard) uzyskuje się w efekcie takiego grupowania, w którym każdy wektor należy tylko do jednej grupy. Macierz podziału spełnia wtedy następujące warunki: 1 i c, 1 k N : b ik {0, 1}, co oznacza, że każdy wektor należy albo nie należy do danej grupy, 1 k N: c i=1 b ik = 1, co oznacza, że wektor należy tylko do jednej grupy, 1 i c : 0 < N k=1 b ik < N, co z kolei oznacza, że wszystkie grupy są niepuste. Istnieją także podziały: rozmyty oraz posybilistyczny ale z uwagi na fakt, że nie są one tematem tego opracowania, nie będziemy ich opisywać. Biorąc pod uwagę sposób tworzenia skupień, techniki analizy skupień można podzielić na dwie podstawowe kategorie: niehierarchiczne oraz hierarchiczne. Celem algorytmów niehierarchicznych jest znalezienie takiego podziału zbioru na zadaną liczbę podzbiorów, aby uzyskać optymalną wartość pewnego kryterium. Optymalizację kryterium osiąga się np. poprzez iteracyjne przemieszczanie obiektów między grupami. Metody hierarchiczne konstruują (jak sama nazwa sugeruje) pewną hierarchię skupień, która najczęściej reprezentowana jest graficznie w postaci drzewa binarnego nazywanego dendrogramem. W liściach takiego drzewa znajdują się elementy analizowanego zbioru, węzły natomiast stanowią ich grupy. Najbardziej pożądane cechy, jakich oczekuje się od algorytmów grupujących, to m.in.: jak najmniejsza liczba parametrów, które trzeba dostarczać z zewnątrz, jak najmniejsza krotność analizy elementów zbioru uczącego, niewrażliwość na różnice w kształcie, wielkości czy gęstości grup, zminimalizowany wpływ danych odstających na wynik przetwarzania, możliwość przetwarzania różnych typów danych (ciągłych, dyskretnych oraz kombinacji obu jednocześnie), niezależność wyniku od kolejności, w jakiej podawane są dane, skalowalność rozumiana jako zdolność do przetwarzania bardzo dużych zbiorów danych, przystosowanie do analizy danych o różnej wymiarowości. 2

2.1 Metody niehierarchiczne Algorytmy w ramach tych metod poszukują najlepszego podziału zadanego zbioru danych poprzez stopniową optymalizację, tzn. poprawę pewnych wskaźników jakości grupowania, uzyskiwanego w kolejnych etapach przetwarzania zbioru wejściowego. Początkowego podziału dokonuje się najczęściej w sposób losowy. Znaczącym z punktu widzenia końcowej klasyfikacji parametrem wejściowym jest liczba k, którą przekazuje się jako wartość zadaną lub wyznacza w sposób losowy decyduje ona o liczbie skupień otrzymanych w wyniku działania algorytmu. Z tego samego powodu istotnym jest dobór odpowiedniej funkcji kryterialnej, którą mierzona będzie jakość gru powania (stopień rozproszenia wektorów w poszczególnych grupach). Dziedziną funkcji kryterialnej J jest zbiór danych wejściowych O oraz wektor parametrów v = (v 1,..., v k ), gdzie k oznacza liczbę grup, a v i wektor parametrów określających i-tą grupę. Składowe wektora v stanowią reprezentacje poszczególnych skupień i nazywane są reprezentantami (prototypami) grup. Doboru odpowiedniej funkcji kryterialnej dokonuje się głównie w zależności od oczekiwanego kształtu grup. 2.1.1 Ogólny schemat postępowania W przypadku metod iteracyjnych algorytm grupowania składa się z następujących kroków: 1. wstępna inicjalizacja : wybierz k obiektów, które będą stanowić prototypy grup, 2. przypisuj pozostałe obiekty do grup tak, aby osiągnąć najlepszy podział (zgodnie z przyjętą funkcją kryterialną), 3. dla każdego otrzymanego skupienia wybierz ponownie prototyp, 4. powtarzaj poprzednie kroki tak długo, jak długo przyjęte kryterium będzie się poprawiać. Wadą metody jest jej zachłanność, przez co w wyniku otrzymuje się jedynie optimum lokalne i nie ma gwarancji osiągnięcia optimum globalnego. Największą jej zaletą jest łatwość implementacji i stosunkowo mała złożoność obliczeniowa. 2.1.2 Algorytm k-średnich Ten klasyczny algorytm analizy skupień, na wstępie ustala wartość parametru k decydującą o liczbie grup, które zostaną wyodrębnione ze zbioru danych. W sposób losowy wybiera się k reprezentantów tak, aby byli oni możliwie jak najbardziej od siebie oddaleni. Wybrane elementy stanowią zalążki grup (prototypy). W kolejnym kroku każdy element zbioru przypisywany jest do najbliższej mu grupy. Na tym etapie wyznaczone są grupy początkowe. Dla każdej z grup obliczany jest jej środek na podstawie średniej arytmetycznej współrzędnych obiektów do niej należących. Następnie rozważane i ponownie przydzielane do najbliższej (ze względu na odległość od poszczególnych centroidów) grupy są wszystkie obiekty. Tak długo nowe środki grup są wyznaczane i sprawdzana jest poprawność przynależności elementów do grup, jak długo występuje migracja obiektów pomiędzy skupieniami. Jeśli w kolejnych dwóch przebiegach algorytmu nie nastąpi żadna zmiana w dokonanym podziale (mówi się wtedy o 3

osiągnięciu stabilizacji), przetwarzanie dobiega końca. Jak widać, w metodzie tej liczba grup jest stała i zgodna z wartością parametru k, zmieniać się może tylko przynależność obiektów do grup. W metodzie k-średnich (ang. k-means) poszukiwanie optymalnego podziału odpowiada wyznaczeniu takich prototypów grup, które minimalizują następującą funkcję kryterialną: J(v, B) = k i=1 k=1 N b ik d 2 (v i, x k ). W funkcji tej d(v, x) oznacza odległość elementu reprezentowanego przez wektor x od grupy wyznaczonej przez prototyp (centroid, środek grupy) v, N to liczebność zbioru O, B to macierz podziału, a pozostałe parametry mają takie same znaczenie jak podano wcześniej. Zasadę działania metody można opisać następująco: 1. podziel wstępnie zbiór na k skupień, 2. dla każdego skupienia policz jego centroid (środek ciężkości grupy), 3. przypisz każdy z elementów zbioru do najbliższej mu grupy ( odległość od grupy jest w tym przypadku tożsama z odległością od centroidu), 4. powtarzaj dwa poprzednie kroki tak długo, jak długo zmienia się przyporządkowanie obiektów do skupień. Przykład podziału obiektów do k grup przedstawia rysunek 1. Rysunek 1: Przykład podziału obiektów do k skupień Niestety algorytm k-średnich ma wiele wad. Już na wstępie konieczne jest zdefiniowanie liczby grup, chociaż zazwyczaj nie wiadomo, jak wiele grup występuje w przetwarzanym zbiorze. Początkowe centroidy wybierane są w sposób losowy, podczas gdy ich wybór ma decydujący wpływ na jakość otrzymanego grupowania. Metoda jest zbieżna do lokalnego optimum, a jednokrotne wykonanie algorytmu zazwyczaj nie daje w wyniku optymalnego podziału analizowanego zbioru. Ponadto algorytm jest mało odporny na zaszumione dane. Mimo wszystkich wad jest to wciąż jedna z najczęściej wykorzystywanych metod iteracyjnych, ponieważ jest ona prosta w implementacji, a jej niewielka złożoność obliczeniowa wynosi O(tkn), gdzie n jest liczebnością zbioru, k jest liczbą grup i t jest liczbą iteracji, przyczym k, t n. Konieczność wstępnego określenia 4

liczby podgrup można zrekompensować, wywołując metodę z różnymi wartościami parametru k i oceniając otrzymane podziały za pomocą jakiegoś kryterium oceny jakości grupowania. 2.1.3 Algorytm k-medoidów Wady algorytmu k-średnich są na tyle istotne, że często dąży się do zastosowania innych algorytmów w ramach grupy metod niehierarchicznych, ale takich, które wolne są od tychże wad. Jednym z takim algorymtów jest k-medoid, który to w odróżnieniu od algorytmu k-średnich w kolejnych etapach algorytmu nowe prototypy grup wyznaczane są spośród obiektów należących do rozpatrywanego zbioru. Wystarczającym dla zrozumienia idei tego algorytmu jest wgląd w tutorial dostępny na stronie http://en.wikipedia.org/wiki/k-medoids. W środowisku R realizuje go funkcja pam() z pakietu cluster. 2.2 Metody hierarchiczne Metody niehierarchiczne mają to do siebie, że formują pojedynczy podział, który dostarcza płaskiej charakterystyki zbioru. Tymczasem często spotykaną sytuacją są grupy, które zawierają podgrupy, te z kolei składają się z podgrup itd. Tę właśność doskonale oddają algorytmy hierarchiczne. W zależności od tego jaki zastosujemy algorytm grupowania hierarchicznego: aglomeracyjny czy deglomeracyjny, inny jest przebieg algorytmu, oraz jego ostateczny rezultat. Metody aglomeracyjne rozpoczynają tworzenie hierarchii od podziału zbioru n obserwacji na n jednoelementowych grup, które w kolejnych krokach są ze sobą scalane. Metody deglomeracyjne inicjowane są jedną grupą n-elementową, a hierarchia tworzona jest poprzez sukcesywny podział na coraz mniejsze grupy. W praktyce rzadko dąży się do utworzenia pełnej hierarchii podziałów, ponieważ ostatni jej etap (tzn. n grup jednoelementowych lub jedna grupa n-elementowa) nie wnosi zbyt wielu nowych informacji na temat charakterystyki analizowanego zbioru danych. Zazwyczaj proces tworzenia hierarchii przerywa się w pewnym, z góry założonym momencie, kiedy zostanie spełniony tzw. warunek stopu. Warunkiem takim może być np. pożądana liczba skupień, stopień (nie) podobieństwa pomiędzy wydzielonymi grupami itp. Optymalnym wydaje się kryterium maksymalnego podobieństwa wewnątrz grup - minimalnego między grupami. Inaczej mówiąc, proces aglomeracji jest uzasadniony tak długo dopóki podobieństwo wewnątrz tworzonych grup jest zawsze większe niż podobieństwo między którąkolwiek z grup. 2.2.1 Dendrogram Najbardziej popularnym i naturalnym sposobem reprezentacji wyników grupowania hierarchicznego jest graficzny zapis w postaci drzewa binarnego nazywanego dendrogramem. Zapis taki można wzbogacić o informację dotyczącą stopnia niepodobieństwa (dendrogram niepodobieństwa) pomiędzy poszczególnymi grupami poprzez dodanie osi skojarzonej zużytą miarą niepodobieństwa poziom łączenia grup odpowiada wówczas wartości ich niepodobieństwa. Fakt, że budujemy drzewo binarne jest bardzo istotny. Okazuje się, że będąc na k-tym poziomie w drzewie wiemy na pewno, że utworzonych jest wówczas c grup, gdzie c = n k + 1. Wobec tego poziom pierwszy odpowiada podziałowi na n 5

grup, natomiast poziom n-ty jednej grupie. Przykład dendrogramu przedstawia rysunek 2. Rysunek 2: Przykład dendrogramu 2.2.2 Algorytmy aglomeracyjne Najprostsza wersja algorytmu aglomeracyjnego składa się z następujących kroków: 1. niech c będzie oczekiwaną liczbą grup, a N liczebnością analizowanego zbioru (oczywiście c N); wstępna inicjalizacja: podziel zbiór na N jedno elementowych grup, 2. znajdź dwie najbliższe (w sensie przyjętej miary) grupy; nazwijmy je G i oraz G j, 3. scal ze sobą G i i G j zmniejszając w ten sposób liczbę grup o 1, 4. powtarzaj dwa poprzednie kroki tak długo, aż liczba otrzymanych grup osiągnie założoną na wstępie wartość c. Niezwykle istotne są kroki: 2 i 3. Otóż znajdowanie dwóch najbliższych grup, zależy od wybranej metryki podobieństwa bądź odległości. Nie wszystkie bowiem miary nadają się do określonego typu danych. Źle dobrana metryka może wskazywać jako najbardziej w danym momencie podobne do siebie grupy, które tak naprawdę wcale podobnymi nie są. Jeszcze ważniejszym i bardziej wpływowym - jest sposób (określony krokiem 3) scalenia ze sobą grup G i oraz G j, gdyż wiąże się on także z budową nowej grupy G k, ale i jej reprezentanta. W pierwszym kroku algorytmu, podział ma postać: P odz N 0 (N) = {G i = {x i }, i = 1,..., N} a w kolejnych krokach algorytmu przyjmuje odpowiednio postać: P odzt N t (N) = {P odzt 1 N t+1 (N){G i, G j }} {G k }, gdzie t oznacza kolejny krok algorytmu, a jednocześnie poziom w hierarchii. W każdym kroku spośród wszystkich par grup (G r, G s ) wybiera się taką parę (G i, G j ), że D(G i, G j ) = min D(G r, G s ), Gr, Gs P odzt 1 N t+1, G r G s. W macierzy niepodobieństwa P (t) postaci: P (i, j, t) = D(G i, G j ), i, j = 1,..., N t, 6

konieczna jest po każdym scaleniu dwóch grup G i i G j aktualizacja, polegająca na tym, że w usuwa się z macierzy kolumnę o większym indeksie i lub j, a w kolumnie o mniejszym indeksie wpisujemy wartości odległości każdej grupy do nowo powstałej grupy G k. Metody łączenia obiektów związane są właśnie z obliczeniem tej odległości. Jeśli G k = G i G j, G k P odzt N t (N) oraz G i, G j, G s P odzt 1 N t+1 (N) są parami różne, macierz niepodobieństwa jest aktualizowana w następujący sposób: dla metody najbliższego sąsiada: D(G k, G s ) = min{d(g i, G s ), D(G j, G s )}, dla metody najdalszego sąsiada: D(G k, G s ) = max{d(g i, G s ), D(G j, G s )}, dla metody średniej: D(G k, G s ) = 1 2 {D(G i, G s ) + D(G j, G s )} Metoda najbliższego sąsiada jest najczęściej wykorzystywana, ze względu na małą złożoność, oraz dużą intuicyjność wybranego podobieństwa. Jednak jest też podatna na tzw. zjawisko łańcuchowania, polegające na przypisywaniu długich ciągów punktów do tego samego skupienia (w odróżnieniu od tworzenia zwartych kulistych skupień), co w zależności od oczekiwanego kształtu grup może być traktowane jako wada algorytmu. Na przykład, jeśli pomiędzy dwoma wyraźnie odrębnymi, kulistymi skupieniami znajdzie się punkt tworzący pewnego rodzaju most je łączący, metoda dokona niepożądanego scalenia obu skupień i w rezultacie powstanie duża, wydłużona grupa, niezgodna z właściwą charakterystyką zbioru. Inną wadą tej metody łączenia skupień jest podatność na szumy oraz niewielkie zmiany pozycji obiektów. Ilustracją graficzną tej metody jest rysunek 3. Rysunek 3: Metoda najbliższego sąsiada Metoda najdalszego sąsiada w przeciwieństwie do poprzedniej nie ma tendencji do przyrostu wydłużonych skupień. Łączone są skupienia zawierające punkty, które w ustalonej przestrzeni metrycznej są położone najdalej od siebie. Metoda wykazuje tendencję do grupowania elementów znajdujących się na brzegach obszaru określoności w jedno skupienie, natomiast bardziej wewnętrzne punkty przydzielane są do reszty zadeklarowanych skupień. Ilustracją graficzną tej metody jest rysunek 4. Metody najbliższego i najdalszego sąsiada reprezentują dwa skrajne podejścia do pomiaru odległości pomiędzy skupieniami. Żadne z nich nie jest pozbawione wad, podczas gdy użycie metod pośrednich wydaje się być najbardziej oczywistym sposobem na ich uniknięcie. Ilustracją graficzną tej metody jest rysunek 5. 7

Rysunek 4: Metoda najdalszego sąsiada Rysunek 5: Metoda średniej odległości Podane miary nie wyczerpują wszystkich możliwości definiowania kryterium kolejnych połączeń. Metody te mogą być zestawiane ze sobą tworząc nowe bardziej specjalizowane rozwiązania. 3 Analiza skupień w środowisku R Zakładamy, że przed wykonywaniem analiz w środowisku R student zapoznał się z podstawowymi algorytmami grupowania. Podstawową kwestią jest podział metod analizy skupień na hierarchiczne i niehierarchiczne (k-optymalizacyjne). Istotnym na tym etapie jest świadomość, że efektem metody hierarchicznej jest algomeracja bądź deglomeracja obiektów, która przyjmuje najczęściej postać dendrogramu (drzewo z korzeniem i liścmi). Metody niehierarchiczne - jak sama nazwa wskazuje - nie budują hierarchii. Tutaj obiekty mogą być prezentowane jako punkty na płaszczyźnie, i zakłada się, że te z punktów, które na wykresie rozrzutu są w dość bliskiej odległości wobec siebie, tworzą skupienie. Problemem jest fakt, że algorytmy (te bardziej klasyczne) wymagają podania z góry liczby skupień, podczas gdy bardzo często nie znamy tej liczby. Stosuje się oczywiście różne modyfikacje, które starają się tę optymalną liczbę skupień oszacować, jednak proces taki wymaga wielokrotnych uruchomień dla zmienionych parametrów, co znaczenie wydłuża czas grupowania. Inną zupełnie kwestią jest spory zbiór wad tych algorytmów, które czasami mogą wręcz uniemożliwić ich zastosowanie. Wykorzystanie metod analizy skupień w środowisku R jest możliwe dzięki użyciu następujących pakietów: standardowego pakietu stats, pakietu cluster oraz dodatkowo pakietów flexclust i mclust02. Zakładamy, że czytelnikowi znany jest zbiór danych o nazwie IRIS z repozytorium UCI Machine Learning udostępniony również w ramach środowiska R. Zbiór przedstawia informacje o 150 kwiatach (irysach) opisanych czterema cechami numerycznymi (Sepal.Length, Sepal.W idth, P etal.length, P etal.w idth) i jednym atrybutem jakościowym species (klasyfikującym kwiaty do jednej z trzech grup: setosa, virginica lub versicolor). Wiedząc, że algorytm k-średnich (ang. k-means) wymaga, aby wszystkie cechy były ilościowymi (podczas gdy ostatnia kolumna w zbiorze IRIS 8

zawiera dane jakościowe) pominiemy tę kolumnę w obliczeniach i przedstawimy podstawowe informacje o takim zbiorze danych, czego efektem będzie następujący ciąg informacji pakietu R: > dane = iris[,1:4] > summary(dane) Sepal.Length Sepal.Width Petal.Length Petal.Width Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 Median :5.800 Median :3.000 Median :4.350 Median :1.300 Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 > Wywołanie algorytmu k-średnich gdy znamy optymalną liczbę skupień (dla zbioru IRIS to 3 grupy) jest dość proste. Realizacja grupowania przy użyciu metody k-means może być następująca: > klaster = kmeans(dane,3) > plot(dane, pch=klaster$cluster) czego wynikiem będzie wykres z rozkładem wartości obserwacji w zbiorze iris osobno dla każdej z 4 cech opisujących te obserwacje: P etal.length, P etal.w idth, Sepal.Length, Sepal.W idth. Efekt będzie zbliżony do tego co przedstawia rysunek refirisa1. 2.0 3.0 4.0 0.5 1.5 2.5 Sepal.Length 4.5 5.5 6.5 7.5 2.0 3.0 4.0 Sepal.Width Petal.Length 1 2 3 4 5 6 7 0.5 1.5 2.5 Petal.Width 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 Rysunek 6: Realizacja funkcji kmeans dla zbioru iris - cztery zmienne Gdybyśmy chcieli jednak sprawdzić jak wygląda podział obiektów na również 3 skupienia, ale biorąc pod uwagę jedynie dwie pierwsze zmienne je opisujące: Sepal.Length oraz Sepal.W idth, wówczas koniecznym jest wywołanie następujących komend środowiska R: dane = iris[,1:2] > klaster = kmeans(dane,3) > plot(dane, pch=klaster$cluster), czego efekt będzie zbliżony do tego, co przedstawia rysunek 7. 9

Sepal.Width 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Sepal.Length Rysunek 7: Realizacja funkcji kmeans dla zbioru iris - dwie zmienne Wykres będzie czarnobiały i bez dodatkowych opcji odnośnie kolorów czy symboli nie będzie zbyt atrakcyjny wizualnie. Dlatego warto wspomóc się chociażby ingerencją w kolorystykę (parametr col) oraz symbol obserwacji (parametr pch, np pch = 3 to symbol + ). Wynikiem wywołania następujących komend: > cl<-kmeans(dist(dane),3,20) > plot(dane,pch=19,col=cl$cluster,main="k-means") będzie wykres taki jak na rysunku 8. Problem z umiejętnością oszacowania prawidłowej liczby skupień obrazuje następujący fragment kodu dla środowiska R: > cl<-kmeans(dist(dane),8,20) > plot(dane,pch=18,col=cl$cluster,main="k-means") którego efektem będzie następujący wykres (rysunek 9): Wykresy tak generowane są odpowiednio jasne do interpretacji gdy znamy prawidłową liczbę grup. Jednak gdy dla zbioru IRIS próbowalibyśmy zbudować nie 3 (jak być powinno) lecz 8 grup, otrzymany podział nie jest już wogóle czytelny. Podobnie widać to, gdy zmieniejszymy liczbę zmiennych analizowanych w procesie grupowanie obiektów zbioru IRIS. Mianowicie, gdy weźmiemy pod uwagę tylko dwie pierwsze zmienne: Sepal.Lenght oraz Sepal.W idth, i spróbujemy podzielić te 150 obserwacji na 8 grup, wykonamy następujący kod środowiska R: > dane = iris[,1:2] > cl<-kmeans(dist(dane),8,20) > plot(dane,pch=18,col=cl$cluster,main="k-means") a efekt takiego wykonania będzie taki jak to przedstawia rysunek 10. 10

k means 2.0 3.0 4.0 0.5 1.5 2.5 Sepal.Length 4.5 5.5 6.5 7.5 2.0 3.0 4.0 Sepal.Width Petal.Length 1 2 3 4 5 6 7 0.5 1.5 2.5 Petal.Width 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 Rysunek 8: Realizacja funkcji kmeans dla zbioru iris Poświęcając więcej uwagi funkcji kmeans, zauważymy, że ogólna formuła tej funkcji ma postać: kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("hartigan-wong", "Lloyd", "Forgy", "MacQueen")), gdzie: x - to macierz z danymi podlegającymi grupowaniu, centers - to albo liczba skupień, które chcemy utworzyć, albo podane początkowe centra skupień. Jeśli jest to liczba skupień, wówczas procedura wyboru potencjalnych centrów skupień odbywa się w sposób losowy, iter.max - to maksymalna liczba iteracji, nstart - jeśli w center podano liczbę grup, to parametr nstart określa liczbę losowych zbiorów branych pod uwagę w grupowaniu, algorithm - określa, który algorytm będzie wykonany spośród dostępnych: Hartigan and Wong (1979) (domyślny), MacQueen (1967), Lloyd (1957) czy Forgy (1965). 11

k means 2.0 3.0 4.0 0.5 1.5 2.5 Sepal.Length 4.5 5.5 6.5 7.5 2.0 3.0 4.0 Sepal.Width Petal.Length 1 2 3 4 5 6 7 0.5 1.5 2.5 Petal.Width 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 Rysunek 9: Realizacja funkcji kmeans dla zbioru iris - 8 grup Odpowiednio manipulując tymi parametrami można optymalizować budowane skupienia obiektów w danym zbiorze. Grupowanie realizowane jest także poprzez metodę mclust z pakietu o tej samej nazwie. W podstawowej wersji wywołania metody nie podaje się liczby skupień, a jedynie zbiór danych, które chcemy pogrupować (patrz poniżej na komendy R). > dane.mcl<-mclust(dane) > skupienia<-dane.mcl$classification > plot(dane,pch=19,col=skupienia,main="mclust") Utworzony w wyniku wykres będzie bardzo podobny do tego utworzonego przez metodę kmeans. W pakiecie stats dostępna jest funkcja, pozwalająca klasyfikować obiekty do jednej z utworzonych grup, pozwalając jednocześnie na sterowanie nie tylko liczbą tworzonych skupień, ale i poziomem odcięcia w tworzonym drzewie. Mowa tutaj o funkcji cutree. Ogólna formuła ma postać: cutree(tree, k = NULL, h = NULL) gdzie odpowiednio: tree - jest rezultatem wywołania funkcji hclust, k - liczba skupień, h - poziom odcięcia drzewa (tree). 12

k means Sepal.Width 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Sepal.Length Rysunek 10: Realizacja funkcji kmeans dla zbioru iris - 8 grup - 2 zmienne Przykład komendy zawierającej wywołanie tej funkcji wygląda następująco dla znanego już zbioru iris: > hc <- hclust(dist(dane)) > cutree(hc, k=3) Rezultatem takiego wywołania jest wektor prezentujący przydział poszczególnych obserwacji zbioru wejściowego do utworzonej liczby grup: [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [43] 1 1 1 1 1 1 1 1 2 2 2 3 2 3 2 3 2 3 3 3 3 2 3 2 3 3 2 3 2 3 2 2 2 2 2 2 2 3 3 3 3 2 [85] 3 2 2 2 3 3 3 2 3 3 3 3 3 2 3 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 [127] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Fakt, że algorytm k - średnich cechuje się licznymi wadami, sprawia, że chętniej używanym jest algorytm np. k-medoidów. W środowisku R, w ramach pakietu cluster, dostępna jest funkcja pam() realizująca algorytm o nazwie PAM (ang. Partitioning Around Medoid). Przykładem jej wywołania dla zbioru iris jest następująca komenda: > kluster <- pam(dane,3) > sil <- silhouette(kluster) > summary(sil) czego efektem będą następujące wyniki: Silhouette of 150 units in 3 clusters from pam(x = dane, k = 3) : Cluster sizes and average silhouette widths: 13

50 62 38 0.7981405 0.4173199 0.4511051 Individual silhouette widths: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.02636 0.39110 0.56230 0.55280 0.77550 0.85390 Możemy odczytać podział algorytmem pam tych 150 obiektów (kwiatów ze zbioru IRIS) do 3 skupień. Widzimy rozkład obiektów do 3 klas oraz podstawowe statystyki tj. mediana, moda, pierwszy i trzeci kwartyl oraz elementy minimalny i maksymalny. Dodając polecenie: > plot(sil, col = c("red", "green", "blue")) zobrazujemy ów podział (rysunek 11). Silhouette plot of pam(x = dane, k = 3) n = 150 3 clusters C j j : n j ave i Cj s i 1 : 50 0.80 2 : 62 0.42 3 : 38 0.45 0.0 0.2 0.4 0.6 0.8 1.0 Average silhouette width : 0.55 Silhouette width s i Rysunek 11: Wykres metody k-medoidów Jeżeli dla tego samego zbioru danych chcemy zastosować algorytm grupowania hierarchicznego, możemy użyć funkcji hclust a do jej graficznej reprezentacji funkcji plot, tak jak to pokazuje kod: > d <- dist(dane, method = "euclidean") > fit <- hclust(d, method="ward") > plot(fit) Efektem będzie wykres zwany dendrogramem, z tym, że będzie on mało czytelny dla dużych zbiorów obserwacji, z tego względu, że wszystkie liście drzewa są wyrysowane na jednym poziomie na wykresie, i zwyczajnie nachodzą na siebie. Klasycznym algorytmem hierarchicznym jest właśnie algorytm aglomeracyjny, którego jednym z wersji jest algorytm o nazwie agnes (ang. AGlomerative NESting). Został on również zaimplementowany w środowisku R i realizowany jest przez wywołanie komendy o tej samej nazwie co nazwa algorytmu a więc agnes: klaster = agnes(dane, method="average") > plot(klaster) 14

Oczywiście drugi argument wywołania fuknkcji: method może przyjmować różne wartości w zależności od tego jaką metodę łączenia skupień wybierzemy mając do dyspozycji metody: najbliższego sąsiada, najdalszego sąsiada, średnich wiązań itp. Efektem wywołania funkcji plot z argumentem w postaci rezultatu funkcji agnes będzie dendrogram, który już jest bardziej czytelny, gdyż poszczególne poziomy drzewa są prezentowane na różnej wysokości na wykresie (jak to przedstawia rysunek 12). Dendrogram of agnes(x = dane, method = "average") Height 0 1 2 3 4 18 41 1 28 40 298 505 3836 24 27 44 21 32376 1119 49 20 22 46 471745 13 2 10 352634 30 48 3943 31 12 25 7 9 14 16 15 23 33 51 34 53 42 55 8777 59 78 66 7652 64 5786 92797472 75 9869 128 71 88120 139 15073 124 134 84 102147 127 143114 122115 54 81 90 82 70 65 80 60 67 56 91 96 89 8562 97 10068 95 83 93 58 63107 949961 121101 144 141 145 137 116 125 149 104 117 129 138112 133 105 113 111 140 148 142 146 109 126 103 135 108 131 130 106 136 123119 118 132 110 dane Agglomerative Coefficient = 0.93 Rysunek 12: Dendrogram Jeśli chcielibyśmy sprawdzić różnice w postaci dendrgramu w zależności od tego jaką metodę łączenia skupień zastosowano: najbliższego sąsiada, najdalszego sąsiada czy metoda średniej odległości możemy wywołać następujące komendy w środowisku R: > par(mfrow=c(3,2)) > klaster = agnes(dane, method="average") > plot(klaster) 15

> klaster = agnes(dane, method="single") > plot(klaster) > klaster = agnes(dane, method="complete") > plot(klaster) Wówczas efektem będzie jeden wykres z trzema dendrogramami dla zbioru iris (rysunek 13). Banner of agnes(x = dane, method = "average") Dendrogram of agnes(x = dane, method = "average") Height 0 2 4 1 18 28 41 40 298 505 3836 24 27 44 21 32 11 19 376 49 20 22 47 17 45 46 13 2 10 35 30 48 2634 317 12 39 43 259 1423 33 16 15 51 3442 53 87 55 77 59 78 66 76 52 64 57 86 92 79 75 74 98 72 120 69 71 88 128 139 150 134 84 73 124 102 127 143 147 114 122 115 54 81 90 70 8260 56 65 91 80 67 85 96 89 62 100 97 95 68 83 9363 58 107 9499 121 101 61 144 141 145 137 116 125 149 117 138 104 129 105 112 133 113 111 140 148 142 146 109 126 103 135 108 131 130 106 136 123 118 119 132 110 0 0.5 1 1.5 2 2.5 3 3.5 4 Height Agglomerative Coefficient = 0.93 Banner of agnes(x = dane, method = "single") dane Agglomerative Coefficient = 0.93 Dendrogram of agnes(x = dane, method = "single") Height 0.0 1.0 1 18 38 415 40 50 28 29 11 36 4924 27 10 35 442 46 13 30 31 489 2634 39 43 127 20 22 4714 21 25 32 37 19 176 33 34 45 16 15 2342 51 53 52 57 87 66 55 76 59 75 9878 54 77 90 72 81 70 83 93 8268 96 89 95 10091 97 67 62 85 56 64 92 79 7480 86 128 71 60 139 124 127 102 147 143 150 114 122 134 84 73 117 138 104 129 133 105 111 148 142 112 113 140 146 121 144 141 145 137 125 149 116 126 130 103 101 120 65 108 131 69 115 88 63 106 123 119 136 135 109 58110 9461 99107 118 132 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 Height Agglomerative Coefficient = 0.85 Banner of agnes(x = dane, method = "complete") dane Agglomerative Coefficient = 0.85 Dendrogram of agnes(x = dane, method = "complete") 1 40 418 28 50 295 30 38 31 12 46 252 10 35 13 26 48 3634 39 4379 142342 11 19 6 49 21 32 37 20 22 47 45 24 27 44 15 33 17 16 54 90 34 81 70 8260 65 56 91 8063 67 85 62 83 68 72 93 96 97 89 100107 95 58 94 51 99 61 53 55 87 59 78 66 76 77 52 64 57 92 86 75 79 98 74 69 120 88 128 139 71 102 143 150 114 122 115 134 84 73 124 127 112 147 137 101 135 121 144 149 141 145 125 117 138 104 129 133 105 109 111 113 148 140 116 142 146 126 130 103 108 131 106 123 119 118 110 132 136 Height 0 2 4 6 0 1 2 3 4 5 6 7 Height Agglomerative Coefficient = 0.96 dane Agglomerative Coefficient = 0.96 Rysunek 13: Dendrogramy dla różnych metod łączenia skupień Podobna w działaniu do agnes() jest omówiona już po krótce wcześniej metoda grupowania hierarchicznego dostępna w funkcji hclust(stats). 4 Bibliografia Opracowanie przygotowano w oparciu o prace: 1. J. Koronacki, J. Ćwik: Statystyczne systemy uczące się, wydanie drugie, Exit, Warsaw, 2008, rozdział 9. 2. J. Ćwik, J. Mielniczuk: Statystyczne systemy uczące się - ćwiczenia w oparciu o pakiet R, Oficyna Wydawnicza PW, Warszawa, 2009. 16

3. Biecek P.: Na przełaj przez Data Mining, http://www.biecek.pl/r/ naprzelajprzezdm.pdf 17