Techniki grupowania danych w środowisku Matlab 1. Normalizacja danych. Jedne z metod normalizacji: = = ma ( y =, rσ ( = ( ma ( = min = (1 + e, min ( = σ wartość średnia, r współczynnik, σ odchylenie standardowe y 1 Do normalizacji danych przed grupowaniem moŝemy zastosować funkcję zscore przekształcającej dane w zbiorze uŝywając tej samej skali proporcjonalnej. Z = zscore(d, gdzie D jest zbiorem danych. Wynikiem jest odchylenie wartości zawartych w kaŝdej kolumnie od jej średniej znormalizowanej przez jej odchylenie standardowe. JeŜeli w zbiorze danych znajduje się kolumna V to Z dla niej wynosi: (V-mean(V./std(V. 2. Określenie podobieństwa pomiędzy danymi w zbiorze danych. Do określenia podobieństwa pomiędzy kaŝdą parą danych w zbiorze posłuŝymy się funkcją pdist tworząc macierz odległości. Dane są tym bardziej podobne do siebie, im odległość między nimi jest mniejsza. Y=pdist(Z,Typodleglosci, gdzie Z jest zbiorem danych. 1
Typodleglosci (przykładowe Tabela 1. Sposoby obliczania odległości. Wzór Nazwa 'euclidean' Odległość Euklidesowa 'seuclidean' 'cityblock' Standaryzowana odległość Euklidesowa Odległość miejska 'cosine' Jeden minus kosinus kąta pomiędzy punktami 'correlation' 'hamming' Jeden minus korelacja pomiędzy punktami Odległość Hamminga 3. Grupowanie danych. Po określeniu odległości pomiędzy danymi w zbiorze danych naleŝy zdecydować, w jaki sposób dane powinny być pogrupowane. Do tego celu uŝywamy funkcji linkage, która korzystając z odległości wyznaczonych pomiędzy danymi grupuje je tworząc drzewo hierarchiczne. Tworzenie drzewa zaleŝy od zastosowanej metody. Z = linkage(y, Nazwametody, gdzie Y macierz odległości Tabela 2. Metody grupowania elementów zbioru. Nazwametody 'single' 'complete' 'average' 'weighted' Sposób grupowania elementów zbioru ze sobą NajbliŜsza odległość Najdalsza odległość Odległość średnia Wagowa odległość średnia Pogrupowane dane moŝna wyświetlić w postaci drzewa za pomocą funkcji dendrogram. H=dendrogram(Z. 4. Weryfikacja sposobu grupowania. Za pomocą funkcji cophenet porównujemy dwa zbiory wartości i obliczamy korelację pomiędzy nimi. Im wartość owej korelacji jest bliŝsza jedności tym lepiej sposób grupowania danych odzwierciedla faktyczne podobieństwa między danymi. C = cophenet(z,y, gdzie Z zawiera dane zgrupowane w postaci drzewa hierarchicznego, a Y jest macierzą odległości. 2
5. Tworzenie zadanej liczby grup. Za pomocą funkcji cluster moŝemy narzucić podział danych na zadaną liczbę grup. T = cluster(z,'cutoff',prógwspółczynnikaniespójności, próg współczynnika niespójności wiąŝący się z wysokością drzewa wymusza grupowanie danych posiadających jego wartość mniejszą niŝ progowa. T = cluster(z,'maclust',zadanaliczbagrup, wymuszenie podziału danych na zadaną liczbę grup. Ćwiczenia. PoniŜsza tabela obrazuje natęŝenie ruchu ulicznego na trzech skrzyŝowaniach w mieście zaleŝne od godziny pomiaru. Tabela 3. Dane testowe. Godzina/ Nr 1 skrzyŝowania 2 3 1 11 11 9 2 7 13 11 3 14 17 20 4 11 13 9 5 43 51 69 6 38 46 76 7 61 132 186 8 75 135 180 9 38 88 115 10 28 36 55 11 12 12 14 12 18 27 30 13 18 19 29 14 17 15 18 15 19 36 48 16 32 47 10 17 42 65 92 18 57 66 151 19 44 55 90 20 114 145 257 21 35 58 68 22 11 12 15 23 13 9 15 24 10 9 7 Poleceniem load count.dat wczytujemy dane testowe do przestrzeni roboczej środowiska Matlab. Ćwiczenie 1. Dokonać normalizacji danych. Wyświetlić dane w postaci punktów w przestrzeni (funkcja plot3. 3
Dobrać odpowiedni typ odległości oraz metodę wyznaczaniu podobieństwa pomiędzy danymi w zbiorze testowym tak, aby współczynnik korelacji cophenet a był optymalny. Ćwiczenie 2. Wyświetlić drzewo hierarchiczne. Dobrać próg współczynnika niespójności tak, by utworzyć 2, 4, 6 i 8 grup danych. Ćwiczenie 3. Pogrupować natęŝenia ruchu dla kaŝdego skrzyŝowania osobno, wyznaczyć godziny największego i najmniejszego natęŝenia ruchu (grupy godzin. Wyświetlić drzewa hierarchiczne dla kaŝdego skrzyŝowania osobno. 6. Grupowanie danych za pomocą algorytmu k średnich. Algorytm k średnich traktuje dane jako miejsce (punkt w przestrzeni i tworząc grupy dba by elementy w grupie były blisko siebie i wystarczająco daleko od elementów z innych grup. KaŜdy klaster (dane zgrupowane reprezentowany jest przez jego elementy oraz przez środek klastra. Środek klastra jest to punkt gdzie suma odległości wszystkich elementów od niego jest minimalna. I = kmeans(x,liczbagrup,'distance',typodleglosci, gdzie X reprezentuje dane do klasteryzacji, 'distance' realizacja wybranego rodzaju obliczania odległości do środka klastra Typy odległości: -'sqeuclidean' -'cityblock' -'cosine' -'correlation' -'Hamming' Otrzymawszy pogrupowane dane moŝemy wyświetlić je w postaci zarysu grup. Funkcja silhouette wyświetla miarę jak blisko kaŝdy punkt naleŝący do grupy jest oddalony od punktów z grup sąsiadujących. Wyświetlany wynik zawiera się w przedziale <-1:1>, przy czym wartości mniejsze niŝ zero i zmierzające do -1 oznaczają, Ŝe dany punkt został umieszczony w niewłaściwym klastrze (grupie. [silh,h] = silhouette(x,i,typyodległosci WyróŜniamy następujące rodzaje odległości: -'Euclidean' -'sqeuclidean' -'cityblock' -'cosine' -'correlation' -'Hamming' 4
7. Określanie poprawnej liczby klastrów. Chcąc określić czy załoŝona przy wywołaniu funkcji kmeans liczba klastrów jest prawidłowa obliczamy średnią wartość zwracaną przez funkcję silhouette. Im większa wartość średnia tym liczba klastrów jest bardziej poprawna. S=means(silh Ćwiczenie 4. Określić optymalny typ odległości przy grupowaniu kmeans dla wszystkich skrzyŝowań łącznie Wyświetlić zarysy klastrów Ćwiczenie 5. Określić prawidłową liczbę klastrów dla wszystkich skrzyŝowań łącznie. Określić prawidłową liczbę klastrów dla pierwszych dwóch skrzyŝowań. Które charakteryzuje się większą róŝnorodnością danych? 5