PDF pagePrint page

Kolejnym z zadań uczenia maszynowego jest klasteryzacja lub inaczej grupowanie. Polega ona na przypisywaniu podobnych instancji do tej samej klasy. Dane do zadania klasyfikacji pochodzą z nieetykietowanych zbiorów uczących, gdzie brakuje podanych wprost klas dla instancji.

Algorytmy uczące wykonujące klasteryzację nazywamy klasteryzatorami. W pakiecie RWeka wyróżniamy następujące klasteryzatory: Cobwem, DBScan, FarthestFirst, SimpleKMeans oraz XMeans. Najpopularniejszym algorytmem klasteryzacji jest SimpleKMeans, który następnie opiszemy.

SimpleKMeans przyjmuje parametr K określający ilość klas do których chcemy przypisywać instancje. Parametry ten musi zostać z góry określony co jest często problematyczne. Przykładowo spoglądając na nieetykietowany zbiór uczący iris nieposiadający informacji o gatunkach, czy jesteśmy w stanie powiedzieć ile różnych gatunków opisują wymienione instancje? Odpowiedź jest przecząca. Dla celów ilustracyjnych przyjmiemy, iż wiemy że w zbiorze tym znajdują się dokładnie 3 rożne gatunki lecz nie wiemy, która instancja należy do którego gatunku. Przystąpmy do klasteryzacji z wykorzystaniem algorytmu SimpleKMeans.

Algorytm SimpleKMeans automatycznie dobrał liczbę klastrów równą 2. Następnie próbował przyporządkować wszystkie instancje do jednej z tych dwóch grup. Wiemy, że nasz zbiór zawiera 3 różne gatunki, dlatego w następnym podejściu ustawimy arbitralnie liczbę grup. Użyjemy do tego funkcji Weka_control() przyjmującej sekwencje parametrów zapisanych w parach nazwa_parametru = wartość_parametru. Wywołanie powyższej funkcji wraz z algorytmem uczącym SimpleKMeans wygląda następująco:

Analizując wyniki klasteryzacji i wiedząc, że rozkład gatunków irysów jest równomierny (po 50 instancji na gatunek) łatwo dopatrzeć się błędu klasteryzacji. Mianowicie, ze wszystkich 150 instancji: 61 instancji zostało przypisanych do klastra #0, 50 instancji do klastra #1 oraz 39 instancji do klastra #2.