Charakterystyka podejść do grupowania danych

Z racji istnienia ogromnej liczby metod grupowania oraz ich różnorodności nie jest możliwe zaproponowanie jednego sposobu podziału tych metod. Tak na przykład w [Jain1998] zaproponowano podział metod grupowania na cztery grupy:

  1. sekwencyjne
  2. hierarchiczne
  3. bazujące na optymalizacji funkcji kryterialnej (kosztu grupowania)
  4. pozostałe, nie dające się zaklasyfikować do żadnej z wcześniejszych

Algorytmy sekwencyjne charakteryzują się tym, że liczba grup na którą dokonywany jest podział nie jest z góry ustalana a są one tworzone na bieżąco podczas wykonywania algorytmu, w oparciu o pewien próg niepodobieństwa. Możliwe jest jednak ustalenie maksymalnej liczby grup, której algorytm nie przekracza. Poza tym metody te charakteryzuje szybkość, gdyż każdy z wektorów uczących podawany jest na ogół jednokrotnie. Jednak istotną wadą tych metod jest fakt, że uzyskany podział nie jest zdeterminowany i zależy od kolejności podawania wektorów zbioru uczącego. Podstawowy sekwencyjny algorytm grupowania każdy z podawanych wektorów przydziela do już istniejącej grupy, bądź tworzy nową, w zależności od jego odległości od prototypów grup, przykładowo środków, już istniejących. Metody hierarchiczne charakteryzują się tym, że wynikiem ich działania nie jest jeden konkretny podział, lecz cała ich hierarchia ilustrowana dendrogramem. Algorytmy bazujące na optymalizacji funkcji kryterialnej, dla zidentyfikowania optymalnego podziału iteracyjnie minimalizują pewną funkcję kryterialną. W metodach tych liczba poszukiwanych grup zadawana jest z góry. Według [Stapor2005] rozpatrywać można również podział zgodnie z którym zasadniczo wyróżniamy tylko dwie grupy algorytmów: hierarchicznych i podziałowych. Do drugiej grupy należą tutaj metody, w efekcie których otrzymujemy na końcu jeden konkretny podział. Algorytmy podziałowe dzielimy dalej na:

  1. metody optymalizacji funkcji kryterialnej
  2. grafowe
  3. wykorzystujące model statystyczny
  4. gęstościowe

Metody hierarchiczne

Wspólną cechą tych metod jest fakt, że w wyniku ich działania otrzymujemy całą hierarchię podziałów. Mając dany podział na ustalonym poziomie, uzyskany na kolejnym różni się w stosunku do niego tym, że dokładnie dwie grupy zostały połączone w jedną większą, lub dokładnie jedna grupa została rozdzielona na dwie mniejsze. Hierarchię podziałów, która spełnia na każdym poziomie przytoczoną własność, nazywamy podziałami zagnieżdżonymi. Zasadniczo, w zależności od sposobu konstrukcji zagnieżdżonych podziałów wyróżniamy dwa typy algorytmów hierarchicznych: aglomeracyjne i algorytmy podziału. W przypadku algorytmów aglomeracyjnych podział początkowy, stanowi \(N\) grup, z których każdą tworzy dokładnie jeden obiekt zboru uczącego. Kolejne podziały tworzone są poprzez połączenie dwóch grup w podziale otrzymanym w kroku poprzednim, w efekcie jako ostatni otrzymując podział, w którym cały zbiór uczący jest jedyną grupą. Każdy krok algorytmu polega na połączeniu dwóch grup do siebie najbardziej podobnych lub alternatywnie najmniej niepodobnych, zgodnie z przyjętą miarą podobieństwa. W przypadku algorytmów aglomeracyjnych mówimy, że hierarchia podziałów tworzona jest od dołu do góry. Natomiast hierarchiczne algorytmy podziału tworzą hierarchię w schemacie od góry do dołu, to znaczy rozpoczynając od grupy składającej się ze wszystkich obiektów zbioru uczącego, kończąc na podziale na N grup, w którym każdą grupę tworzy dokładnie jeden obiekt. W tym przypadku każdy krok polega na podzieleniu jednej z grup otrzymanego w kroku poprzednim podziału, na dwie mniejsze. Te metody są jednak znacznie rzadziej stosowane ze względu na większą niż aglomeracyjnych złożoność obliczeniową. Sposób określania podobieństwa międzygrupowego algorytmu hierarchicznego jest czynnikiem, który w decydujący sposób wpływa na rezultaty grupowania hierarchicznego i prowadzi w efekcie do różnych algorytmów [Jain1998]. Wśród najczęściej spotykanych metod określania miary podobieństwa międzygrupowego wyróżniamy:

  1. Metoda najbliższego sąsiada (ang. single link algorithm )

    \[{{D}_{\min }}({{C}_{i}},{{C}_{j}})=\underset{x\in {{C}_{i}},y\in {{C}_{j}}}{\mathop{\rm min}}\,{{d}^{2}}\left( x,y \right)\]
  2. Metoda najdalszego sąsiada (emph{ang. complete link algorithm})

    \[{{D}_{\max }}({{C}_{i}},{{C}_{j}})=\underset{x\in {{C}_{i}},y\in {{C}_{j}}}{\mathop{\rm max}}\,{{d}^{2}}\left( x,y \right)\]
  3. Metoda średniej odległości międzygrupowej (ang. weighted pair group method average algorithm)

    \[{{D}_{avg}}({{C}_{i}},{{C}_{j}})=\frac{1}{{{n}_{i}}{{n}_{j}}}\sum\limits_{x\in {{C}_{i}}}{\sum\limits_{y\in {{C}_{j}}}{{{d}^{2}}\left( x,y \right)}}\text{, gdzie }{{n}_{i}}=\left| {{C}_{i}} \right|\]
  4. Metoda odległość między środkami grup (ang. unweighted pair group method centroid algorithm)

    \[{{D}_{mean}}({{C}_{i}},{{C}_{j}})={{d}^{2}}\left( {{c}_{i}},{{c}_{j}} \right)\text{, gdzie }{{c}_{i}}=\frac{1}{{{n}_{i}}}\sum\limits_{x\in {{C}_{i}}}{x}\]

W przypadku powyższych miar podobieństwa międzygrupowego, za najbardziej podobne uważamy te grupy \({{C}_{i}},{{C}_{j}}\), które spełniają warunek:

\[D\left( {{C}_{i}},{{C}_{j}} \right)=\underset{k,l:k\ne l}{\mathop{\rm min}}\,D\left( {{C}_{k}},{{C}_{l}} \right)\]

Miara podobieństwa najbliższego sąsiada powoduje generowanie grup o wydłużonych kształtach, zaś miara najdalszego sąsiada grup o kształtach maksymalnie zwartych, eliptycznych. Pozostałe metody mają pośrednie własności, to znaczy o kształcie grup decydują kształty obszarów, w których występuje maksymalne zagęszczenie próbek. W ten sposób na wynik grupowania nie mają wpływu pojedyncze próbki znajdujące się między obszarami skupień, co jest wadą metody najbliższego sąsiada, a zarazem nie występuje tendencja do tworzenia za wszelką cenę grup o zwartych kształtach, jak w metodzie sąsiada najdalszego. Wynik działania algorytmu hierarchicznego przedstawiamy na ogół za pomocą tak zwanego dendrogramu, to znaczy drzewa binarnego, którego liśćmi są klasyfikowane wektory, a każdy węzeł reprezentuje grupę, do której należą wszystkie wektory (liście) do których prowadzi droga z tego węzła. Dodatkowo długość gałęzi może oznaczać wartość podobieństwa międzygrupowego, a odcinając dendrogram na \(i\)-tym poziomie, licząc od korzenia włącznie, otrzymujemy podział na \(i\) grup. Przy zadanej liczbie grup, algorytm hierarchiczny można zmodyfikować w ten sposób, by nie tworzył całej hierarchii podziałów, a zatrzymywał się w określonym miejscu. Algorytm grupowania hierarchicznego w schemacie aglomeracyjnym przebiega według poniższego schematu:

Algorytm 18 Aglomeracyjny Algorytm Grupowania Hierarchicznego

Dane: macierz próbek \(X\)

Wyniki: sekwencja podziałów

  1.  \({C _k}: = \left\{ {{x_k}} \right\}\), dla \(k = 1,...,N\),  \(\textit{c:=N}\)
  2.  Znajdź 2 najbardziej do siebie podobne grupy \({C _i}\), \({C _j}\), za pomocą jednej z miar podobieństwa międzygrupowego.
  3.  Złącz grupy \({C _i}\), \({C _j}\) to znaczy:
  4.  \(\qquad {C _i}: = {C _i} \cup {C _j}\), \(\textit{i}<\textit{j}\)
  5.  \(\qquad\) Usuń \({C _j}\) (to znaczy: \(k:=k-1\), dla :math:k`>j`)
  6.  \(\qquad \textit{c:=c-}1\)
  7.  \(\textit{c>1}\) idź do \(2\).

Wadą algorytmów hierarchicznych jest ich złożoność obliczeniowa, wynikająca z potrzeby przeliczania miar podobieństwa międzygrupowego na każdym poziomie, dlatego rozwój tych metod grupowania idzie w kierunku przyspieszenia ich działania, tak by przy ich pomocy można było analizować bardzo duże zbiory danych. Stosowane tutaj są na ogół metody fragmentaryzacji zbioru polegające na podziale zbioru na pewna liczbę równolicznych podzbiorów, tak aby grupowanie każdego z nich odbywało się wystarczająco szybko. Następnie w każdym podzbiorze przy pomocy algorytmu grupowania wybieramy zbiór reprezentantów, które to później ponownie poddawane są grupowaniu. Zgodnie z tą koncepcją pozostałe elementy zbioru przydzielamy do grup w oparciu o najmniejszą odległość od reprezentanta. Zamiast fragmentaryzacji stosujemy również próbkowanie zbioru, wybierając pewien jego losowy podzbiór bądź podzbiory.

Przykład 19

W tym przykładzie ilustrujemy proces grupowania hierarchicznego. W tym celu generujemy zbiór danych złożony z 20 elementów. Elementy zbioru uczącego ilustrujemy w przestrzeni cech wykresem, na którym zauważyć możemy trzy odseparowane skupienia. Dokonujemy grupowania hierarchicznego z miarą najdalszego sąsiada podobieństwa międzygrupowego. Przebieg tego procesu ilustrujemy dendrogramem, który następnie odcinamy na poziomie 3 skupień uzyskując podział na trzy grupy. Uzyskany podział porównujemy z założonym przy pomocy macierz konfuzji. Poniższy skrypt języka Python realizuje ten schemat.

import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.datasets import make_classification
from scipy.cluster.hierarchy import fcluster
from sklearn.metrics import confusion_matrix
from numpy import array
import numpy as np

#Wygenerowanie zbioru danych na potrzeby klasyfikacji
mk_data=make_classification(n_samples=20, n_features=2, n_informative=2,
                         n_redundant=0, n_repeated=0, n_classes=3,
                         n_clusters_per_class=1, class_sep=2)
#dane uczące
data=mk_data[0]
#etykiety - na potrzeby wygenerowania macierzy konfuzji
labels=mk_data[1]

#macierz ilustrująca przebieg grupowania hierarchicznego
#single - miara najbliższego sąsiada dmin
#complete - miara najdalszego sasiada dmax
linkage_matrix = linkage(data, 'complete')
print 'Macierz grupowania hierarchicznego'
print linkage_matrix

#wykres ilustrujący dane w przestrzeni cech
plt.figure(1)
plt.title('Dane uczace')
plt.scatter(data[:,0],data[:,1], c=list(labels))
plt.show()

#Wygenerowanie dendrogramu
plt.figure(2)
plt.title("Dendrogram")
dendrogram(linkage_matrix)
plt.show()

#Odcięcie podziału na poziomie 3 grup
y = fcluster(linkage_matrix, 3, 'maxclust')
print 'Podział na trzy grupy'
print y

#Macierz konfuzji - porównanie uzyskanego podziału z etykietami
print confusion_matrix(labels,y-1)

Metody optymalizacji funkcji kryterialnej

Wspólną cechą algorytmów tej grupy jest poszukiwanie możliwie najlepszego podziału, minimalizując iteracyjnie pewną funkcję kryterialną. Funkcja kryterialna jest miernikiem jakości podziału zbioru, który pozwala spośród wszystkich możliwych wariantów podziału wybrać ten, który uznajemy za optymalny. Zwykle jest ona miarą dyspersji zbioru, na ogół ma postać sumy kwadratów odległości obiektów odpowiednich grup od prototypów je opisujących. Konstruowany podział zależy od przyjętej definicji podziału i w zależności od jej przyjęcia prowadzi do innego algorytmu grupowania. Pierwszą z możliwości jest przyjęcie definicji podziału twardego, która mówi o tym, że każdy obiekt musi należeć do dokładnie jednej grupy, ponadto żadna grupa nie może być pusta. Wynik działania algorytmu twardego grupowania, na \(K\) grup zwracany jest najczęściej w postaci tak zwanej macierzy podziału rozmiaru \(K\times N\), składającej się tylko z elementów równych 1 bądź 0, przy czym jedynka w \(i\)-tym wierszu i \(j\)-tej kolumnie oznacza, że obiekt \(x_j\) należy do klasy \(C_i\).

Definicja 33

Macierzą podziału (twardego) nazywamy macierz \(U\) o wymiarze \(K\times N\) o następujących własnościach

\[\begin{split}\underset{\begin{smallmatrix} 1\le i\le K \\ 1\le j\le N \end{smallmatrix}}{\mathop{\forall }}\,{{u}_{ik}}=\left\{ \begin{matrix} 0 & \text{gdy} & {{x}_{k}}\notin {{C }_{i}} \\ {} & {} & {} \\ 1 & \text{gdy} & {{x}_{k}}\in {{C }_{i}} \\ \end{matrix} \right.\end{split}\]
\[\underset{1\le J\le N}{\mathop{\forall }}\,\sum\limits_{i=1}^{K}{{{u}_{ik}}=1}\]
\[\begin{split}\underset{1\le i\le K}{\mathop{\forall }}\,0<\sum\limits_{j=1}^{N}{{{u}_{ik}}<N}\end{split}\]

Algorytmy optymalizacji funkcji kryterialnej rozpoczynają swoje działanie od pewnego, na przykład losowego, podziału (to znaczy losowej macierzy podziału) i iteracyjnie zmierzają do podziału optymalnego, względem funkcji kryterialnej. W przypadku poszukiwania podziału twardego na ogół stosujemy funkcję kryterialną postaci:

\[J(U,V)=\sum\limits_{i=1}^{K}{\sum\limits_{j=1}^{N}{{{u}_{ij}}{{d}^{2}}\left( {{x}_{j}},{{c}_{i}} \right)}}\]

gdzie symbolem \(d\left( {{x}_{j}},{{c}_{i}} \right)\) oznaczamy odległość obiektu \(x_j\) od grupy wyznaczonej przez prototyp \(c_i\), \(V\) jest zbiorem uczącym \(N\) elementowym, przez \(K\) oznaczamy liczbę grup w dokonywanym podziale, natomiast symbolem \(U\) oznaczamy macierz twardego podziału. Przyjęcie za miarę odległości między obiektem zbioru uczącego a prototypem grupy odległości euklidesowej, prowadzi do jednego z najbardziej popularnych algorytmów grupowania twardego opartego na minimalizacji powyższej funkcji, nazywanego algorytmem k-średnich (ang. k-means) [McQeen1967]. Algorytm przebiega według schematu zilustrowanego przez algorytm 18.

Algorytm 19 Algorytm k średnich

Dane: macierz próbek \(X\), liczba grup \(K\)

Wyniki: macierz podziału

  1. Inicjalizacja macierzy podziału \(U^{(0)}\)

  2. Wyznacz prototypy grup \(c_{1}^{(k)},c_{2}^{(k)},...,c_{K}^{(k)}\) na podstawie \(U^{(k)}\) według wzoru:

    \[\underset{1\le i\le K}{\mathop{\forall }}\,\quad {{c}_{i}}=\left[ \sum\limits_{j=1}^{N}{{{({{u}_{ij}})}^{m}}{{x}_{j}}} \right]/\left[ \sum\limits_{j=1}^{N}{{{({{u}_{ij}})}}} \right]\]
  3. Aktualizuj macierz podziału dla \((k+1)\) iteracji według wzoru:

    \[\begin{split}\underset{\begin{smallmatrix} 1\le i\le K \\ i\le k\le N \end{smallmatrix}}{\mathop{\forall }}\,{{u}_{ik}}=\left\{ \begin{matrix} 1, & \underset{1\le l\le K}{\mathop{\rm min}}\,\left\| {{x}_{k}}-c_{l}^{(j)} \right\|=\left\| {{x}_{k}}-c_{i}^{(j)} \right\| \\ 0, & \text{w pozostałych przypadkach}\\ \end{matrix} \right.\end{split}\]
  4. Jeżeli \({{U}^{(k+1)}}\ne {{U}^{(k)}}\), wtedy \(j:=j+1\) i idź do 2

Algorytm inicjujemy macierzą twardego podziału, zatem pewnym podziałem początkowym. Każda iteracja polega na wyznaczaniu prototypów każdej grupy i przyporządkowaniu każdej próbki do grupy wyznaczonej przez najbliższy prototyp. W ten sposób uzyskujemy nowy podział. Powyższy algorytm jest wykonywany tak długo, dopóki macierz podziału ulega zmianom. Jest on zbieżny do lokalnego minimum funkcji kryterialnej, zalecane jest dlatego jego wielokrotne wykonanie z różnymi macierzami inicjalizacji. Z racji powolnej zbieżności często stosujemy kryterium stopu w postaci ustalenia maksymalnej liczby iteracji. Inicjalizacji algorytmu dokonywać możemy równoważnie za pomocą prototypów grup, gdyż zbiór prototypów determinuje podział zbioru. Istnieje wiele modyfikacji algorytmu \(k\)-średnich, przykładowo algorytm \(k\)-medoids, w którym prototypem grupy jest zawsze jeden z obiektów zbioru uczącego, na przykład położony najbliżej środka grupy. Wśród algorytmów tego typu, możemy wyróżnić algorytm PAM Istotą działania algorytmów twardego grupowania jest jednoznaczne przydzielenie każdego z obiektów do jednej grupy, co w niektórych przypadkach okazuje się istotnym ograniczeniem. Tego typu problemy rozwiązuje się przyjmując alternatywne definicje podziału zbioru na grupy. Przykładami takich definicji są podziały wyznaczone przez rozmytą i posybilistyczną macierz podziału. W pierwszym przypadku element \(u_{ij}\), czyli element rozmytej macierzy podziału, możemy odczytywać jako prawdopodobieństwo z jakim element \(x_j\) należy do grupy \(C_i\). W drugim przypadku wartość \(u_{ij}\) oznacza unormowany stopień podobieństwa wektora \(x_j\) należy do grupy \(C_i\). Rozmytą macierz podziału definiujemy poniżej.

Definicja 34

Rozmytą macierzą podziału nazywamy macierz \(U\) o wymiarze \(K\times N\) o następujących własnościach

\[\begin{split}\underset{\begin{smallmatrix} 1\le i\le K \\ 1\le j\le N \end{smallmatrix}}{\mathop{\forall }}\,{{u}_{ij}}\in [0,1]\end{split}\]
\[\underset{1\le j\le N}{\mathop{\forall }}\,\sum\limits_{i=1}^{K}{{{u}_{ij}}=1}\]
\[\begin{split}\underset{1\le i\le K}{\mathop{\forall }}\,0<\sum\limits_{j=1}^{N}{{{u}_{ij}}<N}.\end{split}\]

W przypadku przyjęcia definicji podziału rozmytego zbioru dla algorytmów optymalizacji funkcji kryterialnej stosujemy najczęściej funkcję postaci:

\[{{J}_{q}}(U,V)=\sum\limits_{i=1}^{K}{\sum\limits_{j=1}^{N}{u_{ij}^{q}{{d}^{2}}\left( {{x}_{j}},{{c}_{i}} \right)}}\]

gdzie \(U\) oznacza rozmytą macierz podziału, \(q\ge 1\) określa stopień rozmycia grup. Za wartość parametru \(q\) przyjmujemy na ogół 2. Przyjęcie wspomnianej funkcji i miary odległości

\[d_{A}^{2}\left( {{x}_{j}},{{c}_{k}} \right)={{\left( {{x}_{j}}-{{c}_{k}} \right)}^{T}}A\left( {{x}_{j}}-{{c}_{k}} \right),\]

gdzie \(A\) jest dodatnio określoną macierzą symetryczną (może być jednostkowa - wtedy mamy odległość euklidesową) skutkuje jednym z najczęściej stosowanych algorytmów grupowania, znanym pod nazwą FCM (ang. Fuzzy C-Means) [Bezdek1981]. Schemat działania tej metody ilustruje algorytm 19.

Algorytm 20 Algorytm grupowania rozmytego FCM

Dane: macierz próbek \(X\), liczba grup \(K\)

Wyniki: macierz podziału

  1. Ustal \(\varepsilon >0\), \(q\ge 1\) i niech \(k:=1\)

  2. Inicjalizacja macierzy podziału \(U^{(0)}\)

  3. Wyznacz prototypy grup \(c_{1}^{(k)},c_{2}^{(k)},...,c_{K}^{(k)}\) na podstawie \(U^{(k)}\) według wzoru:

    \[\underset{1\le i\le K}{\mathop{\forall }}\,\quad {{c}_{i}}=\left[ \sum\limits_{j=1}^{N}{{{({{u}_{ij}})}^{m}}{{x}_{j}}} \right]/\left[ \sum\limits_{j=1}^{N}{{{({{u}_{ij}})}^{q}}} \right]\]
  4. Aktualizuj macierz podziału dla \((k+1)\) iteracji według wzoru:

    \[\begin{split}\underset{\begin{smallmatrix} 1\le i\le K \\ 1\le j\le N \end{smallmatrix}}{\mathop{\forall }}\,\quad {{u}_{ij}}=\left\{ \begin{align} & \underset{i\in \overset{\tilde{\ }}{\mathop{{{I}_{j}}}}\,}{\mathop{\forall }}\,\quad 0\quad \sum\limits_{i\in {{I}_{j}}}{{{u}_{ij}}=1\quad \quad \quad \quad {{I}_{j}}\ne \varnothing } \\ & {{\left( \frac{1}{{{d}_{A}}\left( {{x}_{j}},{{c}_{i}} \right)} \right)}^{\frac{2}{m-1}}}/\left[ \sum\limits_{l=1}^{K}{{{\left( \frac{1}{{{d}_{A}}\left( {{x}_{j}},{{c}_{l}} \right)} \right)}^{\frac{2}{m-1}}}} \right]\quad {{I}_{j}}=\varnothing \\ \end{align} \right.,\end{split}\]

    gdzie

    \[\begin{split}\underset{1\le j\le N}{\mathop{\forall }}\,\left\{ \begin{matrix} {{I}_{j}}=\{i|1\le i\le K\text{ gdy }{{d}_{A}}\left( {{x}_{j}},{{c}_{i}} \right)=0\}, \\ \overset{\tilde{\ }}{\mathop{{{I}_{j}}}}\,=\{1,2,...,K\}\backslash {{I}_{j}} \\ \end{matrix} \right.\end{split}\]
  5. Jeżeli \(||{{U}^{(k+1)}}-{{U}^{(k)}}||\ge \varepsilon\), wtedy \(j:=j+1\) i idź do 3

Pokazano, że algorytm ten jest zbieżny do lokalnego minimum funkcji kryterialnej lub do punktu siodłowego. W związku z tym, algorytm jest zatrzymywany, gdy podział wyznaczony przez rozmytą macierz podziału się ustabilizuje, dlatego kryterium stopu algorytmu dotyczy odpowiedniej normy różnicy macierzy podziału w dwóch iteracjach i może być określone wzorem:

\[||{{U}^{(k+1)}}-{{U}^{(k)}}||=\sum\limits_{i=1}^{K}{\sum\limits_{j=1}^{N}{{{\left( u_{ij}^{\left( k+1 \right)}-u_{ij}^{\left( k \right)} \right)}^{2}}}}\]

Omówione procedury grupowania podziałowego pozwalają na poprawną identyfikację grup, gdy mają one w przybliżeniu podobny kształt i rozmiar, prowadzą ponadto do utworzenia grup o zwartym eliptycznym kształcie, co bierze się z przyjętej miary odległości oraz z faktu, że grupa reprezentowana jest przez jeden prototyp (środek, medoid itp.). Znanych jest wiele modyfikacji i rozszerzeń algorytmu grupowania rozmytego FCM, na przykład algorytm Gustafssona Kessela [Gustafsson1979], o którym wspominamy ze względu na fakt, że zastosowana w nim dla każdej grupy osobno miara odległości obiektu od prototypu grupy pozwala na kreowanie grup o kształcie wydłużonym, na przykład liniowym, nie tylko w przybliżeniu eliptycznym. Ta miara odległości ważona jest macierzą kowariancji i-tej grupy i przedstawia się następująco:

\[d_{GK}^{2}\left( {{x}_{j}},{{c}_{k}} \right)=\frac{1}{\left| \Sigma _{i}^{{}} \right|}{{\left( {{x}_{j}}-{{c}_{k}} \right)}^{T}}\Sigma _{i}^{-1}\left( {{x}_{j}}-{{c}_{k}} \right)\]

W przypadku stosowania algorytmów rozmytych, w efekcie działania których nie otrzymujemy twardej macierzy podziału, jednoznacznie każdy obiekt zaklasyfikować można do grupy, w której prawdopodobieństwo jego klasyfikacji jest największe. W przypadku stosowania algorytmów rozmytych, proces w oparciu o który daną rozmytą macierz podziału przekształcamy w macierz podziału twardego, uzyskując jednoznaczny podział zbioru uczącego na grupy, nazywamy wyostrzaniem.

Przykład 20

W tym przykładzie ilustrujemy proces grupowania za pomocą algorytmu k-średnich. Grupowanie przeprowadzimy na zbiorze iris. Wiemy, że zbiór danych zawiera wektory cech 150 kwiatów irysa występującego w trzech odmianach, ustalamy więc liczbę grup na poziomie 3. Efekt grupowanie ilustrujemy na wykresie 3D i porónujemy uzyskany podział ze znaną przynależnością klasową elementów tego zbioru. Poniższy skrypt języka Python realizuje omawiany schemat.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
from sklearn import datasets
from sklearn.metrics import confusion_matrix

#wczytanie zbioru iris
iris = datasets.load_iris()
#macierz danych oraz znane etykiety klasowe
Data = iris.data
Classes = iris.target

#parametr algorytmu kMeans - podział na 3 grupy
kmeans=KMeans(n_clusters=3)

#uczenie algorytmu kMeans
kmeans.fit(Data)

#uzyskany podział
print 'Uzyskane etykiety podzialu dla zbioru iris:'
podzial=kmeans.labels_
print podzial

#ilustracja zbioru danych na wykresie 3d (trzy pierwsze atrybuty)
fig = plt.figure(1)
wykr = Axes3D(fig)
wykr.scatter(Data[:, 0], Data[:, 1], Data[:, 2], c=podzial.astype(np.float))
plt.show()

#Macierz konfuzji - porównanie uzyskanego podziału z etykietami
print confusion_matrix(podzial,Classes)

Algorytmy oparte na dopasowaniu modelu statystycznego

Metody grupowania bazujące na dopasowaniu modelu statystycznego zakładają, że zbiór obiektów uczących, a zatem również grupy, które możemy w tym zbiorze zidentyfikować, opisywane są przez pewien model statystyczny. Jest on najczęściej kombinacją rozkładów o znanej postaci parametrycznej. Zakładamy, że każdy obiekt zbioru uczącego jest elementem dokładnie jednej grupy, powiedzmy \(i\)-tej, rozkład elementów tej grupy opisany jest pewnym znanym rozkładem wyrażonym funkcją gęstości \(f\left( x|{{\theta }_{i}} \right)\), gdzie \({{\theta }_{i}}\) jest wektorem parametrów tego rozkładu. Oznaczając dodatkowo symbolem \(p_i\) prawdopodobieństwo wystąpienia elementu należącego do \(i\)-tej grupy, łączny rozkład wektorów zbioru uczącego \(V\) opisujemy funkcją gęstości postaci:

\[f\left( x|\Theta \right)=\sum\limits_{i=1}^{K}{f\left( x|{{\theta }_{i}} \right){{p}_{i}}},\text{ gdzie }\Theta =\left\{ {{\theta }_{1}},...,{{\theta }_{K}},{{p}_{1}},...{{p}_{K}} \right\}\]

Składniki \(f\left( x|{{\theta }_{i}} \right)\) powyższego równania nazywamy komponentami modelu, natomiast wektor \(\Theta\) wektorem paramentów tego modelu. Na ogół przyjmujemy komponenty modelu w postaci wielowymiarowych rozkładów normalnych, natomiast wektor parametrów estymujemy metodą największej wiarygodności. W ogólnym przypadku, przy założeniu dowolnego rozkładu, nie zawsze funkcję wiarygodności można wyrazić w sposób jawny, dlatego stosujemy metody iteracyjne obliczania wartości oczekiwanych funkcji wiarygodności i jej maksymalizacji, w skrócie EM od angielskiego Expectation-Maximization. Algorytm EM rozpoczyna działanie od zainicjalizowania wektora parametrów modelu \(\Theta\), po którym następuje tak zwany etap \(E\), polegający na obliczeniu warunkowej wartości oczekiwanej logarytmu funkcji wiarygodności względem brakujących przynależności klasowych próbek. Kolejnym etapem jest etap \(M\), polegający na obliczeniu nowego wektora parametrów dla \(k\)-tej iteracji, maksymalizującego warunkową wartość oczekiwaną logarytmu funkcji wiarygodności. Etapy \(E\) oraz \(M\) są iteracyjnie powtarzane do osiągnięcia warunku stopu, którym jest na ogół pewien próg różnicy warunkowych wartości oczekiwanych logarytmu funkcji wiarygodności w sąsiednich iteracjach. Po osiągnięciu warunku stopu algorytm ostatecznie przydziela wektory zbioru uczącego do grup, dla której warunkowa wartość oczekiwana logarytmu funkcji wiarygodności jest największa spośród wszystkich opisywanych przez komponenty modelu.

Następna część - Walidacja uczenia nienadzorowanego