KATEDRA SYSTEMÓW MULTIMEDIALNYCH
Inteligentne Systemy Decyzyjne
Ć
wiczenie nr 4:
Wprowadzenie do systemu WEKA
Opracowanie: mgr inŜ. Adam Kupryjanow
1. Wprowadzenie
Podczas projektowania algorytmów opartych na klasyfikatorach wyŜszego rządu (np. sztuczne sieci neuronowe), często konieczne jest wykonanie szybkich testów pozwalających na określenie, który z klasyfikatorów daje najlepsze rezultaty w przypadku danego zadania klasyfikacji. WaŜna jest takŜe moŜliwość szybkiego sprawdzenia, które parametry opisujące dany problem pozwalają na skuteczną klasyfikację danych wejściowych. Narzędziem umoŜliwiającym wykonanie tego typu badań jest system Weka. Warto wspomnieć, Ŝe nie został on stworzony specjalnie do tego celu. Jego głównym zadaniem jest wspieranie procesów eksploracji danych (ang. data mining). Cały system został napisany w języku Java, a klasy z których korzysta, są dostępne i moŜna wykorzystywać je we własnych projektach.
2. Cel i przebieg ćwiczenia
Celem ćwiczenia jest zapoznanie studenta z obsługą systemu Weka. Podczas zajęć system ten wykorzystywany będzie w celu projektowania klasyfikatorów opartych na: sztucznych sieciach neuronowych, maszynach wektorów wspierających (SVM), drzewach decyzyjnych (J48), sieciach Bayesa oraz algorytmie k najbliŜszych sąsiadów (kNN).
3. Format plików wejściowych
System Weka umoŜliwia wczytywanie danych do klasyfikacji zapisanych w następujących formatach: ARFF (ang. Attribute-Relation File Format), C4.5, CSV, libsvm, binary seralized instalnces, XRFF. Podczas zajęć zostaną wykorzystane dwa najpopularniejsze formaty ARFF i CSV. Oba formaty plików mogą zostać stworzone za pomocą dowolnego edytora tekstu, a pliki w formacie CSV moŜna tworzyć równieŜ z wykorzystaniem arkusza kalkulacyjnego (np. Excel).
3.1 Struktura pliku CSV
KaŜdy plik w tym formacie zbudowany jest z dwóch głównych części: nagłówka i danych. W części nagłówkowej podawane są nazwy parametrów oraz nazwa klasy do której przypisane są parametry. Przykładowo jeŜeli parametrami wykorzystywanymi do klasyfikacji studentów będą
średnia ocen, wiek, zachowanie, obecność. To plik nagłówkowy będzie wyglądał następująco:
sredniaOcen, wiek, zachowanie, obecnosc, ocenaStudenta
gdzie ocenaStudenta jest klasą do której przypisany jest kaŜdy student i moŜe ona przyjmować wartości: dobry, średni, słaby. Zaś część pliku odpowiedzialna za przypisanie parametrów do danego studenta moŜe wyglądać tak:
3.5, 22, dobre, 90, sredni …
gdzie 3.5 oznacza średnią ocen studenta, 22 to jego wiek, student zachowuje się dobrze i jest obecny na 90% zajęć. Opisywany student został zakwalifikowany jako średni.
3.2 Struktura pliku ARFF
Format ten został opisany szczegółowo w instrukcji obsługi aplikacji WEKA [1]. Pliki w tym formacie tworzone są z wykorzystaniem znaczników opisujących znaczenie poszczególnych bloków. Znacznik poprzedzany jest znakiem @. Bloki powinny pojawiać się w pliku w odpowiedniej kolejności. KaŜdy plik ARFF rozpoczyna się od sekcji związanej z opisem danych w nim zawartych:
% 1. Title: Baza Oceny Studentów %
% 2. Sources:
% (a) Creator: A. Kupryjanow % (b) Date: March, 2010 %
w znaczniku @ATTRIBUTE podawana jest nazwa atrybutu (parametru) oraz jego typ lub wartości przyjmowane przez dany atrybut. Weka operuje na atrybutach typu: NUMERIC, INTEGER, REAL, STRING. Sekcja nagłówkowa pliku ARFF dla danych z punktu 3.1 wyglądałaby następująco:
@RELATION student
@ATTRIBUTE sredniaOcen REAL @ATTRIBUTE wiek INTEGER @ATTRIBUTE zachowanie STRING @ATTRIBUTE obecnosc INTEGER
@ATTRIBUTE class {dobry, sredni, slaby}
W ostatniej sekcji pliku umieszcza się wartości parametrów. Do wprowadzania parametrów wykorzystuje się znacznik @DATA. PoniŜej umieszczono fragment bloku z wartościami parametrów:
@DATA
3.5, 22, dobre, 90, sredni 4.5, 22, dobre, 90, dobry …
4. Weka GUI Chooser
System Weka pozwala na pracę z wykorzystaniem czterech niezaleŜnych aplikacji: Explorer,
Exeprimenter, KnowledgeFlow i SimpleCLI. Pierwsze trzy aplikacje pozwalając na wczytywanie
danych, ich obróbkę i tworzenie klasyfikatorów z wykorzystaniem interfejsu uŜytkownika. Ostatnia aplikacja umoŜliwia korzystanie z klas Weki za pośrednictwem linii poleceń. Na rysunku 1 przedstawiono okno aplikacji Weka GUI Chooser. Podczas zajęć wykorzystywana będzie jedynie aplikacji Explorer. Korzystanie z pozostałych aplikacji jest analogiczne jak w przypadku Explorer’a i nie zostanie omówione w tej instrukcji. Więcej informacji na temat obsługi pozostałych aplikacji moŜna znaleźć w instrukcji obsługi aplikacji [1].
5. Preprocessing danych wejściowych
Po uruchomieniu aplikacji Explorer zostanie ona otwarta na zakładce Preprocess, a pozostałe zakładki aplikacji będą nieaktywne. Pierwszą czynnością jaką naleŜy wykonać jest wczytanie danych do klasyfikacji (Open file...). Po wczytaniu danych, opcje aplikacji staną się aktywne, a na liście atrybutów pojawią się wczytane parametry. Wybierając z listy nazwę atrybutu moŜna obejrzeć jego statystykę (minimalna wartość, maksymalna wartość, wartość średnia, odchylenie standardowe), oraz zobaczyć na wykresie rozkład tych wartości. Po wybraniu przycisku Visualize All zostaną wykreślone wszystkie wartości parametrów. Na rysunku 2 przedstawiono okno aplikacji Explorer.
Zakładka Preprocess pozwala takŜe na wykonanie przetwarzanie danych wejściowych z wykorzystaniem tak zwanych „filtrów”. Filtry pozwalają m.in. na normalizację, dyskretyzację danych. Filery moŜna dodawać poprzez wybór przycisku Choose. Wybrany filtr zostanie zastosowany dla wczytanych danych po wybraniu przycisku Apply. W celu ustawienie opcji filtru naleŜy kliknąć na jego nazwę, wtedy zostanie uruchomione okno opcji danego filtru. W polu atrybutów moŜliwe jest takŜe usuwanie wybranej grupy parametrów poprzez zaznaczenie parametru oraz wybór przycisku Remove.
6. Wizualizacja parametrów
Relacje pomiędzy poszczególny parametrami moŜna analizować po przejściu do zakładki
Visualize. Po kliknięciu na miniaturkę wykresu moŜna zaobserwować relację pomiędzy wartościami
dwóch wybranych parametrów dla instancji naleŜących do róŜnych klas.
7. Klasyfikacja danych
Trenowanie klasyfikatorów moŜna wykonać korzystając z zakładki Classify. Rodzaj klasyfikatora wybiera się korzystając z przycisku Choose. Podczas zajęć laboratoryjnych przebadane zostaną następujące klasyfikatory: BayesNet (sieć Bayesa), MultilayerPerceptron (sztuczna sieć neuronowa),
SMO (maszyna wektorów wspierających), J48 (drzewo decyzyjne), NNge (algorytm najbliŜszego
sąsiada). Parametry klasyfikatora moŜna ustawić po kliknięciu w nazwę wybranego klasyfikatora. Na rysunku 3 przedstawiono okno aplikacji Explorer z otwartym oknem konfiguracji parametrów klasyfikatora SMO.
Rysunek 3 Okno aplikacji Explorer zakładka Classify
Przed rozpoczęciem treningu naleŜy wybrać sposób podziału danych wejściowych na zbiory testowe i treningowe. Sposób podziału ustawiany jest w panelu Test options. Dostępne są następujące opcje:
• Use training set – klasyfikator trenowany jest z wykorzystaniem wszystkich wczytanych
danych, testowanie na tym samym zbiorze
• Supplied test set - klasyfikator trenowany jest z wykorzystaniem wszystkich wczytanych
danych, a testowany na zbiorze wczytanym z innego pliku poprzez wybór przycisku Set….
• Cross-validation – klasyfikator trenowany jest zgodnie z zasadą walidacji krzyŜowej. W tej
metodzie, zbiór danych jest dzielona na K podzbiorów. Następnie kolejno kaŜdy z nich bierze się jako zbiór testowy, a pozostałe razem jako zbiór uczący i wykonuje testowanie klasyfikatora. Analiza jest więc wykonywana K razy. K rezultatów jest następnie uśrednianych (lub łączonych w inny sposób) w celu uzyskania jednego wyniku [3]. Ilość podzbiorów K ustawiana jest jako wartość parametru Folds. Opcja ta treningu z wykorzystaniem walidacji krzyŜowej jest wybrana jako domyślna.
• Percentage Split – dane treningowe i testowe dzielone są zgodnie z wartością procentową
wprowadzaną w text box. Na przykład wartość 66% oznacza, Ŝe 66% całego zbioru zostanie wykorzystane jako dane treningowe a 34% zostanie uŜyte jako dane testowe.
Trening i testowanie klasyfikatora rozpoczyna się po wybraniu przycisku Start. W oknie wyników wyświetlane zostaną informacje dotyczące stworzonego klasyfikatora oraz skuteczność jego działania. Skuteczność podawana jest jako procentowa skuteczność całkowita (Correctly Classified Instances) oraz w formie macierzy pomyłek (ang. Confusion Matrix).
Rysunek 4 Okno wyjściowe klasyfikatora
8. Wybór optymalnych parametrów
W procesie projektowania klasyfikatora moŜe okazać się, Ŝe dobrany przez projektanta zbiór parametrów jest redundantny. W tej sytuacji moŜliwe jest sprawdzenie, które parametry opisujące daną klasę są najistotniejsze. Badanie istotności parametrów wykonuje się w zakładce Select
attributes. Dobór parametrów wykonuje się analogicznie jak testowanie klasyfikatorów opisane w
punkcie 7.
9. Zadania do wykonania
1. Stworzyć plik z danymi (w formacie CSV lub ARFF). Wartości parametrów powinny opisywać dwie figury geometryczne (np. kwadrat i trójkąt) Parametrami opisującymi figurę powinny być współrzędne punktów na płaszczyźnie (x,y), a klasą do której naleŜą punkty powinny być klasy np. :kwadrat, trojkat, inne. W celu weryfikacji poprawności wprowadzonych danych moŜna po wczytaniu tworzonego pliku w zakładce
Visualize analizować relację pomiędzy wartościami x i y.
2. Wytrenować 5 klasyfikatorów: BayesNet (sieć Bayesa), MultilayerPerceptron (sztuczna sieć neuronowa), SMO (maszyna wektorów wspierających), J48 (drzewo decyzyjne),
NNge (algorytm najbliŜszego sąsiada). Podczas tworzenia klasyfikatorów naleŜy zmienić
domyśle parametry klasyfikatorów tak, aby uzyskać jak najwyŜszą skuteczność rozpoznawania. Uwaga! Dla klasyfikatora SMO naleŜy ustawić rodzaj jądra (ang. Kernel) jako RBFKernel.
3. Korzystając z plików dostarczonych razem z systemem Weka znajdujących się w katalogu …weka\data\, wytrenować 5 klasyfikatorów. Wykorzystać te same rodzaje klasyfikatorów co w zadaniu 2.
4. Korzystając z zakładki Select Attributes sprawdzić, które parametry są nadmiarowe i usunąć nadmiarowe parametry korzystając z zakładki Preprocess.
5. Wytrenować klasyfikatory na zbiorze parametrów zredukowanych zgodnie z wynikami uzyskanymi w punkcie 4.
10. Opracowanie
1. Zanotować globalną skuteczność rozpoznawania oraz macierz pomyłek dla wszystkich stworzonych klasyfikatorów w zadaniu 2.
2. Na podstawie uzyskanych wyników wybierać najlepszy klasyfikator. Odpowiedź uzasadnić.
3. Zanotować globalną skuteczność rozpoznawania oraz macierz pomyłek dla wszystkich stworzonych klasyfikatorów w zadaniu 3.
4. Opisać wyniki wyboru istotnych parametrów.
5. Zanotować globalną skuteczność rozpoznawania oraz macierz pomyłek dla wszystkich stworzonych klasyfikatorów w zadaniu 5.
6. Porównując wyniki uzyskane w zadaniach 3 i 5 opisać wpływ redukcji ilości parametrów na skuteczność rozpoznawania, oraz opisać skuteczność działania algorytmu wyboru istotnych parametrów.
Bibliografia
[1] R. R. Bouchkaert et.al., WEKA Manual for version 3-6-0, 18 December 2008 [2] WEKA home page: http://www.cs.waikato.ac.nz/ml/weka/