Metody klasyfikacji i rozpoznawania wzorców www.michalbereta.pl Najważniejsze rodzaje klasyfikatorów Dla określonego problemu klasyfikacyjnego (tzn. dla danego zestawu danych) należy przetestować jak najwięcej możliwych klasyfikatorów. Każdy z nich należy zazwyczaj nauczyć kilkukrotnie, najlepiej w systematyczny sposób (np. za pomocą kroswalidacji), a jego osiągnięcia uśrednić. Należy wziąć pod uwagę następujące punkty. 1. Drzewo decyzyjne i / lub naiwny klasyfikator Bayesa są dobre na początek, ale nie należy się do nich ograniczać. Inne dobre operatory na początek to: a. Neural Net wielowarstwowa sieć neuronowa typu MLP (ang. multi-layer perceptron) b. SVM maszyny wektorów podpierających (ang. suport vector machines) c. knn metoda najbliższych sąsiadów / k-najbliższych sąsiadów (ang. k-nearest neighbour) 2. Praktycznie każdy operator (klasyfikator) ma parametry, od których zależy jego działanie w danym problemie. Zmieniając parametry klasyfikatora dostajemy niejako nowy rodzaj klasyfikatora. Przykładowo, sieć neuronowa z dwoma warstwami ukrytymi jest innym klasyfikatorem niż sieć z jedną warstwą ukrytą. Można zatem w swoim eksperymencie porównywać te dwie sieci i sprawdzać np. operatorem kroswalidacji, która z sieci działa lepiej w danym problemie. Zatem jeden operator kroswalidacji będzie miał jako operator wewnętrzny operator Neural Net z jedną warstwą ukrytą a drugi operator kroswalidacji będzie miał jako operator wewnętrzny również Neural Net ale z dwiema warstwami ukrytymi i będą to już inne klasyfikatory. Można zatem w jednym eksperymencie porównywać np. dwie sieci neuronowe, dwa rodzaje drzew decyzyjnych i trzy różne operatory knn. Ma to sens jeśli różnią się one ustawieniami parametrów. 3. Warto nabrać doświadczenia i przekonać się osobiście, ile czasu zajmuje użycie różnych klasyfikatorów. Przykładowo, sieć oraz SVM są generalnie wymagające obliczeniowo w czasie ich uczenia, jednak w czasie testowania (czyli używania klasyfikatora) są stosunkowo szybkie. Odwrotnie jest z np. klasyfikatorem k-nn. Warto zatem mieć choć wstępne wyczucie, by nie testować jednocześnie zbyt wymagających obliczeniowo klasyfikatorów. Przypomnijmy, że jeden operator kroswalidacji uczy dany klasyfikator zazwyczaj 10-ciokrotnie. Dla większych problemów zmniejsza się tę wartość do pięciu, ale nie mniej. Aby uzyskać lepsze oszacowanie, jeśli pozwalają na to koszta obliczeniowe, można zwiększyć liczbę podziałów kros walidacyjnych do 15. Mimo iż nie omawiamy teraz dokładnie zasady działania i algorytmów uczenia poszczególnych klasyfikatorów, warto jednak wiedzieć choć częściowo, za co odpowiadają niektóre z ich parametrów.
Neural Net Jest to sieć neuronowa typu feed-forward (sygnały, czyli atrybuty, przekazywane są od warstwy wejściowej do neuronów w warstwie wyjściowej, na podstawie których jest podejmowana decyzja o klasyfikacji). Sieć taka posiada połączenia tylko między neuronami z kolejnych warstw, czyli np. neurony z pierwszej warstwy przekazują sygnał neuronom w warstwie drugiej, te z kolei przekazują sygnał neuronom w warstwie trzeciej itd. Ogólna zasada jest taka, że im więcej warstw ukrytych i im więcej neuronów w tych warstwach, tym sieć jest bardziej elastyczna i może modelować bardzo nieliniowe (a wiec trudne) granice między klasami. Jest to pozytywna cecha, jednak jednocześnie może to prowadzić do zjawiska przeuczenia się sieci, kiedy to sieć zaczyna dostosowywać się do nieistotnych szczegółów z danego zbioru uczącego i słabo uogólnia wiedzę o różnicach między klasami. Sieć nadaje się do problemów z więcej niż jedną klasą (w przeciwieństwie do pojedynczego neuronu, czyli perceptronu). Sieć wymaga wielokrotnego przetwarzania całego zbioru uczącego w trakcie nauki, może więc to być proces długotrwały. Parametry hidden layers definiowanie warstw ukrytych o Każda warstw wymaga nazwy (tylko w celach prezentacji) oraz liczby neuronów w tej warstwie (hidden layer sizes) o Jeśli rozmiar warstwy jest podany jako -1, wtedy liczba neuronów w tej warstwie jest estymowana jako (liczba_atrybutów + liczba_klas)/2 + 1 o Jeśli żadna warstwa ukryta nie jest zdefiniowana, domyślnie zostanie dodana jedna warstwa ukryta z domyślną liczbą neuronów (jak wyżej) o Jeśli zostanie zdefiniowana tylko jedna warstwa bez neuronów, wtedy nie będzie warstwy ukrytej a jedynie warstwa wyjściowa sieci
training cycles - liczba powtórzeń prezentacji całego zbioru uczącego learning rate współczynnik uczenia wpływający na szybkość zmian wag połączeń między neuronami; typowe wartości to przedział (0,1) momentum parametr określający tzw. bezwładność procesu uczenia, czyli w jakim stopniu poprzednie zmiany wag wpływają na ich aktualną zmianę; wpływa na stabilizację procesu uczenia (wagi zmieniają się mniej skokowo) decay określa czy współczynnik uczenia zmniejsza się stopniowo w trakcie uczenia, co jest bardzo często pożądane shuffle określa czy dane prezentowane są w losowej kolejności; pożądane, przy czym zwiększa to nieznacznie ilość potrzebnych obliczeń; normalize określa czy wartości atrybutów są normalizowane do przedziału [-1, 1] przed przekazaniem na wejście sieci; pożądane, zwłaszcza jeśli wartości atrybutów są znaczne co do bezwzględnej wartości error epsilon błąd, po osiągnięciu którego proces uczenia jest zatrzymywany
SVM Operator SVM jest przeznaczony do problemów z dwiema klasami. W przypadku wielu klas, można stosować implementację SVM (LibSVM). SVM to dość skomplikowany algorytm, więc ograniczymy się do najważniejszych parametrów, z którymi dobrze jest na początek eksperymentować. Pozostałe lepiej jest pozostawić bez zmian. max iterations maksymalna liczba prezentacji zbioru uczącego; SVM jest wymagający obliczeniowo i proces uczenia może trwać dość długo; używaj tego parametru by ograniczyć czas uczenia jednak nie za bardzo, gdyż inaczej algorytm nie będzie zbieżny do rozwiązania; kernel type najważniejszy element, który można zmieniać bez wnikania w szczegóły algorytmu; jest to rodzaj funkcji jądrowej użytej przez algorytm SVM by radzić sobie z nieliniowymi granicami między klasami; jako iż dla różnych problemów te granice są odmienne, dla różnych zadań nadają się różne funkcje jądrowe; ich wybór mocno wpływa na jakość klasyfikatora o dot oznacza iloczyn skalarny; znaczy to, że powstały klasyfikator jest tak naprawdę liniowy; należy wybrać jakikolwiek inny by uzyskać możliwość modelowania nieliniowych granic między klasami knn Klasyfikator najbliższego sąsiada. Parametr k oznacza, ilu tak naprawdę najbliższych sąsiadów bierze się pod uwagę o Przy k większym od 1, przeprowadza się głosowanie, więc nie ma sensu ustawiać k równego 2
Parametry k liczba najbliższych sąsiadów; typowe wartości: 1, 3, 4, 5 weighted vote określa czy w głosowaniu powinno być brane pod uwagę jak daleko jest dany sąsiad; dalsi sąsiedzi mają mniejszy wpływ na ostateczną decyzję measure types określa jak liczone jest podobieństwo między obiektami na podstawie ich atrybutów; nie musi to być metryka Euklidesa, czasami miara podobieństwa nie jest nawet metryką w sensie matematycznym o może bardzo mocno wpływać na jakość klasyfikatora Drzewo decyzyjne Zalety - klasyfikator szybki zarówno w uczeniu jak i w używaniu; struktura i przebieg klasyfikacji łatwe do wizualizowania Wada bardzo czuły na zmiany w danych uczących, niewielkie zmiany w zbiorze przykładów (dodanie lub usunięcie pewnego ich podzbioru) mogą prowadzić do dość innego drzewa o zastanów się: jaki to ma wpływ podczas stosowania kroswalidacji? Łatwo można przeuczyć drzewo lepsze są drzewa, które nie są zbyt głębokie Parametry criterion jakie kryterium jest używane przy doborze atrybutu i progu decyzyjnego w każdym węźle drzewa; może mocno wpływać na jakość klasyfikatora minimal size for split określa jaka jest wymagana minimalna liczność zbioru przykładów w danym węźle, tak aby przeprowadzać dalszy podział wychodzący z tego węzła minimal leaf size określa jaki jest minimalny rozmiar zbioru przykładów, które trafiają do liścia drzewa; jeśli ta wartość to np. 2, to podział nie będzie kontynuowany jeśli powstały liść miałby tylko jeden przykład uczący minimal gain określa jaki musi być minimalny zysk wartości criterion rozpatrywanego podziału, by go zaakceptować; większe wartości oznaczają mniejsze drzewa (mniej głębokie)
maximal depth maksymalna głębokość drzewa; ten parametr pozwala przeciwdziałać przeuczeniu drzewa pruning, prepruning przycinanie drzewa w celu odcięcia tych jego gałęzi, które odpowiadają za przeuczenie drzewa; procedura automatyczna; o w przypadku tworzenia jednego drzewa zalecane jest użycie przycinania o czasami przycinanie nie jest pożądane, ale o tym będzie mowa przy innym temacie Naiwny klasyfikator Bayesa Dość prosty w użyciu klasyfikator, mała liczba parametrów o laplace correction zalecane użycie Warto wypróbować również operator Naive Bayes (Kernel); o Używa on funkcji jądrowych do estymacji funkcji gęstości prawdopodobieństwa poszczególnych atrybutów o number of kernels parametr określający liczbę funkcji jądrowych w estymacji funkcji gęstości prawdopodobieństwa Zadanie Wypróbuj powyższe klasyfikatory z różnymi ustawieniami parametrów na przykładzie bazy Pima. Pamiętaj o odpowiednim zaimportowaniu danych. Ostatnia kolumna to etykieta klasy.