Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

12.

Metody grupowania danych wielowymiarowych


12.1 Wprowadzenie
Grupowanie danych ma za zadanie podział przestrzeni wielowymiarowej na grupy (klastry)
zawierające dane podobne do siebie, przy czym podobieństwo może być mierzone przy
użyciu różnych miar w zależności od celów jakie są stawiane przed taką analizą [82]. Tego
typu podział pozwala na lepszą ocenę danych z punktu widzenia ich zawartości.
Grupowanie danych ma wiele zastosowań w różnych dziedzinach, między innymi w
technice, biznesie, medycynie itp. Przykładowo w biznesie można użyć grupowania do
segmentacji upodobań konsumenckich klientów w różnych grupach wiekowych. W ocenie
działalności przedsiębiorstw grupowanie może dotyczyć firm o podobnych charakterystykach
dotyczących wielkości firmy, tempa wzrostu, stopy zysku, wielkości rynku zbytu, powiązań
międzynarodowych, itp.
Typowa postać danych przetwarzanych w procesie grupowania ma wiele kolumn
zawierających wyniki pomiarów poszczególnych zmiennych. Każdy wiersz reprezentujący
obserwację stanowi jeden rekord, który będzie mógł być reprezentowany jako wektor. Celem
analizy jest utworzenie grup rekordów podobnych do siebie, tworzących klastry. Liczba
klastrów może być ustalona z góry lub określana przez algorytm grupowania. Zwykle
zawartość poszczególnych kolumn może znacznie różnić się co do skali, utrudniając właściwą
ocenę wkładu poszczególnych zmiennych w danym rekordzie. Dlatego powszechnie stosuje
się normalizację czy standaryzację poszczególnych kolumn prowadzącą do ujednolicenia
zakresów ich wartości.
Najczęściej stosowana jest standaryzacja statystyczna [7,55,82]. Jeśli kolumnę danych
oznaczymy w postaci wektora N elementowego x gdzie x=[x1, x2, …, xN]T to zgodnie ze
standaryzacją statystyczną każdy element tego wektora zostanie przeskalowany według wzoru
xi − mi
xi := (12.1)
i
w którym mi jest wartością średnią zmiennej xi w obserwacjach (i-tej kolumny danych), a σi
odchyleniem standardowym.
Innym sposobem normalizacji danych (tak zwana normalizacja typu min-max) jest
sprowadzenie wszystkich wielkości do zakresu [0, 1] przy użyciu wzoru
xi − xi _ min
xi := (12.2)
xi _ max − xi _ min

w którym xi_min oraz xi_max oznaczają odpowiednio wielkości minimalne i maksymalne


zmiennej xi w obserwacjach (i-tej kolumny danych). Inną wersją normalizacji jest podzielenie
266
wartości oryginalnej każdej kolumny obserwacji przez jedną wartość normalizacyjną xnorm
wybieraną na podstawie analizy wartości poszczególnych elementów tej kolumny.
xi
xi := (12.3)
xnorm
Może być to wartość maksymalna absolutna (w sensie modułu), wartość średnia lub mediana.
Duży wpływ na wybór wartości normalizującej ma rozproszenie danych w wektorze,
szczególnie występowanie wartości odstających. Występowanie zmiennej odstającej od reszty
powoduje w większości wypadków znaczne rozproszenie wartości przeskalowanych.
Szczególnie czułe pod tym względem jest normalizacja z użyciem xnorm=max(abs(x)),
powodujące ujednolicenie małych wartości pozostałych elementów, gubiąc po drodze ich
zróżnicowanie. Najmniej wrażliwa pod tym względem jest standaryzacja statystyczna i
normalizacja (12.3) z użyciem mediany.

12.2 Miary odległości między wektorami


Podstawą grupowania danych wielowymiarowych jest miara odległości między wektorami.
Stosuje się różne rodzaje tych miar [82]. W przypadku danych rzeczywisto-liczbowych
najpopularniejsza jest miara euklidesowa. Zgodnie z nią odległość dij między wektorem xi a
wektorem xj jest zdefiniowana w postaci normy L2

(x ) (xi − x j ) =  (xik − x jk )
N
d ij = x i − x j = i −xj
T 2

2
(12.4)
k =1

Odmianą odległości euklidesowej jest odległość Mahalanobisa, która bierze pod


uwagę również korelacje występujące między elementami obu porównywanych wektorów.
Norma Mahalanobisa jest definiowana w postaci

dij = (x − x ) S (x − x )
i j
T −1
i j (12.5)

w której S oznacza macierz kowariancji obu wektorów. W tej definicji wielkości


nieskorelowane mają większy wpływ na końcowy wynik niż te które są mocno lub średnio
skorelowane.
Inną normą również stosowaną przy obliczaniu odległości między wektorami jest
norma L1, zwana również normą Czebyszewa lub normą miejską. Zgodnie z nią odległość
między wektorem xi a wektorem xj oblicza się według wzoru
N
dij = xi − x j 1 =  xik − x jk (12.6)
k =1

W skrajnym przypadku używać można również normy maksimum (L∞), zgodnie z którą

267
dij = xi − x j 
= max xik − x jk (12.7)
k =1, 2.. N

W analizie danych numerycznych ważną rolę odgrywa korelacja między danymi, będąca
również pewnym specyficznym rodzajem miary odległości między wektorami xi oraz xj .
Miarę tę wyraża współczynnik korelacji Pearsona definiowany w postaci [14,58,82]

 (xik − mi )(x jk − m j )
N

rij = k =1
(12.8)
 (xik − mi ) (x jk − m j )
N
2 2

k =1

w której mi, mj oznaczają wartość średnią elementów, odpowiednio wektora xi oraz xj.
W przypadku wektorów binarnych o wartościach zero-jedynkowych popularna jest
miara Hamminga, definiowana jako liczba bitów, o które różnią się oba wektory. Można ją
zapisać w postaci zależności

d H ( x i , x j ) =  xi ( k )(1 − x j ( k )) + x j ( k )(1 − xi ( k )) 


N

(12.9)
k =1

12.3 Miary odległości między klastrami


Miary odległości między klastrami są rozszerzeniem odpowiednich miar wektorowych
przedstawionych w punkcie poprzednim. Załóżmy, że klaster A zawiera nA rekordów a klaster
B nB rekordów. Można wówczas zdefiniować kilka miar odległości między-klastrowej
[58,82].
• Odległość minimalna
dmin ( A, B) = min(d (xi , x j )) (12.10)

dla i=1, 2, …, nA, j=1, 2, …, nB. Jest mierzona jako minimalna odległość między najbliższymi
sobie reprezentantami obu klastrów.
• Odległość maksymalna
dmax ( A, B) = max(d (xi , x j )) (12.11)

dla i=1, 2, …, nA, j=1, 2, …, nB. Jest mierzona jako maksymalna odległość między najbardziej
skrajnymi reprezentantami obu klastrów.
• Odległość średnia
dmean ( A, B) = mean(d (xi , x j )) (12.12)

dla i=1, 2, …, nA, j=1, 2, …, nB. Jest mierzona jako średnia odległość między wszystkimi
możliwymi kombinacjami wektorów obu klastrów.
• Odległość centroidalna

268
Jest to odległość między wektorem opisującym centrum klastra A oraz wektorem punktu
centralnego klastra B. Punkt centralny obu klastrów wyznacza się jako średnią wektorów
1 nA 1 nB
wchodzących w skład odpowiednich klastrów, przy czym c A =  xi , c B =  xi . Przy
nA i=1 nB i=1
takich oznaczeniach odległość centroidalna określona jest wzorem
d cent ( A, B) = d (c A , c B )) (12.13)

Na rys. 12.1 zilustrowano różne odległości między-klastrowe: minimalną, maksymalną oraz


centroidalną. Odległość minimalna oznacza odległość między najbliższymi elementami obu
klastrów, maksymalna – między najdalej położonymi, odległość średnia jest odległością
uśrednioną mierzoną między wszystkimi parami danych tworzących oba klastry, natomiast
odległość centrowa (zbliżona do średniej) oznacza odległość między centrami obu klastrów
cA oraz cB.

Rys. 12.1 Ilustracja różnych miar odległości między klastrami: minimalnej dmin, maksymalnej
dmax oraz centroidalnej dcent

Wybór rodzaju zastosowanej miary odległości jest związany z kształtem klastra. W


przypadku klastrów o kształcie łańcucha najwięcej mówiącym wyborem różnicującym klastry
tego typu wydaje się być odległość minimalna. Odległość średnia lub centroidalna jest
naturalnym wyborem w przypadku rozkładu sferycznego danych w klastrze lub w przypadku,
gdy nie ma żadnej informacji o rozkładzie danych (najczęściej rozkład naturalny danych jest
zbliżony do sferycznego).

12.4 Algorytm K-means grupowania


Jednym z najprostszych algorytmów grupowania jest algorytm K-means (K uśrednień),
będący jedną z wersji algorytmu Linde-Buzo-Graya (LGB) [82]. Zakładamy, że dany jest

269
zbiór n obserwacji opisanych wektorami x1, x2, …, xn każdy o wymiarze N. Zadaniem
algorytmu K-means jest podział tych n obserwacji na K zbiorów (klastrów) S1, S2, …, SK przy
K<n w taki sposób, aby zminimalizować sumę kwadratów odległości między centrum ci a
pozostałymi wektorami xj wewnątrz każdego klastra.
K 2
arg min   x j −ci (12.14)
S i =1 x j Si

Taki podział przestrzeni nosi nazwę mozaiki Voronoi’a składającej się z wieloboków, przy
czym każdy wielobok traktowany jest jako klaster reprezentowany przez swoje centrum.
Średnia wartość błędu reprezentowania wszystkich wektorów x przez odpowiednie centra
klastrów nosi nazwę błędu kwantyzacji wektorowej [55].
W rozwiązaniu algorytmu K-means stosuje się dwie wersje: bezpośrednią oraz
skumulowaną. W wersji bezpośredniej (on-line) tego algorytmu aktualizacja centrów
następuje po każdej prezentacji wektora x ze zbioru danych uczących. W wersji
skumulowanej (off-line) centra są jednocześnie aktualizowane dopiero po zaprezentowaniu
wszystkich składników zbioru. W obu przypadkach wstępny wybór centrów odbywa się
najczęściej losowo przy wykorzystaniu rozkładu równomiernego składowych wektora
wewnątrz obszaru określoności danych.
W wersji skumulowanej prezentowane są wszystkie wektory uczące x i każdy z nich
przyporządkowany jest odpowiedniemu centrum według kryterium odległościowego. Zbiór
wektorów przypisanych do jednego centrum twor5545]
1 ni
c i (k + 1) =  xi (12.15)
ni i=1
gdzie ni oznacza liczbę wektorów x przypisanych w k-tym cyklu uczącym do i-tego centrum.
Uaktualnianie wartości wszystkich centrów odbywa się równolegle, a proces prezentacji
zbioru wektorów x oraz uaktualniania wartości centrów powtarzany jest wielokrotnie
(poczynając od wartości startowych, zwykle losowych) aż do ustalenia się pozycji centrów.
W wersji on-line po zaprezentowaniu j-tego wektora xj ze zbioru uczącego
selekcjonowane jest centrum najbliższe mu w sensie wybranej metryki. Tylko to centrum
podlega aktualizacji zgodnie ze wzorem [55]
c i (k + 1) = c i (k ) + x j − c i (k ) (12.16)

gdzie η jest współczynnikiem uczenia o wartości małej (zwykle η<<1), malejącej z iteracjami
do zera. Pozostałe centra nie ulegają zmianie. Każdy wektor uczący x jest pokazywany

270
wielokrotnie, aż do ustalenia wartości centrów. Tego typu adaptacja nosi również skrótową
nazwę WTA (ang. Winner Takes All).
Stosowana jest odmiana algorytmu, w której centrum zwycięskie adaptowane jest
według wzoru (12.16) a jeden lub kilka najbliższych mu centrów odpychane w przeciwnym
kierunku, przy czym realizacja tego procesu odbywa się zgodnie ze wzorem
c i (k + 1) = c i (k ) −1 x j − c i (k ) (12.17)

przy η1≤ η. Taka modyfikacja algorytmu pozwala na rozsunięcie centrów położonych blisko
siebie i lepszą penetrację przestrzeni danych.
Oba rozwiązania nie gwarantują jednak bezwzględnej zbieżności do rozwiązania
optymalnego w sensie globalnym, a jedynie zapewniają optymalność lokalną, uzależnioną od
warunków początkowych i parametrów procesu. Przy niefortunnie dobranych warunkach
początkowych pewne centra mogą utknąć w regionie, w którym liczba danych uczących jest
znikoma lub żadna i proces modyfikacji ich położeń może zostać zahamowany lub nawet
zastopowany całkowicie. Tego typu centra nazywane są „martwymi”. W ten sposób dane
wejściowe reprezentowane będą przez mniejszą liczbę centrów (część z nich martwa), w
efekcie ich błąd reprezentacji zwany błędem kwantyzacji, staje się większy. Istotnym
problemem staje się zatem uaktywnienie wszystkich centrów sieci.
Można to osiągnąć, jeśli w algorytmie uczącym będzie uwzględniona dotychczasowa
liczba zwycięstw poszczególnych centrów, a proces uczenia zostanie zorganizowany w taki
sposób, aby dać szansę zwycięstwa mniej aktywnym. Istnieje wiele mechanizmów
uwzględniających aktywność poszczególnych centrów w procesie uczenia.
Jedną ze skuteczniejszych metod eliminacji centrów martwych jest uwzględnienie
liczby zwycięstw każdego centrum w procesie wyłaniania zwycięzcy [55]. Odbywa się to na
etapie obliczania efektywnej odległości d(x,c) aktualnego wektora x od centrum c,
modyfikując ją proporcjonalnie do liczby zwycięstw danego centrum w przeszłości. Jeśli
oznaczyć liczbę zwycięstw i-tego centrum przez Ni, to modyfikację taką można przyjąć w
postaci [55]
d (x,c)  N i d (x,c) (12.18)

Na początku każdemu centrum przypisuje się wartość startową Ni=1. W procesie uczenia
centra aktywne o dużej wartości Ni są karane sztucznym zawyżeniem tej odległości. Należy
zaznaczyć, że modyfikację odległości stosuje się jedynie przy wyłanianiu zwycięzcy. W
momencie uaktualniania wartości centrum bierze się pod uwagę odległość rzeczywistą.
Modyfikacja odległości ma za zadanie jedynie uaktywnić wszystkie centra przez

271
wprowadzenie ich w obszar o dużej liczbie danych. Po wykonaniu zadania (zwykle po dwóch
lub trzech cyklach uczących) wyłącza się ją, pozwalając na niezakłóconą konkurencję. Tego
typu odmiana K-means nosi nazwę CWTA (ang. Conscience Winner Takes All).
Innym rozwiązaniem tego problemu jest modyfikacja położeń wielu centrów na raz, ze
stopniowaniem wartości współczynnika uczenia dla każdego z nich. Tego typu modyfikację
stosuje się w sieciach samoorganizujących Kohonena i nosi nazwę WTM (ang. Winner Takes
Most). W tym podejściu centrum najbliższe aktualnemu wektorowi x jest modyfikowane
najbardziej, pozostałe coraz mniej w zależności od ich odległości względem wektora x.
Przykładem takiego rozwiązania jest algorytm gazu neuronowego, nazwany tak
przez autorów ze względu na podobieństwo dynamiki przesunięć centrów do ruchu
cząsteczek gazu [55]. W algorytmie tym wszystkie centra podlegają sortowaniu w każdej
iteracji w zależności od ich odległości od aktualnego wektora x. Centra są następnie
ustawiane w kolejności odpowiadającej narastającej odległości d0 < d1 < d2 ….< dn-1, gdzie
dm = x − c(m(i)) oznacza odległość wektora x od i-tego centrum, zajmującego w wyniku

sortowania m-tą pozycję w szeregu za centrum zwycięzcą, któremu przyporządkowuje się


najmniejszą odległość d0. Każdemu centrum przyporządkowuje się następnie wartość funkcji
wagowej w(i) uzależnionej wykładniczo od pozycji danego centrum w szeregu [55]
 m(i) 
wi = exp −  (12.19)
  
w której zmienna m(i) oznacza kolejność odległości uzyskaną przez i-te centrum w wyniku
sortowania, a λ jest parametrem o wartości malejącej z iteracjami (zwycięzca przyjmuje
wartość m=0). Proces uczenia powinien rozpoczynać się z dużą wartością λ, po czym
powinna ona maleć wraz z upływem czasu do wartości minimalnej, najczęściej zerowej.
Zmiana ta może być liniowa bądź wykładnicza. Adaptacja centrum odbywa się wówczas
według zmodyfikowanego wzoru
ci (k + 1) = ci (k ) +wi x k − ci (k ) (12.20)

W celu zmniejszenia liczby operacji matematycznych wymaganych w algorytmie gazu


neuronowego można zastosować pewne uproszczenie, polegające na uwzględnieniu w
sortowaniu tylko centrów o najbardziej znaczących wartościach funkcji wagowej wi,
ignorując pozostałe.
Innym rozwiązaniem (stanowiącym podstawę sieci neuronowych Kohonena) jest
algorytm uwzględniający w adaptacji centrów sąsiedztwo najbliższych centrów. Centrum
zwycięskie i te położone w jego sąsiedztwie podlegają adaptacji swoich wag w kolejnych

272
iteracjach, zmieniając je w kierunku aktualnie podanego na wejście wektora xk, zgodnie z
uogólnioną regułą Kohonena [55]
w i (k + 1) = w i (k ) + i G (i, x k )x k − w i (k ) (12.21)
w której G(i,xk) jest funkcją sąsiedztwa przyporządkowaną i-temu centrum przy prezentacji
wektora xk, a  współczynnikiem uczenia. Wartość współczynnika uczenia maleje z czasem,
osiągając wartość zerową na końcu procesu uczenia. Funkcja G(i,xk) określa zbiór centrów w
sąsiedztwie zwycięzcy podlegających adaptacji w procesie uczenia. W zależności od
przyjętego wyboru funkcji sąsiedztwa otrzymuje się różne strategie uczenia. Na przykład w
sąsiedztwie gaussowskim funkcja G(i,xk) przyjmuje wartość równą 1 dla zwycięzcy i wartości
z przedziału [0, 1] dla pozostałych centrów z sąsiedztwa, przy czym im dalej położone jest
centrum od zwycięzcy tym mniejsza wartość funkcji sąsiedztwa. Przykładowym
rozwiązaniem jest funkcja sąsiedztwa gaussowskiego zaproponowana przez Kohonena w
postaci [55]
 d 2 (w i , w w ) 
G (i, x) = exp−  (12.22)
  
w której odległość jest liczona między wagami centrum i-tego (wi) a centrum zwycięskiemu
(ww), d (w i , w w ) = w i − w w . Tego typu rozwiązanie jest typowe przy tworzeniu tzw. mapy

Kohonena, stanowiącej przybliżone odwzorowanie rozkładu danych wielowymiarowych w


przestrzeni dwuwymiarowej. Jeśli odległość rzeczywista wzrasta, powinna wzrosnąć również
odległość punktów na mapie. Przy zbliżaniu się do siebie punktów w przestrzeni
wielowymiarowej odległość na mapie powinna zmniejszyć się. Mapę Kohonena stanowi
układ centrów rozmieszczonych w osi x i osi y o przypisanych sobie sąsiadach W trakcie
uczenia adaptowane są wagi centrum zwycięzcy i jego topologicznych sąsiadów tworząc w
efekcie efekt graficzny odwzorowania 2D.
Dobór wartości współczynnika uczenia η odbywa się zwykle adaptacyjnie z iteracji na
iterację zmniejszając się w miarę upływu czasu uczenia do zera.
Jako przykład rozpatrzymy podział danych z przestrzeni dwuwymiarowej o rozkładzie
nierównomiernym przedstawionym na rys. 12.2, do którego zastosujemy algorytm K-means w
trybie on-line w dwu odmianach: bezpośredniej WTA oraz z eliminacją klastrów martwych
(CWTA).

273
Rys. 12.2 Rozkład danych podlegających grupowaniu w przykładzie

Zastosowanie oryginalnej postaci algorytmu WTA przy 16 klastrach prowadzi do powstania


jednego centrum „martwego”, czyli takiego, które po inicjalizacji losowej nigdy nie wygrało
konkurencji z innymi centrami. Ilustrację tego przypadku stanowi rys. 12.3a przedstawiający
podział strefy wpływów poszczególnych centrów w postaci wieloboków Voronoi’a. Jedno
centrum (prawy dolny róg) w wyniku niefortunnego losowania zostało umieszczone w strefie
bez danych, nigdy nie zwyciężając i pozostając przez cały algorytm uczący „martwym”.
Znaczna poprawa wyników grupowania jest możliwa przy zastosowaniu
zmodyfikowanej metody K-means w wersji CWTA. Dla uaktywnienia wszystkich
zainicjowanych centrów w pierwszym cyklu adaptacji zastosowano zmodyfikowany sposób
obliczania odległości prezentowanego wektora x od kolejnych centrów ci uwzględniający
liczbę dotychczasowych zwycięstw określony zależnością (12.18).

Rys. 12.3 Podział przestrzeni danych z rys. 12.2 metodą K-means w wersji: a) WTA, b)
CWTA

274
W ten sposób centrum zainicjowane niefortunnie w obszarze pozbawionym danych,
nigdy nie wygra konkurencji w systemie WTA. Zastosowanie algorytmu CWTA przy
wartości startowej Ni=1 umożliwia po określonej liczbie iteracji wygranie konkurencji z
innymi centrami częściej wygrywającymi. Na rys. 12.3b przedstawiony wynik graficzny
segmentacji obszaru danych przy zastosowaniu tej metody uczenia. Tym razem wszystkie
klastry są aktywne i zawierają pewną liczbę danych, dla których określone centrum okazało
się zwycięskie. Zauważmy, że w obu metodach najgęstsze zgrupowania centrów znajdują się
w obszarze o dużej liczbie danych.
Metoda K-means pozwala uzyskać minimum funkcji celu wyrażającej błąd
kwantyzacji wektorowej. Rozpatrzy przypadek uproszczony dla danych jednowymiarowych,
gdzie x=x, w którym błąd E reprezentacji danych przez centra wyrażony jest w postaci normy
euklidesowej [58]. Błąd ten można wyrazić w postaci
K
E =  (x − ci )
2
(12.23)
i =1 xci

W równaniu tym ci jest centrum i-tego klastra. Optymalne wartości liczbowe tych centrów
powinny odpowiadać minimum błędu E. Warunkiem wystąpienia minimum jest zerowanie się
pierwszej pochodnej funkcji względem centrów. W związku z powyższym mamy
E  K K

=  (x − ci ) =  (x − ci )2 = −  2(x − ck ) = 0
2
(12.24)
ck ck i =1 xci i =1 xci ck xck

Jeśli założymy, że liczba zwycięstw k-tego centrum w klastrze wynosi Nk wówczas ostania
zależność upraszcza się do postaci
1
x = N c
xck
k k → ck =
Nk
x
xck
(12.25)

Oznacza to potwierdzenie faktu, że wartość centrum równa średniej danych przypisanych do


danego klastra odpowiada optymalnemu przypadkowi grupowania.
Interesujący jest również przypadek, gdy błąd sumaryczny grupowania jest wyrażony
w postaci normy L1 [82] W przypadku danych jednowymiarowych można zapisać go
wówczas wzorem
K
E =  x − ci (12.26)
i =1 xci

Pierwsza pochodna funkcji względem ck prowadzi do wyrażenia


E  K K
 
=  x − ci =  x − ci = −  x − ck = −  sign(x − ck ) =0 (12.27)
ck ck i =1 xci i =1 xci ck xck ck xck

275
Ostatnia postać wyrażenia pozwala stwierdzić, że rozwiązaniem w tym przypadku jest
mediana zbioru punktów x należących do k-tego klastra Sk, co zapiszemy w postaci
ck = mediana x  S k  (12.28)

W Matlabie istnieje funkcja kmeans, która dokonuje grupowania danych zgromadzonych w


macierzy X zawierającej n wektorów obserwacji x o wymiarze N. Grupowanie odbywa się na
zasadzie minimalizacji sumy odległości wektorów x od centrum klastra, do którego należą.
Podstawowe wywołanie programu ma postać [49]
[IDX, C] = kmeans(X, K)
W powyższej postaci X oznacza macierz danych podlegających grupowaniu, K – liczbę
klastrów, IDX - numer klastra, do którego przypisany jest każdy punkt danych, a C macierz
opisującą położenia centrów (wymiar K×N). Możliwe jest wyprowadzenie innych wyników,
np. sumy odległości danych od centrów zwycięskich klastrów czy odległości każdego rekordu
danych od każdego centrum. Komenda help kmeans pozwala uzyskać pomoc w sposobie
sterowania procesem grupowania (sposób liczenia odległości, inicjalizacja położenia centrów,
liczba iteracji) a także wyświetlania wyników.

12.5 Algorytm hierarchiczny grupowania


Algorytm K-means wymaga ustalenia z góry liczby klastrów, na jakie dzielona jest
przestrzeń danych. Niewłaściwy dobór tej liczby wymaga powtórzenia procesu adaptacji od
początku. Pewnym rozwiązaniem pozwalającym uniknąć tej niedogodności jest algorytm
hierarchiczny, w którym liczba klastrów jest wynikiem ciągłej analizy jakości podziału
przestrzeni danych na różną liczbę klastrów [82].
Algorytm hierarchiczny grupowania dokonuje wielokrotnego podziału przestrzeni danych
przy założeniu różnej liczby klastrów. Podział kończy się na tym poziomie, który gwarantuje
osiągnięcie pożądanego błędu reprezentacji danych. W ogólności można wyróżnić tu dwa
podejścia[58,82].
• Metoda łączenia mniejszych klastrów w większe. W tym podejściu start algorytmu
następuje z ilością klastrów równą liczbie danych. Następnie łączy się najbliższe sobie
(co do odległości) klastry redukując w ten sposób ich liczbę.
• Metoda podziału większych klastrów na mniejsze. W tym podejściu na początku
wszystkie dane tworzą jeden klaster. W kolejnych etapach na podstawie analizy
rozproszenia danych w poszczególnych klastrach dokonuje się ich podziału na dwa
mniejsze. Proces powtarza się aż do osiągnięcia pożądanego efektu grupowania.

276
Proces podziału hierarchicznego jest zwykle przedstawiany graficznie w postaci tak zwanego
dendrogramu, obrazującego sposób podziału danych. Przykład dendrogramu dla 5 danych
przedstawiono na rys. 12.4a. W przypadku danych 2-wymiarowych bardziej przejrzystym
sposobem prezentacji grupowania hierarchicznego jest struktura zagnieżdżona klastrów,
zobrazowana na rys. 12.4b.

a)

b)
Rys. 12.4 Przykład reprezentacji podziału hierarchicznego za pomocą a) dendrogramu, b)
struktury zagnieżdżonej klastrów

Algorytm podziału hierarchicznego metodą łączenia klastrów można ogólnie przedstawić w


następującej postaci.
• Start z liczbą klastrów równą liczbie danych (każdy rekord danych stanowi jeden
klaster).
• Określ macierz odległości między poszczególnymi klastrami, poszukując pary o
najmniejszej odległości między nimi. Odległość między klastrami może być
zdefiniowana jako największa odległość między skrajnymi punktami należącymi do
obu klastrów.
• Połącz ze sobą dwa najbliższe sobie klastry redukując w ten sposób ich liczbę.
Łączenie może dotyczyć kilku par klastrów naraz, jeśli ich odległości w chwili
podziału są równe.

277
• Uaktualnij macierz odległości między poszczególnymi klastrami i porównaj z
odległościami na poprzednim poziomie podziału.
• Wykonuj powyższe operacje łączenia aż do uzyskania jednego klastra.
• Po wykonaniu powyższych czynności wybierz odpowiedni dla danego zadania poziom
podziału danych na klastry.
Dla zilustrowania powyższego algorytmu rozważmy układ 6 dwuwymiarowych rekordów
danych przedstawiony na rys. 12.5 [58].

Rys. 12.5 Rozkład danych dwuwymiarowych w przykładzie

Na starcie każdy punkt danych stanowi jeden klaster. Macierz odległościowa między
poszczególnymi punktami przedstawiona jest w tabeli 12.1.

Tabela 12.1 Macierz odległości między klastrami na starcie algorytmu


Kl1 Kl2 Kl3 Kl4 Kl5 Kl6
Kl1 0 0.40 0.89 0.89 0.63 0.28
Kl2 0.40 0 0.80 0.56 0.63 0.28
Kl3 0.89 0.80 0 0.56 0.28 0.63
Kl4 0.89 0.56 0.56 0 0.63 0.63
Kl5 0.63 0.63 0.28 0.63 0 0.4
Kl6 0.28 0.28 0.63 0.63 0.4 0

278
Z analizy odległości między-klastrowej wynika, że najbliżej siebie są położone klastry: Kl1 i
Kl6, jak również Kl2 i Kl6 oraz Kl3 i Kl5 (wszystkie odległości równe 0.28). Wobec wspólnego
klastra Kl6 w następnym etapie można jednocześnie połączyć tylko 2 pary klastrów. Niech
będą to klastry: Kl1 i Kl6, oraz Kl3 i Kl5. Tworzymy nową macierz odległości między
klastrami poszukując tych położonych najbliżej siebie. Aby uzyskać wiarygodne łączenie
klastrów należy wziąć pod uwagę odległości wszystkich elementów tworzących poszczególne
klastry. Łączymy ze sobą te klastry, dla których maksymalne odległości elementów są
najmniejsze. W tabeli 12.2 przedstawiono macierz maksymalnych odległości między
elementami klastrów branymi pod uwagę do połączenia.

Tabela 12.2 Macierz odległości między klastrami w drugim kroku


Kl16 Kl2 Kl35 Kl4
Kl16 0 0.40 0.89 0.89
Kl2 0.40 0 0.80 0.56
Kl35 0.89 0.80 0 0.62
Kl4 0.89 0.56 0.62 0

Tym razem najmniejsza odległość równa 0.40 dotyczy tylko jednej pary: klaster Kl16 zostaje
połączony z klastrem Kl2. Pozostałe klastry pozostają nadal rozłączne, gdyż odległość między
nimi jest większa niż 0.40. W efekcie na następnym etapie tworzona jest nowa macierz
maksymalnych odległości między najdalej położonymi elementami klastrów, przedstawiona
w tabeli 12.3.

Tabela 12.3 Macierz odległości między klastrami w trzecim kroku


Kl162 Kl35 Kl4
Kl162 0 0.89 0.89
Kl35 0.89 0 0.63
Kl4 0.89 0.63 0

Klaster Kl35 jest teraz łączony z klastrem Kl4 tworząc większy klaster K354. W efekcie
procedura łączenia hierarchicznego dobiegła końca przy podziale danych na dwa klastry Kl162
oraz Kl354. Na rys. 12.6 przedstawiono dendrogram oraz strukturę zagnieżdżoną klastrów
ilustrujące proces grupowania hierarchicznego danych z przykładu.

279
a)

b)
Rys. 12.6 Ilustracja procesu grupowania danych z przykładu w postaci: a) dendrogramu, b)
struktury zagnieżdżonej klastrów

12.6 Algorytmy rozmyte grupowania


Algorytmy grupowania omówione w punktach poprzednich stanowią klasyczne podejście do
segmentacji obszaru danych przy założeniu, że każdy wektor danych może przynależeć tylko
do jednego klastra. Obok nich powstało inne podejście do problemu zakładające
przynależność rozmytą o cząstkowej przynależności wektora x do wielu klastrów naraz.
Algorytmy grupowania rozmytego dzielą przestrzeń danych na klastry również na
podstawie miar odległościowych, ale za pośrednictwem tak zwanej miary przynależności
rozmytej. Współczynnik przynależności do klastra w systemach grupowania rozmytego może
przyjmować wartość z przedziału [0, 1], podczas gdy w systemach klasycznych (ostrych) ta
przynależność mogła przyjmować tylko dwie wartości: jeden dla oznaczenia pełnej
przynależności lub zero przy braku tej przynależności [55]. W podejściu rozmytym do
problemu grupowania wektor x przynależy do wszystkich klastrów, ale z różnym
współczynnikiem przynależności, uzależnionym od jego odległości od centrów
poszczególnych klastrów, przy czym suma współczynników przynależności do wszystkich

280
klastrów musi być równa 1. Położenie centrum klastra jest uzależnione od liczby i rozkładu
danych w określonym rejonie przestrzeni. Centra lokowane są w rejonach o dużej gęstości
danych. Przedstawimy tu dwie odmiany grupowania rozmytego: algorytm grupowania
górskiego oraz c-means.

12.6.1 Algorytm grupowania górskiego


Algorytm grupowania górskiego został zaproponowany przez Yagera i Fileva [89]. Generuje
on tzw. funkcje górskie jako miarę gęstości rozmieszczenia wektorów x w przestrzeni. Na
podstawie rozkładu wartości minimalnych i maksymalnych każdej składowej wektorów x
tworzy się równomierną siatkę pokrywającą przestrzeń danych wektorów. Kombinacje
współrzędnych wszystkich punktów siatki dla każdej zmiennej tworzą potencjalne centra c
dla których określa się wartości tak zwanej funkcji górskiej g(c)
 c −xj 
2b

g (c) =  exp − 
n

(12.29)
j =1  2 2 
 
W równaniu tym n oznacza liczbę wektorów x poddanych grupowaniu. Współczynnik σ jest
stałą dobieraną indywidualnie dla każdego problemu, charakteryzującą szerokość funkcji
górskiej, natomiast b jest jej wykładnikiem (standardowo b=1). Wartość funkcji g(c) jest
miarą wysokości funkcji górskiej. Jest ona tym większa im więcej wektorów x jest
skupionych wokół potencjalnego centrum c. Mała wartość g(c) świadczy o tym, że centrum c
leży w obszarze, w którym znajduje się niewielka liczba wektorów x. Współczynnik σ ma
niewielki wpływ na ostateczne relacje zachodzące między kolejnymi wartościami g(c) stąd
przyjęcie arbitralne jego wartości nie jest krytyczne dla wyniku grupowania danych.
Po wyznaczeniu wartości g(c) dla wszystkich potencjalnych centrów wybieramy
centrum c1 reprezentujące największą wartość g(c). Aby wyznaczyć następne centrum, należy
najpierw wyeliminować c1 oraz węzły w bezpośredniej jego bliskości. Można to zrobić
redefiniując funkcję górską przez odjęcie od niej przeskalowanej funkcji Gaussa z centrum
położonym w c1. Oznaczając tę funkcję przez gnew(c) otrzymuje się
 c − c1 
2b

g new (c) = g (c) − g (c1 ) exp −  (12.30)


 2 2 
 
Nowa funkcja gnew(c) przyjmuje wartość zerową w c1 i wartości bliskie zeru w pobliżu c1,
odkrywając w ten sposób nowe potencjalne maksima położone w innym rejonie przestrzeni
wielowymiarowej.

281
Rys. 12.7 ilustruje typowy proces grupowania górskiego dla obszaru
dwuwymiarowego [58], przy czym rys.12.7a pokazuje wykres startowy funkcji g(c), rys.
12.7b - funkcję gnew(c) po wyeliminowaniu pierwszego centrum w c1, rys. 12.7c - po
wyeliminowaniu drugiego centrum w c2, a rys. 12.7 d - po wyeliminowaniu trzeciego centrum
w c3. Jak widać eliminacja kolejnych centrów (maksimów funkcji górskich) odkrywa
następne centra i umożliwia w dalszej kolejności ich eliminację.

Rys. 12. 7 Ilustracja kolejnych etapów grupowania górskiego

Proces wyłaniania kolejnych centrów odbywa się kolejno na zmodyfikowanych


wartościach funkcji gnew(c), wynikających z eliminacji najbliższego otoczenia ostatnio
wyłonionego centrum. Kończy się z chwilą wyselekcjonowania wszystkich centrów,
przyjętych w modelu rozmytym klasteryzacji. Metoda grupowania górskiego jest efektywna,
gdy wymiar wektora x nie jest zbyt wysoki. W przeciwnym wypadku przy dużym wymiarze
tego wektora, liczba potencjalnych centrów c wzrasta lawinowo i proces określania kolejnych
funkcji górskich staje się nazbyt wydłużony a procedura mało efektywna. W takim przypadku
lepsza jest zwykle odmiana tego algorytmu zwana grupowaniem różnicowym.
Algorytm grupowania różnicowego przyjmuje dane wektory xi obserwacji jako
potencjalne centra ci=xi. Funkcja górska D(xi) jest w tym algorytmie zdefiniowana w postaci
[89]
 xi − x j 
2b

D(c i = x i ) =  exp − 
n

(12.31)
j =1  (ra / 2)2 
 
Wartość współczynnika ra ustala wielkość sąsiedztwa. Tylko wektory xj znajdujące się w tym
sąsiedztwie wpływają w sposób istotny na wartość D(ci). Przy dużym zagęszczeniu punktów
wokół xi jako potencjalnego centrum wartość D(ci) jest duża. Mała wartość świadczy o tym,
282
że w otoczeniu xi znajduje się niewielka liczba danych. Taki punkt jest złym kandydatem na
centrum.
Po określeniu wartości funkcji górskiej dla każdego punktu danych, wyznaczany jest
wektor x dla którego miara gęstości D(ci=xi). jest największa. Stanowi on pierwsze
wyselekcjonowane centrum c1. Wyznaczenie następnego centrum jest możliwe po
wyeliminowaniu poprzedniego oraz wszystkich punktów należących do jego otoczenia.
Podobnie jak w grupowaniu górskim redefiniuje się funkcję górską, wprowadzając
Dnew(ci=xi) [89]
 x −c 
2b

Dnew (c i = x i ) = D(c i = x i ) − D(c1 ) exp − i 1 2  (12.32)


 (rb / 2) 
 
W nowej definicji funkcji D współczynnik rb oznacza nową wartość stałej definiującej
sąsiedztwo centrum. Zwykle spełniony jest warunek rb≥ra. Funkcja górska Dnew(ci=xi)
przyjmie wartość bliską zeru w najbliższym sąsiedztwie centrum c1.
Po zmodyfikowaniu wartości wszystkich funkcji górskich poszukuje się następnego
punktu x dla którego wartość funkcji jest największa. Stanowi on następne centrum c2. Proces
poszukiwania kolejnych centrów powtarza się sekwencyjnie po odjęciu składników
odpowiadających kolejno wydzielanym centrom. Zakończenie procesu inicjalizacji następuje
z chwilą wyłonienia wszystkich centrów, założonych na wstępie. Opisany wyżej algorytm
dokonuje segmentacji obszaru danych, znajdując optymalne położenia centrów i plasując je w
punktach danych tworzących bazę uczącą.
Po określeniu położeń wszystkich centrów każdy wektor wejściowy x jest
przypisywany do danego centrum ci ze współczynnikiem przynależności równym
 x − ci 2b

 (x) = exp −  (12.33)
 2 2 
 
12.6.2 Algorytm c-means
Algorytm c-means jest rozmytą odmianą algorytmu K-means i dokonuje podziału przestrzeni
wielowymiarowej na klastry stosując inną zasadę niż grupowanie górskie [55]. Załóżmy, że
istnieje M klastrów o centrach w ci (i = 1, 2, ..., M). Wartości początkowe centrów mogą być
przypisane losowo w zakresie zmienności poszczególnych składowych wektorów xj (j = 1,
2,..., n) użytych w grupowaniu. Każdemu wektorowi xj przypiszemy wartość współczynnika
przynależności do centrum ci stosując funkcję rozmywania zdefiniowaną w postaci

283
1
ij = 2 (12.34)
M  d ij  m −1

  
k =1 d 
 kj

w której dij jest odległością euklidesową między centrum ci a wektorem xj, dij = ci − x j .

Wartość współczynnika m dobierana jest przez użytkownika. Najczęściej przyjmuje się m=2.
Wektor xj będzie przynależał do różnych grup, reprezentowanych przez centra ci, w stopniu
μij przy czym 0  ij  1 , a sumaryczny stopień przynależności wektora x do wszystkich grup

jest równy 1. Stąd


M
 ij = 1 (12.35)
i =1

dla j = 1, 2, ..., n. Zdefiniujmy funkcję błędu odpowiadającą reprezentacji rozmytej wektorów


x jako sumę błędów cząstkowych przynależności wszystkich wektorów xj do centrów ci, z
uwzględnieniem stopnia przynależności μij w postaci
M n
E =  ijm ci − x j
2
(12.36)
i =1 j =1

gdzie m jest współczynnikiem wagowym, który może przyjmować wartości z przedziału od


zera do nieskończoności. Celem uczenia samoorganizującego jest taki dobór centrów ci , aby

dla zadanego zbioru wektorów uczących xj osiągnąć minimum funkcji błędu (12.36) przy
jednoczesnym spełnieniu warunków ograniczenia 12.35). Jest to problem minimalizacji
funkcji nieliniowej z n ograniczeniami typu równościowego.
Rozwiązanie tak zdefiniowanego problemu sprowadzić można do minimalizacji
funkcji Lagrange'a zdefiniowanej w postaci [55]
M n

J =  ijm c i − x j +  j  ij − 1
i =1 j =1
2 n

j =1
(
i =1
M
) (12.37)

gdzie αj (j = 1, 2,..., n) są mnożnikami Lagrange'a. Zostało udowodnione, że rozwiązanie tak


postawionego zadania można zapisać w postaci
n
 ijm x j
ci = j =1
n (12.38)
 m
ij
j =1

oraz
1
ij = 2 (12.39)
M  d ij  m−1
  
k =1 d
 kj 

284
w której dij jest odległością euklidesową między centrum ci a wektorem xj. Wobec nieznanych
na początku dokładnych wartości centrów algorytm adaptacji jest algorytmem iteracyjnym.
Może być on przedstawiony w następującej postaci.
1. Dokonaj inicjalizacji położeń centrów ci przyjmując ich wartości wewnątrz przedziału
zmienności poszczególnych składowych wektorów x.
2. Określ wartości współczynników przynależności μij do centrów ci (i=1, 2,...., M) dla
wszystkich wektorów xj (j=1, 2,..., n) stosując wzór (12.39).
3. Wyznacz funkcję błędu E według wzoru (12.37). Jeśli jej wartość spadnie poniżej
założonego progu lub jeśli redukcja tej wartości względem ostatniej iteracji jest
pomijalnie mała - koniec obliczeń. Ostatnie wartości centrów stanowią wówczas
rozwiązanie. W przeciwnym przypadku idź do punktu 4.
4. Oblicz nowe położenia centrów ci według wzoru (12.38) i wróć do punktu 2
algorytmu.
Procedura iteracyjna powtórzona wielokrotnie prowadzi do minimum funkcji błędu które
niekoniecznie stanowi jej minimum globalne. Jakość otrzymanych centrów mierzona
wartością funkcji błędu w zasadniczym stopniu zależy od wstępnego doboru centrów ci.
Najlepsza reprezentacja centrów wymaga, aby były one wstępnie ulokowane w obszarach
zawierających największą liczbę danych wektorów xj. Rozpoczęcie procedury iteracyjnej
wyznaczania optymalnych wartości centrów powinno być zatem poprzedzone procedurą ich
inicjalizacji. Można do tego celu zastosować między innymi algorytm grupowania górskiego
lub grupowania różnicowego.
Algorytm c-means jest zaimplementowany w Matlabie w postaci funkcji fcm.m
(toolbox Fuzzy Logic) [49]. Podstawowe wywołanie tej funkcji ma postać
[C, U, OBJ_FCN] = fcm(X, K)
Dane podlegające grupowaniu rozmytemu zawarte są w macierzy X zawierającej n wektorów
obserwacji x, każdy o wymiarze N. Liczba klastrów zdefiniowana jest liczbą K. Wynik
grupowania w postaci macierzy C o wymiarze K×N zawiera położenia poszczególnych
centrów. Macierz U zawiera wartości współczynników przynależności każdego wektora
danych do poszczególnych klastrów reprezentowanych przez centra. Wartości tych
współczynników zawierają się między zerem i jeden. Zmienna wynikowa OBJ_FCN zawiera
wartości minimalizowanej funkcji celu w procesie grupowania. Proces grupowania kończy
się, gdy zostanie osiągnięta założona liczba iteracji lub gdy różnica funkcji celu w dwu
sąsiednich iteracjach jest mniejsza niż założona wartość tolerancji (obie wielkości mogą być
ustawiane poprzez dobór odpowiednich opcji).

285
Poniższy przykład w Matlabie ilustruje działanie algorytmu c-means oraz K-means na
tym samym zbiorze danych wygenerowanym losowo.
MATLAB Python
close all # !conda install -c conda-forge scikit-fda
#
# [1] Ramos-Carreño, et al. (2019).
# GAA-UAM/scikit-fda: Functional Data
# Analysis in Python
# [Computer software].
#https://doi.org/10.5281/zenodo.3468127

import numpy as np
import matplotlib.pyplot as plt
from skfda.ml.clustering import (FuzzyCMeans,
KMeans)
from skfda import FDataGrid

x=[2+0.5*randn(10,2); X = np.concatenate( (
-1+0.3*randn(7,2); 2+0.5*np.random.randn(10,2),
0.5+0.4*randn(7,2)] -1+0.3*np.random.randn(7 ,2),
0.5+0.4*np.random.randn(7 ,2)),
axis=0)
fd = FDataGrid(X)

[C_fcm,U,obj_fcn]=fcm(x,3); fuzzy_kmeans = FuzzyCMeans(n_clusters=3)


[IDX,C_kmeans]=kmeans(x,3); fuzzy_kmeans.fit(fd)
print(
C_fcm fuzzy_kmeans.cluster_centers_.data_matrix)
C_kmeans kmeans = KMeans(n_clusters=3)
kmeans.fit(fd)
print(kmeans.cluster_centers_.data_matrix)

hold on plt.scatter(X[:10,0], X[:10,1])


plot(x(1:10,1), x(1:10,2), ... plt.scatter(X[10:17,0], X[10:17,1])
'.r', 'MarkerSize', 30) plt.scatter(X[17:,0], X[17:,1])
plot(x(11:17,1), x(11:17,2), ... plt.scatter(
'.g', 'MarkerSize', 30) fuzzy_kmeans.cluster_centers_.data_matrix[:,0],
plot(x(18:end,1), x(18:end,2), ... fuzzy_kmeans.cluster_centers_.data_matrix[:,1],
'.b', 'MarkerSize', 30) color='k', marker='+', s=200)
plot(C_fcm(:,1), C_fcm(:,2), ...
'+k', 'MarkerSize', 20) plt.scatter(
scatter(C_kmeans(:,1), C_kmeans(:,2), ... kmeans.cluster_centers_.data_matrix[:,0],
150, 'k', 'square', 'filled') kmeans.cluster_centers_.data_matrix[:,1],
color='k', marker='s', s=100)

legend('Klasa 1', 'Klasa 2', ... plt.legend(('Klasa 1', 'Klasa 2', 'Klasa 3',
'Klasa 3', 'cMeans', 'kMeans') 'cMeans', 'kMeans'))
hold off

286
Obie procedury grupowania stosują tę samą liczbę centrów równą trzy. W wyniku działania
programu uzyskano następujące położenia centrów (w każdej realizacji procesu wyniki mogą
być nieco inne):
• Algorytm c-means
C =
1.9788 1.9758
-1.1723 -0.8569
0.5621 0.5910

• Algorytm K-means
C_kmeans =
2.0036 1.8457
-1.1945 -0.8534
0.4772 0.5189

a)
Rys. 12.9 Przykładowe dane losowe z oraz centra reprezentujące rozmytą c-means oraz
reprezentację ostrą K-means w a) Matlabie i b) Pythonie

Jak widać na rysunku 12.9 różnice w położeniach centrów są stosunkowo niewielkie.


Algorytm K-means przypisuje poszczególne dane do klastrów (1, 2 lub 3) w sposób ostry.
Wynik tego przypisania zawarty jest w wektorze IDX, który w tym przypadku przyjął formę
IDX =
1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3

W przypadku algorytmu c-means każdy wektor danych jest przypisany do każdego klastra ale
z różnym współczynnikiem przynależności. Szczegółowe wyniki zawarte są w macierzy U
U=
0.9065 0.0200 0.0735
0.9723 0.0056 0.0221
0.9920 0.0014 0.0066
0.9712 0.0056 0.0232
0.9956 0.0007 0.0036
0.7306 0.0391 0.2303

287
0.6312 0.0606 0.3082
0.0058 0.9759 0.0184
0.0011 0.9948 0.0041
0.0206 0.8976 0.0818
0.0003 0.9989 0.0009
0.0028 0.9871 0.0101
0.0049 0.9793 0.0158
0.0021 0.9909 0.0070
0.0346 0.0195 0.9458
0.0813 0.1335 0.7853
0.0827 0.2532 0.6641
0.0343 0.0284 0.9373
0.0353 0.0292 0.9355
0.0067 0.0039 0.9894
0.0339 0.0185 0.9475

Przynależność rozmytą można zastąpić ostrą przypisując wektor do klastra o największej


wartości współczynnika przynależności. Łatwo sprawdzić, że w takim przypadku oba wyniki:
K-means i c-means są sobie równoważne.
Zauważmy, że niezależnie od sposobu rozwiązania algorytmu uczenia
samoorganizacja rozmyta dokonuje segmentacji rozmytej danych przypisując je do różnych
centrów ze zróżnicowanym współczynnikiem przynależności, zmieniającym się od zera do
jedności. Oznacza to, że wektor x jest reprezentowany przez wiele centrów, przy czym wpływ
danego centrum na wartość tego wektora jest zróżnicowany i uzależniony od współczynnika
przynależności.
Załóżmy, że wektor xj jest reprezentowany przez M centrów ci (i=1, 2, ..., M), przy
czym przynależność wektora do każdego centrum jest określona współczynnikiem
przynależności μij można zrekonstruować wektor oryginalny xj według wzoru
M
x j =  ij ci (12.40)
i =1

Widoczne jest, że wpływ każdego centrum na końcową wartość zrekonstruowanego


wektora jest zróżnicowany i uzależniony od odległości oryginalnego wektora x od danego
centrum. Jest to istotne odróżnienie samoorganizacji rozmytej od samoorganizacji klasycznej
K-means, gdzie rekonstrukcja wektora odbywała się wyłącznie na podstawie jednego
centrum, najbliższego danemu wektorowi poprzez zwykłe przypisanie mu wartości tego
centrum.

288
Rys. 12.9 Porównanie odwzorowania danych jednowymiarowych funkcji sinus przez
a) reprezentację rozmytą c-means, b) reprezentację ostrą K-means

Najbardziej jaskrawo widać te różnice w reprezentacji danych prostej funkcji


jednowymiarowej, na przykład funkcji sinus. Na rys. 12.9 przedstawiono aproksymację tej
funkcji przy zastosowaniu 20 centrów rozmytych uzyskanych metodą c-means i metodą K-
means [55]. Rys. 12.9a odpowiada reprezentacji rozmytej a rys. 12.9b – algorytmowi K-
means. Jak widać klasyczne rozwiązanie K-means realizuje aproksymację odcinkami stałą, a
rozmyte - za pomocą funkcji odcinkowo nieliniowych. Różnice w poziomie błędów
odwzorowania są średnio co najmniej 2.5 - krotne.
Niezależnie od rodzaju zastosowanego algorytmu rozmytego jego wynikiem jest
stopień przynależności badanego wektora x do wszystkich klastrów. Jeśli w badanym
przypadku istnieje potrzeba ostrego przypisania do jednego konkretnego klastra, wówczas
można to uczynić biorąc pod uwagę maksymalną wartość współczynnika przynależności.

12.7 Miary jakości grupowania danych


Po wykonaniu segmentacji obszaru otrzymuje się K grup danych, każda zawierająca wektory
x charakteryzujące się pewnym stopniem podobieństwa uwzględnianym na etapie uczenia. W
dalszych rozważaniach zakładać będziemy ostry sposób przypisania wektora x do klasy, co

289
oznacza, że przy zastosowaniu metod rozmytych grupowania każdy wektor x jest przypisany
jednoznacznie do klasy o najwyższym współczynniku przynależności.
Niezależnie od zastosowanego algorytmu grupowania pozostaje problem oceny
uzyskanego wyniku. Aby tego dokonać należy zdefiniować pewne miary jakości klastrów.
Można tu wyróżnić miary uwzględniające zwartość każdego pojedynczego klastra oraz miary
separacji między klastrami. Miary te będą różne dla danych nie posiadających z góry
przypisania do żadnej klasy oraz danych, z których każda reprezentuje z góry określoną
przynależność do klasy.

12.7.1 Miary jakości grupowania danych nie przypisanych do klas


Tego typu zadanie jest typowe przy analizie rozkładu danych pomiarowych zgrupowanych w
formie wektorów x, reprezentujących pewien proces, bez informacji dotyczącej
przynależności do określonej klasy [82]. Wnioski co do podziału na klasy będą dopiero
wyciągane na podstawie analizy rozkładu klastrów, na przykład poprzez przypisanie każdemu
klastrowi jednej klasy.
Miary jakości można zastosować do każdego klastra oddzielnie lub do pełnego
podziału przestrzeni na klastry. Miara zwartości pojedynczego klastra może być zdefiniowana
na podstawie rozproszenia danych, czyli odległości między wektorami tworzącymi klaster
lub odległości wektorów x od centrum c klastra. Można przy tym zastosować różne metryki.
Najczęściej używana jest metryka euklidesowa i jej używać będziemy w definicjach miar
odległości. Odpowiednie definicje, przy oznaczeniu odległości między wektorami w postaci
d(x,y), przyjmowane są w sposób następujący [82].
• Miara rozproszenia klastra definiowana na podstawie odległości d(x,y) między
wektorami tworzącymi klaster
1 (ci ) =  d (x, y) (12.41)
xci
yci

• Miara rozproszenia klastra na podstawie odległości wektorów od centrum


 2 (ci ) =  d (x, ci ) (12.42)
xci

Mała wartość miary rozproszenia świadczy o dużym skupieniu wektorów tworzących klaster,
duża wartość tej miary świadczy o rozproszeniu danych.
Miary definiujące separację między klastrami można zdefiniować również na kilka
sposobów, uwzględniając bądź odległości między poszczególnymi wektorami tworzącymi
klastry bądź odległości między centrami klastrów [58.82].

290
• Miara separacji między klastrami reprezentowanymi przez centra na podstawie
rozkładu wektorów x w obu klastrach

s1 (ci , c j ) =  d 2 (x, y ) (12.43)


xci
yc j

• Miara separacji między klastrami na podstawie odległości między centrami


s2 (ci , c j ) = d (ci , c j ) (12.44)

Na podstawie miar dotyczących pojedynczych klastrów można określić miary jakości


segmentacji całej przestrzeni danych, dotyczące rozproszenia i separacji międzyklastrowej,
uśrednione po wszystkich klastrach. Mała wartość miary rozproszenia klastrów świadczy o
dużej powtarzalności danych w poszczególnych klastrach. Duża wartość miary separacji
między-klastrowej jest dowodem dużych odległości między poszczególnymi klastrami. W
praktyce pożądane są zwykle małe wartości rozproszenia oraz duże wartości miary separacji
tworzące podstawę pełnego rozdzielenia klastrów.
Spośród przedstawionych tu miar najczęściej stosowane są miary definiowane
względem centrum klastra. Są one łatwe do wyznaczenia i wymagają stosunkowo małej ilości
operacji matematycznych. W przypadku klasycznego algorytmu K-means największą wartość
użytkową ma miara rozproszeniowa r(σ2), definiowana jako sumaryczny błąd kwantyzacji
wektorowej, która przepiszemy tu w postaci [82]
K
Eq =  d 2 (x, ci ) (12.45)
i =1 xci

Na tej podstawie definiuje się znormalizowany błąd kwantyzacji definiujący średni błąd
kwantyzacji przypadający na jedną daną. Przy n danych biorących udział w grupowaniu
definiuje się go w postaci
1 K
eq =   d 2 (x, ci ) (12.46)
n i=1 xci
Mniejszy błąd jednostkowy kwantyzacji świadczy o małym rozproszeniu danych we
wszystkich klastrach (dane są położone bardzo blisko swoich centrów).
Istotnym problemem w grupowaniu danych jest ustalenie liczby klastrów na które
dzielona będzie przestrzeń danych. W przypadku danych dwu lub trzy-wymiarowych często
możliwa jest prosta ocena wzrokowa naturalnego rozkładu danych i na tej podstawie
estymacja liczby grup danych. W przypadku danych wielowymiarowych nie można ocenić
wzrokowo rozkładu danych i konieczne jest zastosowanie metody systematycznej opartej na
miarach numerycznych. Prostym rozwiązaniem może być wykorzystanie błędu kwantyzacji

291
dla różnej liczby klastrów K=1, 2, …, M. Dla każdej przyjętej liczby klastrów oblicza się błąd
kwantyzacji i wykreśla się jego wartość w funkcji K. Typowy przebieg takiego wykresu
przedstawia rys. 12.10.

Rys. 12.10. Typowy wykres błędu kwantyzacji wektorowej w funkcji liczby klastrów

Dla małej liczby klastrów każde zwiększenie ich liczebności w sposób istotny zmniejsza
wartość błędu. Przy pewnej liczbie (na rysunku jest to K=4 ) następuje wyraźne
ustabilizowanie się wartości błędu. Wartość K przy której następuje to zjawisko można uznać
za właściwą liczbę klastrów. Należy przy tym pamiętać, że metoda ta jest jedynie pewnym
przybliżeniem heurystycznym rozwiązania optymalnego, które nie zawsze jest możliwe do
zastosowania (w wielu przypadkach nie ma widocznego nasycania się krzywej błędu).

12.7.2 Miary jakości grupowania danych przypisanych do klas


W przypadku znajomości klas do których należą wektory x, celem grupowania jest zwykle
zbadanie relacji zachodzących między klastrami danych na jakie algorytm dzieli zbiór
wektorów x a etykietami klas przypisanych wektorom x w poszczególnych klastrach. W
odróżnieniu od poprzedniego przypadku, gdzie dysponowaliśmy jedynie zbiorem wektorów
x, tym razem mamy zbiór par (x, d) gdzie d oznacza etykietę klasy.
Definiując miary jakości grupowania w tym przypadku można brać pod uwagę
zdolność przewidywania klasy na podstawie rozkładu danych w klastrach (zadanie
klasyfikacji), bądź badać stopień podobieństwa wektorów x w klastrach (zadanie analizy
danych). W praktyce definiuje się różne miary jakości oparte na entropii, stopniu czystości
(jednorodności) klastra, precyzji czy ich pochodnych [82].

292
Na podstawie składu wektorów x w klastrze i ich przynależności do klas wyznacza się
wartości pij, estymujące wartości przynależności elementów j-tej klasy (j=1, 2, …, M) w i-tym
klastrze (i=1, 2, …, K) w postaci
nij
pij = (12.47)
ni
We wzorze tym nij oznacza liczbę elementów j-tej klasy wchodzących w skład i-tego klastra,
natomiast ni oznacza liczbę elementów i-tego klastra. Na tej podstawie można zdefiniować
różne wskaźniki jakości grupowania danych przypisanych do klasy.
• Precyzja klasowa klastra
Miara ta bazuje bezpośrednio na wartości pij. Oznacza prawdopodobieństwo sklasyfikowania
i-tego klastra jako reprezentanta j-tej klasy i jest dana wzorem
pr(i, j) = pij (12.52)

Im większa wartość miary pr(i,j) tym większe prawdopodobieństwo zaliczenia i-tego klastra
jako reprezentanta j-tej klasy.

• Entropia
Miara entropijna określa w jakim stopniu klaster składa się z elementów należących do jednej
klasy. Entropia klastra i-tego jest wówczas zdefiniowana zależnością

ei = −  pij log 2 pij


M

j =1
(12.48)

Mała, bliska zeru wartość stopnia przynależności różnych klas przy dominacji jednej,
świadczy o jednorodnym składzie klastra, dając małą wypadkową wartość entropii dla całego
klastra.
Całkowita entropia zbioru K klastrów jest sumą wagową entropii wszystkich klastrów,
z wagą uwzględniającą wielkość klastra. Przy oznaczeniu przez n liczby wszystkich
wektorów x miara entropijna zbioru danych określona jest wzorem
K ni
e= ei (12.49)
i =1 n

Mała wartość entropii całkowitej e oznacza dużą jednorodność danych we wszystkich


klastrach (duża przewaga danych należących do pojedynczej klasy we wszystkich klastrach).
Im większa wartość miary entropijnej tym większe przemieszanie klas w kolejnych klastrach.
• Jednorodność klasowa klastra
Miara ta charakteryzuje bezpośrednio stopień jednorodności klasy dominującej w klastrze. W
przypadku pojedynczego i-tego klastra miarę tę przyjmuje się w postaci

293
pi = max pij (12.50)
j

Dla zbioru K klastrów miara ta jest zdefiniowana jako suma wagowa miar wszystkich
klastrów
K ni
p= pi (12.51)
i =1 n

Im większa jest wartość p tym bardziej jednorodny jest skład poszczególnych klastrów.

• Miara odtworzeniowa j-tej klasy w pojedynczym klastrze


Miara odtworzeniowa (ang. Recall) precyzuje proporcję obiektów j-tej klasy w i-tym klastrze,
mierzoną w stosunku do wszystkich reprezentantów danej klasy w zbiorze danych. Jest
zdefiniowana wzorem
nij
r (i , j ) = (12.53)
Ni
We wzorze tym Ni oznacza liczebność elementów j-tej klasy w zbiorze danych, a nij liczbę
elementów j-tej klasy w i-tym klastrze.
• Miara F dla pojedynczego klastra
Miara ta stanowi kombinację precyzji klasowej i zdolności odtworzeniowej j-tej klasy przez
pojedynczy klaster. Mierzy stopień w jakim klaster składa się z elementów jednej klasy i
jednocześnie w jakim stopniu jest reprezentatywny dla elementów tej klasy. Jest ona
zdefiniowana wzorem
pr (i, j )  r (i, j )
F (i, j ) = (12.54)
0.5 ( pr (i, j ) + r (i, j ) )

Z przedstawionych tu miar tylko dwie pierwsze (entropia i stopień jednorodności) odnoszą


się do zbioru wszystkich klastrów. Pozostałe definiowane są dla pojedynczych klastrów i klas.
Miary jakości klastrów przedstawione dotychczas bazowały na odległościach. Inną
grupę współczynników stanowią miary oparte na zależnościach korelacyjnych. Najbardziej
reprezentatywna jest korelacja między przynależnością danych w klastrze do odpowiedniej
przynależności klasowej. Jeśli wszystkie pary wektorów x należą do tej samej klasy w
klastrze, to taką sytuację uważa się za idealną. Wprowadźmy następujące oznaczenia:
f11 – liczba par danych przynależnych jednocześnie do tego samego klastra i tej samej klasy
f00 – liczba par danych przynależnych jednocześnie do różnych klastrów i różnych klas
f01 – liczba par danych przynależnych jednocześnie do tego samego klastra ale różnych klas
f10 – liczba par danych przynależnych do różnych klastrów ale tej samej klasy

294
Przy liczebności n wektorów x liczba takich kombinacji par po 2 jest równa m=n(n-1)/2.
Jako przykład rozpatrzmy zbiór n=5 rekordów danych oznaczonych jako X1, X2, X3,
X4, X5, których przynależność do 2 klastrów C1 i C2 oraz 2 klas K1 i K2 podane są w
tabelach 12.4 i 12.5. Przynależność danych do klastrów: C1={X1,X2,X3}, C2={X4,X5} i
przynależność do klas: K1={X1,X2}, K2={X3,X4,X5}.

Tabela 12.4 Rozkład przynależności danych do klastrów C1 i C2


Dane X1 X2 X3 X4 X5
X1 1 1 1 0 0
X2 1 1 1 0 0
X3 1 1 1 0 0
X4 0 0 0 1 1
X5 0 0 0 1 1

Tabela 12.5 Rozkład przynależności danych do klas K1 i K2


Dane X1 X2 X3 X4 X5
X1 1 1 0 0 0
X2 1 1 0 0 0
X3 0 0 1 1 1
X4 0 0 1 1 1
X5 0 0 1 1 1

Należy rozpatrzyć jednoczesną przynależność do klastrów i klas wszystkich możliwych


kombinacji par danych pod kątem określenia parametrów f11, f00, f01, f10. Wielkości te dla
wszystkich kombinacji par danych pokazane są w tabeli 12.6.

Tabela 12.6 Tabela tworzenia przynależności do klastrów i klas dla danych z przykladu
Pary f11 f00 f01 f10
danych
X1−X2 +
X1−X3 +
X1−X4 +
X1−X5 +

295
X2−X3 +
X2−X4 +
X2−X5 +
X3−X4 +
X3−X5 +
X4−X5 +
Suma 2 4 2 2

Dla przyjętych oznaczeń parametrów f11, f00, f01, f10 definiuje się dwa rodzaje
współczynników: współczynnik R uwzględniający wszystkie parametry oraz miarę Jaccarda
wykluczającą parametr f00 [82]
• Współczynnik R
f 00 + f11
R= (12.55)
f 00 + f 01 + f10 + f11

• Miara Jaccarda
f11
J= (12.56)
f01 + f10 + f11
Wartości obu współczynników zmieniają się od zera do jedności. Wartość równa jeden jest
przypadkiem idealnym, gdy istnieje pełna zgodność przynależności do klas i klastrów. W
przypadku rozpatrywanym w przykładzie otrzymuje się następujące wartości tych
współczynników
f00 + f11 4+2
R= = = 0.6
f00 + f01 + f10 + f11 4 + 2 + 2 + 2
f11 2
J= = = 0.33
f01 + f10 + f11 2 + 2 + 2

296

You might also like