Celem ćwiczenia jest zapoznanie się z zagadnieniem klasyfikacji, automatycznym
uczeniem na podstawie serii uczącej, posługiwaniem się narzędziem do analizy
danych, oraz wybranymi metodami maszynowego uczenia się (Machine Learning - ML).
Zadanie należy wykonać przy użyciu wybranego programu do drążenia danych
takiego jak WEKA albo RapidMiner. Można również wykonać to ćwiczenie za
pomocą innego narzędzia do statystycznej analizy albo drążenia danych, np.\
pakietu statystycznego Matlaba.
Zasadnicza część zadania polega na przećwiczeniu co najmniej dwóch wybranych
metod indukcyjnego uczenia się na zestawie dobrych danych statystycznych
opisujących jakieś rzeczywiste zjawisko. Jak wybrać dobry zbiór danych,
i co to znaczy przećwiczenie jest wyjaśnione poniżej.
- 1. Dane
-
Dane powinny być statystyką jakiegoś zjawiska opisanego wektorem atrybutów i
wyrażone w postaci pewnej liczby przypadków (próbek). Najlepiej byłoby, gdyby
dane były zrozumiałe dla laika, przynajmniej częściowo. Dane muszą być
prawdziwe, w sprawozdaniu należy podać ich źródło.
Sztucznie wygenerowane dane na ogół nie nadają się do tego eksperymentu. W
zbiorze statystycznym te same próbki mogą się powtarzać, i zwykle nie wystąpią
wszystkie możliwe kombinacje wartości (niektóre mogą być bardzo nietypowe, lub
w ogóle fizycznie nierealizowalne). Zbiór zawierający wszystkie możliwe
kombinacje wartości atrybutów, po jednej próbce każdego, praktycznie nigdy nie
jest statystyką.
Uwaga na zbiory danych dotyczące samochodów - jest niemal niemożliwe wykonanie
poprawnej analizy na takim zbiorze. Jest coś w ludzkim myśleniu o
samochodach, co nie poddaje się maszynowemu uczeniu się. Poza tym większość
tych zbiorów nie jest statystykami.
Proszę również nie używać do własnego ćwiczenia bardzo rozpowszechnionych
zbiorów danych: irysów, ani grzybów. Ten ostatni jest dobrym zbiorem
danych statystycznych, jednak ze względu na popularność i opisy w wielu
opracowaniach, trudno wykonać z nim prawdziwie samodzielne ćwiczenie.
Ponadto zdarzają się zestawy danych statystycznych, które są tak dobre, że
... aż za dobre. Są one zoptymalizowane pod kątem klasyfikacji. Na przykład
zawierają wyselekcjonowane atrybuty, z których już nic odrzucić nie można bez
pogorszenia jakości klasyfikacji. Czasem wykonana jest też zoptymalizowana
dyskretyzacja wartości atrybutów w wyniku której atrybut(y) zostały zamienione
na dyskretne. Taki zbiór można poznać po tym, że jakiekolwiek operacje na
atrybutach tylko pogarszają klasyfikację. Wykonanie wartościowego,
pouczającego ćwiczenia na takim zbiorze jest również niemożliwe. Czasem można
odnaleźć oryginalną, niezoptymalizowaną wersję takiego zbioru, i z nią pracować.
Uwaga 1:
Orientacyjne wymagania ilościowe: minimum 5 atrybutów i minimum 500 próbek
danych. Aczkolwiek komfortowe minimum próbek powinno być bliższe 1000, a od
10000 próbek zaczyna się ciekawa praca. Liczba próbek niezbędna do sensownej
analizy jest uzależniona od liczby atrybutów i zbioru ich wartości. 200
próbek może być wystarczające dla wykonania minimalnego ćwiczenia z 5
atrybutami binarnymi, lecz dla 5 atrybutów o 5 możliwych wartościach, nawet
2000 próbek może być stanowczo zbyt mało, by uzyskać jakikolwiek stopień
wyuczalności.
Uwaga 2:
Jeśli dane są liczbowe, zwłaszcza zmiennoprzecinkowe, to konieczna będzie ich
dyskretyzacja, czyli podział na przedziały wartości. Tej dyskretyzacji można
dokonać ręcznie, przed rozpoczęciem analizy, jeśli wiadomo jak to zrobić
dobrze. Niektóre algorytmy maszynowego uczenia się same znajdują znaczące
wartości podziału zbioru. Analiza skuteczności dyskretyzacji jest również
istotnym elementem drążenia danych, i programy posiadają szereg metod do tego
służących.
Uwaga 3:
W prawdziwym zbiorze danych mogą występować próbki z brakującymi wartościami
atrybutów. Mogą również występować próbki sprzeczne, to znaczy takie same
kombinacje wartości atrybutów z różnymi klasami. Ani jedno ani drugie nie
jest przeszkodą w analizowaniu takiego zbioru, aczkolwiek skuteczność uczenia
się na takich zbiorach będzie mniejsza. Programy do analizy danych zwykle
radzą sobie z brakującymi wartościami, natomiast próbki sprzeczne można wykryć
oddzielnym programem i np. usunąć ze zbioru przynajmniej dla celów analizy
wstępnej.
Należy podkreślić, że każdy dostatecznie duży zbiór prawdziwych danych może
zawierać błędne próbki, i jest to na ogół niemożliwe do wykrycia (poza pewnymi
oczywistymi przypadkami, np. gdy wiek osoby wypada poza przedziałem 0..130,
jakaś zawartość procentowa poza przedziałem 0..100, itp.). Takie błędy
obniżają efektywność i dokładność maszynowego uczenia się, ale nie
uniemożliwiają go.
- 2. Wstępna analiza
-
Wybierając zbiór danych statystycznych do eksperymentu maszynowego uczenia
należy sprawdzić takie jego aspekty jak liczba atrybutów, typ ich wartości i
konkretne zbiory wartości, nietypowe wartości, kwestia brakujących i
sprzecznych danych, itp. Można również przeanalizować szczegółowo rozkłady
wartości poszczególnych atrybutów (np. histogram wartości). Taka analiza
przydaje się często na dalszych etapach, kiedy wykonuje się różne operacje na
tych zbiorach wartości.
Dla niektórych zbiorów danych jest oczywiste, który atrybut jest klasą (dla
eksperymentu klasyfikacji) lub wartością funkcji (dla eksperymentu regresji).
Niekiedy jednak atrybut taki trzeba wybrać arbitralnie, i można eksperymentować
z różnymi atrybutami, osiągając różne wyniki.
Mając wybrany zbiór i wyróżniony w nim atrybut-klasę, dobrym krokiem jest
przegląd histogramów poszczególnych atrybutów z podziałem na wartości klasy.
Innym podstawowym eksperymentem jest wyznaczenie poziomu odniesienia dla
dokładności docelowej klasyfikacji. Jednym sposobem wyznaczenia takiego
poziomu jest odwrotność liczby wartości atrybutu klasy. Dla dwóch wartości
poziomem odniesienia będzie 1/2, ale dla wielu wartości, np. sześciu, poziom
odniesienia jest znacznie niższy: 1/6.
Inne podejście do wyznaczenia poziomu odniesienia polega na uwzględnieniu
najliczniejszej klasy. Jeśli nawet wartości klas jest wiele (np. 16), ale
najliczniejsza wartość obejmuje np. 45\% próbek, to zwykłe głosowanie
większościowe osiąga 45\% poprawności, i to może być poziomem odniesienia.
Klasyfikacja większościowa jest czasami nazywana klasyfikatorem Zero R.
Jeszcze inne obliczenie poziomu odniesienia może mieć miejsce, gdy istnieje
jakaś wartość domyślna klasy, albo domyślny model klasyfikacji.
Znajomość poziomu odniesienia jest istotna dla oszacowania wyników
klasyfikacji. Jeśli dokładność klasyfikacji nie przekracza poziomu
odniesienia, to można uznać, że niemożliwe jest nauczenie się klasyfikacji na
podstawie danego zestawu atrybutów.
- 3. Klasyfikacja - pierwszy eksperyment
-
Do pierwszego eksperymentu klasyfikacji często wybieramy Naiwny Klasyfikator
Bayesowski. Jakkolwiek czyni one pewne założenia, które nie są spełnione w
wielu zbiorach danych, jednak mimo wszystko często działa on bardzo dobrze, a
w wielu wypadkach równie dobrze jak znacznie bardziej zaawansowane algorytmy.
Jednocześnie zarówno budowa tego klasyfikatora, jak i jego zastosowanie, są
niezwykle proste, co czyni ten algorytm atrakcyjnym.
Do pierwszego eksperymentu klasyfikacji typowo należy użyć wszystkich
atrybutów i maksymalnego zbioru próbek (ograniczać go warto tylko przy bardzo
wielkich zbiorach, np. więcej niż 100,000 próbek, dla zmniejszenia czasu
obliczeń). Dla atrybutów numerycznych najlepiej polegać na automatycznej
dyskretyzacji realizowanej przez dany program.
Celem wstępnej analizy jest określenie procentowego błędu klasyfikacji na
zbiorze testowym, oraz innych metryk wyuczalności zbioru, przydatnych do
bardziej zaawansowanych eksperymentów.
Pracę warto zacząć od obliczenia procentowego błędu klasyfikacji na zbiorze
uczącym, wykorzystując cały zbiór próbek. Będzie on miarą wyuczalności całego
zbioru, zależnej od własności zbioru, zawartych w nim błędów, itp. Będzie on
zarazem górnym kresem wyuczalności na zbiorze testowym.
Kolejnym etapem pracy powinny być eksperymenty uczenia z obliczaniem błędu
klasyfikacji na zbiorze testowym. Błąd obliczony metodą walidacji krzyżowej
( cross-validation), może być zgrubnym wskaźnikiem rzeczywistej
wyuczalności zbioru. Typowo może on być nieznacznie większy niż błąd na
zbiorze uczącym. Jeśli jest dużo większy niż błąd na zbiorze uczącym, to może
świadczyć o niedouczeniu, o przeuczenia, lub ogólnie o słabej wyuczalności
posiadanego zbioru. Na przykład może on być zbyt mały.
Jeśli danych jest bardzo dużo to można zacząć od małych zbiorów uczących i
testować wielkimi, w razie potrzeby rozszerzając zbiór uczący do momentu, aż
klasyfikator osiągnie pewien poziom dobrych wyników. Na odwrót, jeśli danych
jest mało (np. kilkaset) to często ma sens zacząć uczenie od dużego zbioru
uczącego (np. 99\% wszystkich próbek), i potem zmniejszać go, aby przekonać
się jak duża seria ucząca jest niezbędna do wyuczenia klasyfikatora. Zawsze
należy upewnić się czy zwiększenie zbioru uczącego nie poprawi skuteczności
klasyfikacji.
Uwaga:
Obliczony błąd klasyfikacji dla różnych zagadnień może mieć różne wartości
absolutne. Czasami może być bardzo mały, typu ułamka procenta, czasem może
wynosić 5-10\%, a czasem nawet dużo więcej, np. 30-40\%. Ta ostatnia sytuacja
świadczy o słabej wyuczalności klasyfikacji, lecz taka dokładność nie musi być
bezużyteczna i nie należy tylko na tej podstawie oceniać sukcesu eksperymentu.
- 4. Minimalizacja błędu
-
Celem prac w tym zadaniu jest osiągnięcie jak najmniejszego błędu testowania.
Mając określoną początkową wartość tego błędu w analizie wstępnej, należy
zastanowić się jak można go poprawić (zmniejszyć). Ogólnie przydatne okazują
się następujące metody:
- wybór podzbioru atrybutów
W zbiorze atrybutów często istnieją atrybuty nieistotne, a nawet takie, które
zdają się mieć wpływ na klasyfikację, ale jest to wpływ pozorny. Takie
atrybuty należy wyeliminować. Ale nawet gdy pewne atrybuty mają wpływ na
klasyfikację, często sprawdza się zasada minimalizmu - prosta reguła wyboru
jest bardziej skuteczna, i wykorzystanie małego zbioru atrybutów daje lepsze
efekty.
Programy analizy danych mają szereg algorytmów automatycznego wyboru podzbioru
atrybutów. Warto wykorzystać te możliwości, ale ostateczną decyzję o wyborze
zbioru atrybutów klasyfikacji należy podjąć niezależnie.
- dyskretyzacja atrybutów numerycznych
Atrybuty numeryczne, oraz takie o wielu wartościach (np. >>10), należy
dyskretyzować. Programy analizy mają szereg algorytmów, w jakiś sposób
optymalizujących tę dyskretyzację. Warto przebadać takie metody, i wybrać
jedną z nich. W niektórych przypadkach najlepsze wyniki można osiągnąć
wykonując dyskretyzację samodzielnie, jako wstępne przetwarzanie specjalnie
napisanym programem.
- wybór metody uczenia się
Niektóre programy posiadają bardzo wiele zaimplementowanych metod maszynowego
uczenia się. Podstawowe, często stosowane to: drzewa decyzyjne
( decision trees), metoda k najbliższych sąsiadów,
( k-nearest neighbors), wielowarstwowe sieci neuronowe
( feed-forward neural network, MLP - Multi-Layer Perceptron), i maszyny
wektorów nośnych ( Support Vector Machines). Eksperymentowanie z innymi
metodami jest również dopuszczalne i wskazane.
- metody specjalne, wynikające z analizy problemu
W analizie problemu możemy napotkać szereg sytuacji specjalnych, które
wymagają podjęcia dość nietypowych zabiegów. Poniżej przedstawiono kilka z
nich. Ponadto, warto ogólnie zastanowić się nad sensem konkretnego
zagadnienia klasyfikacji, czy nie wynikają z niego jakieś inne specjalne
zabiegi, które można podjąć.
- Czasami problemem są próbki o nietypowych wartościach atrybutów. Ich
traktowanie może być różne, w zależności od okoliczności. Pojedyncze próbki o
nietypowych wartościach jakiegoś atrybutu mogą być po prostu błędne, i wtedy
należy usunąć je ze zbioru danych, uzyskując lepsze efekty uczenia się.
Jednak czasami nietypowe wartości atrybutu są istotne z punktu widzenia
zastosowania klasyfikatora, i takich próbek nie można usunąć. Trzeba wtedy
poszukiwać sposobu ich bardziej skutecznego uwzględnienia przez algorytm ML.
Na przykład, czasem szczególne wartości atrybutu odbiegają daleko od typowego
przedziału wartości, co przy liniowej dyskretyzacji powoduje, że większość
próbek wpada w jeden przedział dyskretyzacji, efektywnie eliminując ten
atrybut z klasyfikacji. Można wtedy zastosować dyskretyzację nieliniową,
np. zdefiniować przedział wartości typu od x do nieskończoności.
- Czasami zadaniem klasyfikatora jest wykrycie zjawiska rzadkiego.
Wyobraźmy sobie badania screeningowe płuc, gdzie większość ludzi jest
zdrowych, a w rzadkich przypadkach można wykryć gruźlicę. W zbiorze danych
może być np. 100,000 przypadków zdrowych, i 100 przypadków gruźlicy.
Klasyfikator, który nauczy się rozpoznawać te przypadki bardzo kiepsko, np. z
80\% błędu w grupie chorych, ale przypadki zdrowe rozpoznaje bardzo dobrze,
np. z 0.1\% błędu, będzie ogólnie miał 0.1\% błędu i może być uznany za
zadowalający. (Taki wynik uzyska trywialny klasyfikator ZeroR, uznający
wszystkich za zdrowych.) Jednak prawdziwym celem zadania powinno być właśnie
wykrycie przypadków chorych. Miarą jakości tego klasyfikatora może być
procent błędu na klasie chorych, jednak niewiele metod automatycznego uczenia
można zmusić do zaakceptowania takiego kryterium. Obejściem problemu może być
np. sztuczne powielenie próbek chorych, aby ich liczba była porównywalna ze
zdrowymi.
- Uogólniając powyższy przypadek, jeśli jakaś klasa ma mało próbek, a jest
ważna dla klasyfikacji, to można powielić próbki tej klasy w zbiorze danych,
aby zwiększyć ich wagę dla algorytmu ML.
- Czasami istnieje wiele wartości klasyfikacji (klas) i klasyfikator
rozpoznaje niektóre bardzo dobrze, ale inne gorzej, albo pewnych klas zdaje
się w ogóle nie odróżniać. Można to zauważyć analizując macierz pomyłek
( confusion matrix).
Co można zrobić? Być może odróżnienie tych nieodróżnialnych klas nie jest
bardzo istotne dla ostatecznego wyniku, i można je połączyć, uzyskując dobrą
dokładność klasyfikacji. Jeśli odróżnienie tych nieodróżnialnych klas
jest jednak istotne, to można zbudować klasyfikator drugiego poziomu, który
nauczymy w oddzielnym eksperymencie rozróżniać próbki tylko tych klas.
- 5. Podsumowanie wyników
-
Po wykonaniu wszystkich eksperymentów minimalizacji błędu, dla optymalnej
konfiguracji uczenia się (lub kilku alternatywnych konfiguracji) należy
wykonać obliczenie błędu na zbiorze uczącym i testowym (zwykle: metodą
walidacji krzyżowej), porównać uzyskane wartości, i sformułować wnioski.
Ostatnim etapem powinno być określenie minimalnej liczby próbek niezbędnej do
nauczenia się klasyfikatora. Powtarzając eksperyment uczenia dla coraz
mniejszych zbiorów uczących, i obliczając średni błąd klasyfikacji zbioru
testowego (np. metodą walidacji krzyżowej), możemy określić wartość graniczną
wielkości zbioru uczącego, poniżej której błąd zaczyna wyraźnie rosnąć. To
jest właśnie minimalna niezbędna liczba próbek.
Referencje:
UCI Machine Learning Repository
CMU Statistical datasets
Rapid Miner tutorial