• Nie Znaleziono Wyników

Ocena jakości klasyfikatora za pomocą kroswalidacji

W dokumencie Systemy uczace sie lab1 (Stron 31-47)

Aby ocenid jakośd działania klasyfikatora, często lepszym rozwiązaniem jest stosowanie kroswalidacji zamiast jednego podziału na zbiór trenujący i testowy. Domyślnie używana jest jest 10-ciokrotna kroswalidacja, tzn. dane są dzielone na 10 części i proces uczenia powtarzany jest 10-cio krotnie dla każdej części wykorzystanej jako dane testowe (nie biorące udział w procesie tworzenia modelu). Wyniki z dziesięciu prób są uśredniane i wykorzystane jako ocena jakości modelu.

Otrzymamy:

Widoczny powyżej operator walidacji jest podprocesem. Na poniższym rysunku widad, że domyślnie użyte jest drzewo decyzyjne. Można go jednak usunąd i zastąpid innym klasyfikatorem.

32 Domyślnie (poniżej) kros walidacja jest 10-krotna.

Skrajnym przypadkiem jest „leave one out” gdzie każdy przykład jest kolejno użyty jako jednoelementowy zbiór testowy a pozostałe jako zbiór trenujący. Wymaga to dużego nakładu obliczeo (proces tworzenia klasyfikatora należy powtórzyd tyle razy ile mamy przykładów).

33 Zadanie:

Jak porównad za pomocą kroswalidacji, który model lepiej nadaje się jako klasyfikator w konkretnym przypadku? Przykładowo, porównaj drzewo decyzyjne z naiwnym klasyfikatorem Bayesa. Zaprojektuj poniższy proces (zwród uwagę, że z poziomu menu kontekstowego można zmienid nazwy instancji operatorów na np. „Validation drzewo” oraz „Validation Bayes”).

34 Po uruchomieniu, dla drzewa otrzymujamy:

a dla naiwnego Bayesa:

Wynika z tego, że lepszy tutaj mógłby byd klasyfikator naiwnego Bayesa. Zagadnienie, czy różnica między nimi jest istotna, zostawimy na inną okazję.

Zadanie:

Wykonaj powyższe porównanie dla zbioru sonar (Uwaga: jako że dane sonar są dużo większe niż iris, obliczenia będą trwad dłużej).

Przykładowe wyniki: Dla „Decision Tree”:

35

Zwród uwagę, że mimo iż „accuracy” jest w obu przypadkach zbliżone, to jednak „class recall” oraz „class precision” bardzo się różnią. Może to mied znaczenie jeśli zależy nam np. na minimalizacji błędów danego typu. Np. w wykrywaniu klasy „Rock” większą precyzję (tzn. jest mało fałszywych wykryd „Mine” jako „Rock”) ma drzewo (68.67% w porównaniu do 61.54% dla naiwnego Bayesa), ale jeśli chodzi o to ile obiektów „Rock” ze wszystkich takich obiektów jest wykrytych to lepszy jest naiwny Bayes (82.47% w porównaniu do 58.76% dla drzewa).

Zadanie:

Wybrany zbiór danych podziel na dwie części w zadanej proporcji za pomocą operatora „Split Data”. Następnie zapisz każdą cześd do osobnego pliku .csv za pomocą operatora „Write CSV”.

Używaj przecinka jako separatora w plikach csv.

Zadanie:

Poprzednie zadanie wykonaj z dodatkowym krokiem: z drugiego zbioru usuo kolumnę (atrybut) zawierający informację o klasie obiektu.

Podpowiedź 1: Użyj operatora „Select Attributes”.

Podpowiedź 2: Aby usunąd kolumnę z oznaczoną rolą jako „label” najpierw trzeba zmienid jej rolę. Użyj do tego operatora „Set Role”.

36 Podpowiedź:

37 Zadanie:

Importowanie danych z plików csv.

Mając dane w niektórych formatach, np. plikach csv, nie od razu wiadomo, jakie role mają poszczególne kolumny. Przeanalizujmy teraz następujący scenariusz. Dostajemy dwa pliki:

train.csv

oraz test.csv

Jak widad są to pliki wygenerowane przez nas w poprzednim zadaniu, ale udawajmy, że ktoś dał nam zbiór danych trenujących ze znanymi etykietami klas dla przykładów oraz drugi plik bez informacji, do jakiej klasy należą przykłady w każdym wierszu. Naszym zadaniem jest dostarczyd takie odpowiedzi za pomocą drzewa decyzyjnego lub naiwnego Bayesa w zależności od tego, który z nich uznamy za lepszy. Jako odpowiedź mamy przekazad jedynie plik z odpowiedziami.

38

Zwród uwagę, że atrybut z kolumny „id” nie powinien byd wykorzystany do klasyfikacji ani podczas treningu ani podczas generowania odpowiedzi dla danych testowych.

W tym zadaniu nie dowiemy się jak dobrze wypadły odpowiedzi dla danych testowych, gdyż ich nie mamy. Możemy jednak ocenid za pomocą kroswalidacji, który klasyfikator działa lepiej na danych trenujących. Kroswalidacja jest konieczna, gdyż nie możemy oceniad jakości klasyfikatora przez podstawienie tych samych danych (byłoby to zbyt optymistyczne).

Krok 1 – dodanie danych do repozytorium

Przeciągnij i upuśd plik train.cvs na obszar localnego repozytorium w RM. Pojawi się okno dialogowe importu danych. Zmieo „Column separation” na przecinek (lub inny odpowiedni).

39

Możesz zmienid rolę atrybutu label z „attribute” na „label” by rzeczywiści pełniło rolę etykiety klasy. Podobnie można zmienid rolę kolumny „id” na id. (Proszę nie mylid nazwy kolumny z nazwą roli jaką ma odgrywad ta kolumna). Załóżmy jednak, że w tym przypadku tego nie zrobimy, by zilustrowad pewne zachowania RM w kolejnych krokach.

40 Zachowaj pod wybraną nazwą w repozytorium:

41 Można od razu obejrzed dane.

W podobny sposób zaimportuj dane testowe z pliku test.csv.

Krok 2. Wybór modelu - oszacowanie jakości klasyfikatorów na podstawie zbioru trenującego. Tworzymy nowy projekt, w którym porównamy jakośd działania drzewa decyzyjnego oraz naiwnego klasyfikatora Bayesa w tym konkretnym problemie.

Z repozytorium przeciągamy train_data na obszar widoku projektu.

Dodajemy operator kros walidacji. Jak pamiętamy jest to w RM tzw. „building block”. Dodaj Edit->NewBuildingBlock:

Pozostaw domyślny klasyfikator – drzewo decyzyjne. Zmieo nazwę operatora „Performance” na „Performance drzewo”.

42 RM podpowiada:

Musimy zatem wskazad, który atrybut ma byd traktowany jako etykieta klasy (jako, że nie zrobiliśmy tego wcześniej). Skorzystaj z „Quick bugfixes”:

Wybierz kolumnę o nazwie „label”. RM automatycznie doda operator „SetRole”.

Nie chcemy używad atrybutu „id” jako nie wnoszącego nic do procesu dyskryminacji. Dodaj operator „Select Attributes”:

43 W ustawieniach tego operatora wybierz:

„Invert selection” pozwala w prosty sposób użyd wszystkich atrybutów z wyjątkiem tego jednego. Dodaj jeszcze jeden operator kroswalidacji, jednak tym razem zmieo domyślne drzewo na operator naiwnego Bayesa. Zmieo nazwę operatora „Performance” na „Performance Bayes”.

44

Aby dane mogły byd przekazane do dwóch operatorów kroswalidacji, użyj operatora „Multiply”:

Uruchom proces:

Dla drzewa otrzymujemy:

45

Jak widad wartośd „accuracy” sugeruje, że lepiej w tym zadaniu sprawdza się naiwny Bayes. Należy jednak pamiętad, że nie musi tak byd dla innych danych. Inny zbiór trenujący mógłby dad inne wyniki. Jednak musimy podjąd decyzję na podstawie tego czym dysponujemy i dlatego decydujemy się na klasyfikator Bayesa. Warto jeszcze przypomnied, że niekiedy ważniejsze są inne parametry jak „class recall” czy „class precision”. Wspomniane to było przy okazji jednego z poprzednich przykładów.

Krok 3: Po zdecydowaniu się na klasyfikator naiwnego Bayesa przystępujemy do kolejnego etapu. Tym razem przygotowujemy „ostateczny” klasyfikator wybranego typu na podstawie całego zbioru trenującego i sprawdzamy jego odpowiedzi dla danych ze zbioru testowego.

Wygodnie jest stworzyd nowy projekt. Tym razem nie wykorzystujemy operatora kroswalidacji lecz od razu trenujemy klasyfikator Bayesa wykorzystując do tego cały zbiór trenujący. Poniższy schemat powinien byd już dośd oczywisty: wczytujemy dane trenujące z repozytorium, dokonujemy wyboru atrybutów (odrzucamy „id”) i wskazujemy który atrybut powinien byd traktowany jako etykieta klasy (operator „SetRole”). Następnie operator „ApplyModel” pozwala sprawdzid odpowiedź wytrenowanego klasyfikatora dla danych testowych. Zwród uwagę, że RM inteligentnie sam wybierze te atrybuty, które będą mus potrzebne podczas używania przykładów ze zbioru testowego (tzn. nie ma potrzeby stosowad operatora „SelectAttribute” dla danych testowych).

W danych wynikowych widad, że dodane zostały kolumny „prediction(label)” oraz „confidence” dla każdej klasy.

46

Aby wyeksportowad dane do pliku csv najpierw wybieramy operatorem „SelectAttribute” jedynie kolumnę „prediction” i przekazujemy ją do „WriteCSV”.

47

Jak widad, RM traktuje kolumnę „prediction” jako powiązaną z kolumnami „confindence”. Niemniej jednak otrzymaliśmy jako ostateczny wynik naszego zadania klasyfikację dla każdego przykładu ze zbioru testowego.

Zadanie:

W dokumencie Systemy uczace sie lab1 (Stron 31-47)

Powiązane dokumenty