PRACE NAUKOWE AKADEMII EKONOMICZNEJ WE WROCŁAWIU Nr 1169 2007 TAKSONOMIA 14 Klasyfikacja i analiza d anych teoria i zasto so wania Marek Walesiak Akademia Ekonomiczna we Wrocławi WYBRANE ZAGADNIENIA KLASYFIKACJI OBIEKTÓW Z WYKORZYSTANIEM PROGRAMU KOMPUTEROWEGO CLUSTERSIM DLA ŚRODOWISKA R 1. Wstęp Pakiet clstersim, napisany w programie R dostępnym na stronie http://cran.r-project.org, składa się z fnkcji podstawowej clster.sim oraz z szesnast fnkcji pomocniczych. Fnkcja podstawowa słży poszkiwani optymalnej procedry klasyfikacyjnej (spośród różnych kombinacji formł normalizacyjnych, miar odległości i metod klasyfikacji) dla danego typ danych z pnkt widzenia wybranego indeks jakości klasyfikacji. W artykle zaprezentowana zostanie szczegółowa charakterystyka wybranych fnkcji pomocniczych pakiet clstersim. Szczegółowy opis pakiet clstersim znajdje się w pracach: [Walesiak, Ddek 2006a; 2006b; 2007]. Program dostępny jest na stronie http://www.ae.jgora.pl/keii/clstersim. Fnkcjonjące na rynk pakiety statystyczne (np. SPSS, Statistica, S-Pls, SAS) nie dostępniają takich możliwości, jakie niesie z sobą pakiet clstersim oraz środowisko programistyczne R. W pakiecie clstersim dostępnych jest m.in. jedenaście formł normalizacyjnych, cztery miary odległości oraz siedem indeksów jakości klasyfikacji. Inne miary odległości oraz metody klasyfikacji (m.in. hierarchiczne metody aglomeracyjne, metoda k-średnich i metoda k-medoids) dostępne są w pakietach stats i clster. W zasadniczej części artykł zaproponowane zostaną przykładowe składnie poleceń (procedry) z wykorzystaniem wybranych fnkcji z pakiet clstersim, w tym w szczególności dist.gdm. Procedry te, mające zastosowanie nie tylko w odniesieni do miary GDM, łatwią potencjal- 46
nem żytkownikowi realizację wiel zagadnień klasyfikacyjnych niedostępnych w podstawowych pakietach statystycznych. 2. Charakterystyka fnkcji pakiet clstersim Pakiet clstersim w wersji 0.30-2 składa się z fnkcji podstawowej clster.sim oraz z szesnast fnkcji pomocniczych: data.normalization, dist.bc, dist.gdm, dist.sm, index.g1, index.g2, index.g3, index.s, index.kl, index.h, index.gap, clster.description, initial.centers, HINoV.Mod, HINoV.Symbolic, replication.mod. Szczegółowo scharakteryzowane zostaną fnkcje niezbędne z pnkt widzenia dalszych rozważań: data.normalization (x, type="n0") fnkcja dokonjąca normalizacji danych wedłg jednej z formł n0-n11 (x macierz danych, type typ formły z tab. 1). dist.gdm (x,method="gdm1") fnkcja obliczająca macierz odległości wedłg miary GDM (GDM1 dla danych metrycznych, a GDM2 dla danych porządkowych) zob. [Walesiak 2006]. index.g1 (x,cl) fnkcja obliczająca wartości indeks Calińskiego- -Harabasza dla macierzy danych x i stalonego podział zbior obiektów na klasy cl. index.g2(d,cl) fnkcja obliczająca wartości indeks Bakera-Hberta dla macierzy odległości d i stalonego podział zbior obiektów na klasy cl. index.g3(d,cl) fnkcja obliczająca wartości indeks Hberta-Levine a dla macierzy odległości d i stalonego podział zbior obiektów na klasy cl. index.s(d,cl) fnkcja obliczająca wartości indeks Silhoette Rosseewa dla macierzy odległości d i stalonego podział zbior obiektów na klasy cl. index.kl (x,clall) fnkcja obliczająca wartości indeks Krzanowskiego-Lai dla macierzy danych x oraz trzech wektorów liczb całkowitych informjących o przynależności poszczególnych obiektów do klas w podziale na - 1, i + 1 klas (clall). index.h (x,clall) fnkcja obliczająca wartości indeks Hartigana dla macierzy danych x oraz dwóch wektorów liczb całkowitych informjących o przynależności poszczególnych obiektów do klas w podziale na i 1 klas (clall). index.gap (x, clall, reference.distribtion="nif", B=10, method="pam") fnkcja obliczająca wartości indeks Gap dla 47
macierzy danych x, dwóch wektorów liczb całkowitych informjących o przynależności poszczególnych obiektów do klas w podziale na i + 1 klas (clall), sposob generowania obserwacji na zmiennych z rozkład jednostajnego (nif, pc), liczby generowanych zbiorów obserwacji (B=10) oraz przyjętej metody klasyfikacji (ward, single, complete, average, mcqitty, median, centroid, pam, k-means). Tabela 1. Formły normalizacyjne dla danych metrycznych Skala pomiar zmiennych Nr Nazwa formły Formła przed normalizacją po normalizacji n0 bez normalizacji ilorazowa / przedziałowa n1 standaryzacja z ( x x ) s ilorazowa / przedziałowa przedziałowa ij ij j j z = x Me MAD ij ij j j ilorazowa / przedziałowa przedziałowa n2 ( - ) 1, 4826 standaryzacja Webera n3 nitaryzacja z ( x x ) r ilorazowa / przedziałowa przedziałowa n4 n5 n6 nitaryzacja zerowana normalizacja w przedziale [ 1; 1] ij ij j j zij xij min { xij} rj i ilorazowa / przedziałowa przedziałowa zij xij x j max xij x j ilorazowa / przedziałowa przedziałowa i zij xij s j n7 zij xij rj n8 zij xij max{ xij} i przekształcenia ilorazowe zij xij x n9 j n10 ij ij i1 ij n z x x 2 n11 z x x ij ij i1 ij x ( z ) wartość (znormalizowana wartość) j-tej zmiennej dla i-tego obiekt, ij ij x j ( s j, r j) średnia (odchylenie standardowe, rozstęp) dla j-tej zmiennej, n Me ( MAD ) mediana Webera (medianowe odchylenie bezwzględne dla j-tej zmiennej). j j Źródło: opracowanie własne. Charakterystykę siedmi indeksów jakości klasyfikacji znajdjących zastosowanie do stalenia liczby klas zarówno w przypadk metod optymalizacyjnych (kśrednich, k-medoids), jak i hierarchicznych zawiera tab. 2. clster.description(x, cl, sdtype="sample") fnkcja obliczająca osobno dla każdej klasy i zmiennej z stalonego podział zbior obiektów na klasy cl następjące statystyki opisowe: średnią arytmetyczną, odchylenie standardowe, medianę, medianowe odchylenie bezwzględne, dominantę (dla zmiennych nominalnych i porządkowych, jeśli występje więcej wartości o maksymalnej częstości występowania, to zwracana jest wartość N.A. ). 48
Tabela 2. Indeksy oceny jakości klasyfikacji Lp. Nazwa indeks Formła Kryterim wybor liczby klas 1 2 3 Calińskiego i Harabasza Bakera i Hberta Hberta i Levine B /( 1) G1( ) W /( n ), G1( ) ˆ argmax{ G1( )} R s( ) s( ) G2( ), G2( ) [ 1, 1] ˆ argmax{ G2( )} s( ) s( ) G3( ) D( ) r D r D r D min, 3( ) (0, 1) max min G ˆ argmin{ G3( )} 4 Silhoette n 1 b( i) a( i) S ( ), S ( ) [ 1, 1] ˆ argmax{ S( )} n max a( i); b( i) i1 5 Krzanowskiego i Lai DIFF KL( ), KL( ) DIFF 1 R DIFF ( 1) m W m W 2 / 2 / 1 ˆ argmax{ KL( )} 6 Hartigana 7 Gap W H( ) 1 ( n 1), H( ) W 1 B b 1 R B 1 Gap( ) logwb logw, Gap( ) R najmniejsze, dla którego H ( ) 10 najmniejsze, dla którego diff 0 B macierz kowariancji międzyklasowej, macierzy, B ( W ) tr( ) tr W macierz kowariancji wewnątrzklasowej, tr ślad B W, r, s 1,..., nmer klasy, liczba klas, i, k 1,, n nmer obiekt, n liczba obiektów, m liczba zmiennych, s( ) liczba par odległości zgodnych, s( ) liczba par odległości niezgodnych, D ( ) sma wszystkich odległości wewnątrzklasowych, r liczba odległości wewnątrzklasowych, D min ( D max ) najmniejsza (największa) odległość wewnątrzklasowa, a( i) dik ( nr 1) średnia odległość obiekt i od pozostałych obiektów należących do klasy k{ Pr \ i} P r ; bi () min{ d } sr ip s, ips ik s kps d d n średnia odległość obiekt i od obiektów należących do klasy P s, B liczba generowanych zbiorów obserwacji, s sd 1 1/ B, sd odchylenie standardowe z wartości { logw b }; diff Gap( ) Gap( 1) s 1. Źródło: opracowanie własne na podstawie prac: [Caliński, Harabasz 1974; Hbert 1974; Milligan, Cooper 1985; Kaffman, Rosseew 1990; Hartigan 1975; Tibshirani, Walther, Hastie 2001]. W odchyleni standardowym w mianownik występować będzie 1 n- dla próby (sdtype="sample") i n dla poplacji (sdtype="poplation"). Każda z fnkcji może być wykorzystana w innych procedrach program R, po rchomieni pakiet clstersim. 49
3. Charakterystyka przykładowych składni poleceń z wykorzystaniem fnkcji pakiet clstersim Zwykle macierz danych, stanowiąca pnkt wyjścia zastosowania metod klasyfikacji, przygotowywana jest w arksz kalklacyjnym MS Excel. W związk z tym, że nie ma bezpośrednich procedr wczytywania zawartości skoroszytów MS Excel do program R, najwygodniejsze jest zapisanie danych z arksza w formacie csv. Zapisanie danych w Excel wymagania wybrania polecenia Plik Zapisz jako... i wybrania odpowiedniego format. Do wczytania danych w programie R słży instrkcja read.csv2 (w język polskim symbolem łamka dziesiętnego jest przecinek). Podane parametry instrkcji read.csv2 oznaczają, że dane w plik csv zawierają nagłówek (header=true) oraz w pierwszej kolmnie znajdją się nazwy obiektów (row.names=1). Zawsze należy podać pełną ścieżkę dostęp do plik z danymi z separatorem nazwy oznaczonym /. Macierz danych w przykładowym plik csv jest następjąca (macierz danych zawiera 7 obiektów i 2 zmienne): ;x1;x2 1;3;4 2;2,5;5 3;2,5;3,5 4;10;2 5;9;1,5 6;4;11 7;4,5;10. Składnia poleceń pozwalająca na wczytanie danych oraz obliczenie odległości między obiektami (fnkcja dist.gdm) i zestawienie ich w macierz jest następjąca 1 : > library(clster) > library(clstersim) > x <- read.csv2("c:/dane_7x2.csv", header=true, strip.white = TRUE, row.names=1) > x <- as.matrix(x) > z <- data.normalization (x, type="n1") > z <- as.data.frame(z) > d <- dist.gdm (z, method="gdm1"). W przedstawionej składni poleceń przyjęto następjące założenia: do normalizacji wartości zmiennych zastosowano formłę klasycznej standaryzacji n1 (inne formły znajdją się w tab. 1), do pomiar odległości zastosowano miarę GDM1 zob. m.in. [Walesiak 2006]. 1 Miary odległości dla zmiennych ilorazowych lb przedziałowych dostępne są w procedrze dist, a dla zmiennych binarnych w procedrze dist.binary. 50
Po zastosowani tej procedry (dodając na końc polecenie print(d)) otrzymje się w rezltacie macierz odległości: 1 2 3 4 5 6 2 0.013077019 3 0.0044437960.019931539 4 0.4681415790.561865782 0.501412714 5 0.3979434960.497204468 0.4251273680.007082568 6 0.3510609180.264303183 0.3975055890.664980454 0.680073183 7 0.3158094170.241324375 0.3667692140.593108977 0.605954846 0.005287833 Jeśli do klasyfikacji zbior obiektów zastosowana zostanie metoda k-medoids (pam) [Kaffman, Rosseew 1990, s. 68-108; Gatnar, Walesiak i in. 2004, s. 330- -332], to składnię należy zpełnić o następjące polecenia: > cl <- pam(d, 3, diss = TRUE) > print(cl$clstering). W wynik zastosowania tej procedry otrzymje się podział zbior obiektów na 3 klasy: > [1] 1 1 1 2 2 3 3. Zastosowanie innych metod klasyfikacji wymaga modyfikacji składni. Dla hierarchicznej metody aglomeracyjnej najdalszego sąsiada składnia poleceń jest następjąca: > hc <- hclst(d, method = "complete") > cl <- ctree(hc, 3) > print(cl). Inne hierarchiczne metody aglomeracyjne dostępne są w programie hclst (pakiet stats) i mają następjącą składnię: metoda najbliższego sąsiada (method = "single"), metoda średniej grpowej (method = "average"), metoda ważonej średniej grpowej (method = "mcqitty"), metoda Warda (method = "Ward"), metoda medianowa (method = "median"), metoda centroidalna (method = "centroid"). Dla hierarchicznych metod aglomeracyjnych sporządza się dendrogram (zob. rys. 1), dodając polecenia: > options(otdec = ",") > plot(hc, hang = -1, labels = NULL, main = NULL, sb = NULL, ann = FALSE) > title(xlab = "Nmer klasy", ylab = "Poziom połączenia klas"). 51
0,7 0,6 0,5 Poziom połączenia klas 0,4 0,3 0,2 0,1 0,0 4 5 6 7 2 1 3 Nmer klasy Rys. 1. Dendrogram Źródło: opracowanie własne. Jeśli dodatkowo wprowadzimy polecenia: > options(otdec = ",") > desc <-clster.description(x, cl$clster, "poplation") > print(desc), to osobno dla każdej klasy i zmiennej z stalonego podział zbior obiektów na trzy klasy obliczone zostaną następjące statystyki opisowe: średnia arytmetyczna (1), odchylenie standardowe (2), mediana (3), medianowe odchylenie bezwzględne (4), dominanta (5). Dla danego podział zbior obiektów na klasy możliwe jest obliczenie wybranych statystyk opisowych. Zmienić należy polecenie z ostatniej linii: > print(desc[,,3]). Pierwszy wymiar w poleceni desc[,,3] oznacza nmer klasy, drgi wymiar nmer zmiennej, a trzeci wymiar nmer statystyki opisowej. Znak, niepoprzedzony liczbą oznacza, że dotyczy wszystkich rozpatrywanych wariantów. Zatem polecenie desc[,,3] oznacza, że dla wszystkich klas i zmiennych obliczone zostaną mediany. Po zastosowani tej procedry otrzymje się: > [,1] [,2] > [1,] 2,50 4,00 > [2,] 9,50 1,75 > [3,] 4,25 10,50. Zdecydowana większość fnkcji program R zwraca złożone obiekty lb listy zawierające wiele informacji wygenerowanych przez wykonywany algorytm. Na 52
przykład obiekt hc opisjący wyniki działania dowolnej hierarchicznej metody aglomeracyjnej wywołany poleceniem names(hc) zawiera: merge nmery łączonych klas w klasyfikacji hierarchicznej (wartości jemne oznaczają dołączenie klasy jednoelementowej, a dodatnie dołączenie klasy co najmniej dwelementowej), height wartości malejące poziomów połączenia klas, order wektor zawierający nmery obiektów w kolejności występjącej w dendrogramie, labels etykiety nadane klasyfikowanym obiektom, method nazwa zastosowanej hierarchicznej metody aglomeracyjnej, call składnia zastosowanego polecenia hclst, dist.method nazwa miary odległości (występje, jeśli wykorzystano w składni polecenie dist z atrybtem method ). Wydanie polecenia np. print(hc$height) spowodje wypisanie poziomów połączenia klas w klasyfikacji hierarchicznej. Zapisanie poziomów połączenia klas w osobnym plik na dysk, zgodnie z formatem csv, wymaga dodania do składni polecenia: > write.table((hc$height), file="c:/hc_height.csv", sep=";", dec=",", col.names=false). Gdy jesteśmy zainteresowani przeprowadzeniem podział metodą k-medoids zbior siedmi obiektów na dwie do sześci klas, a następnie wybrani tego podział, dla którego indeks Calińskiego i Harabasza (zob. [Gatnar, Walesiak i in. 2004, s. 338]) G1 przyjmje wartość maksymalną, to pierwotną składnię należy zpełnić o polecenia: > min_liczba_klas=2 > max_liczba_klas=6 > max<- -1 > wyniki<-array(0,c(max_liczba_klas-min_liczba_klas+1, 2)) > wyniki[,1]<- min_liczba_klas:max_liczba_klas for (liczba_klas in min_liczba_klas:max_liczba_klas) > { > cl2 <- pam(d, liczba_klas, diss = TRUE) > wyniki[liczba_klas - min_liczba_klas+1,2]<- G1 <- index.g1 (z, cl2$clster) > if (max<g1){ > max<- G1 > clmax<- cl2$clster > lk<- liczba_klas > } 53
> } > print(paste("max G1 dla", lk, "klas =",max)) > print("klasyfikacja dla max G1") > print(clmax) > write.table(wyniki, file="g1_reslts.csv", sep=";", dec=",", row.names=true, col.names=false) > plot(wyniki, type="p", xlab="liczba klas", ylab="g1", xaxt="n") > axis(1,c(min_liczba_klas:max_liczba_klas)). W wynik zastosowania tej procedry otrzymje się: [1] "max G1 dla 3 klas = 113,675361661312" [1] "klasyfikacja dla max G1" [1] 1 1 1 2 2 3 3 G1 20 40 60 80 100 2 3 4 5 6 Liczba klas Rys. 2. Graficzna prezentacja wartości indeks G1 Źródło: opracowanie własne. Dodanie do składni polecenia: > opis < clster.description(x, clmax, "poplation") > print(opis) pozwoli zpełnić wyniki klasyfikacji o statystyki opisowe obliczone osobno dla każdej klasy i zmiennej podział zbior obiektów, dla którego indeks G1 przyjmje wartość maksymalną. 54
4. Podsmowanie Fnkcjonjące na rynk pakiety statystyczne nie dostępniają takich możliwości, jakie niesie z sobą pakiet clstersim oraz środowisko programistyczne R. W artykle scharakteryzowano wybrane fnkcje pomocnicze pakiet clster- Sim. Następnie zaprezentowano przykładowe składnie poleceń (procedry) z wykorzystaniem m.in. wybranych fnkcji z pakiet clstersim, w tym w szczególności dist.gdm. Procedry te pozwalają na realizację wiel zagadnień klasyfikacyjnych niedostępnych w podstawowych pakietach statystycznych. Literatra Caliński R.B., Harabasz J. (1974), A Dendrite Method for Clster Analysis,,,Commnications in Statistics vol. 3, s. 1-27. Gatnar E., Walesiak M. (red.) (2004), Metody statystycznej analizy wielowymiarowej w badaniach marketingowych, AE, Wrocław. Hartigan J. (1975), Clstering Algorithms, Wiley, New York. Hbert L. (1974), Approximate Evalation Techniqe for the Single-Link and Complete-Link Hierarchical Clstering Procedres,,,Jornal of the American Statistical Association vol. 69, no. 347, s. 698-704. Kafman L., Rosseew P.J. (1990), Finding Grops in Data: an Introdction to Clster Analysis, Wiley, New York. Milligan G.W., Cooper M.C. (1985), An Examination of Procedres of Determining the Nmber of Clster in a Data Set,,,Psychometrika vol. 50, no. 2, s. 159-179. R Development Core Team (2006), R: A Langage and Environment for Statistical Compting, R Fondation for Statistical Compting, Vienna, URL http://www.r-project.org. Tibshirani R., Walther G., Hastie T. (2001), Estimating the Nmber of Clsters in a Data Set via the Gap Statistic,,,Jornal of the Royal Statistical Society ser. B, vol. 63, part 2, s. 411-423. Walesiak M. (2006), Uogólniona miara odległości w statystycznej analizie wielowymiarowej, wydanie drgie rozszerzone, AE, Wrocław. Walesiak M., Ddek A. (2006a), Symlacyjna optymalizacja wybor procedry klasyfikacyjnej dla danego typ danych oprogramowanie kompterowe i wyniki badań, [w:] K. Jajga, M. Walesiak (red.), Klasyfikacja i analiza danych teoria i zastosowania, Taksonomia 13, Prace Nakowe AE we Wrocławi nr 1126, AE, Wrocław, s. 120-129. 55
Walesiak M., Ddek A. (2006b), Determination of Optimal Clstering Procedre for a Data Set, 30 th Annal Conference of the German Classification Society (GfKl),,Advances in Data Analysis, Berlin, March 8-10. Walesiak M., Ddek A. (2007), Symlacyjna optymalizacja wybor procedry klasyfikacyjnej dla danego typ danych charakterystyka problem, Zeszyty Nakowe Uniwersytet Szczecińskiego (w drk). THE SELECTED PROBLEMS IN CLUSTER ANALYSIS WITH APPLICATION OF CLUSTERSIM COMPUTER PROGRAM AND R ENVIRONMENT Smmary Package clstersim has been written in R langage. It contains one main fnction clster.sim and sixteen axiliary fnctions. The article presents selected axiliary fnctions of clstersim program and examples of the syntax (procedres) for solving different clstering problems sing among others clstersim package inclding especially dist.gdm fnction. These procedres help to resolve a broad range of classification problems that are not available in statistical packages (e.g. SPSS, Statistica, S-Pls, SAS). 56