• Nie Znaleziono Wyników

Systemy uczace sie lab1

N/A
N/A
Protected

Academic year: 2021

Share "Systemy uczace sie lab1"

Copied!
47
0
0

Pełen tekst

(1)

1

Wprowadzenie do programu RapidMiner, częśd 1 Michał Bereta

www.michalbereta.pl Program Rapid Miner jest dostępny na stronie:

http://rapid-i.com/

Korzystamy z bezpłatnej wersji RapidMiner Community Edition . Zalecane jest obejrzenie video tutorialów:

http://rapid-i.com/content/view/189/212

1. Wstęp – wczytywanie i wizualizacja danych

(2)

2

W widoku projektu zakładamy nowe repozytorium. Będą tam zapisywane nasze dane, projekty oraz wyniki.

(3)

3

Następnie tworzymy nowy proces (crtl +N, File->New Process lub z widoku powitalnego) Importujemy dane. Przeciągnij jeden z dostępnych operatorów dla formatu ARFF:

Wybierz plik dla bazy danych irysów – iris.arff. Jeśli plik nie może byd odnaleziony w miejscu instalacji RM, pobierz dane ze strony przedmiotu.

(4)

4

Żółta ikona sygnalizuje, że proces nie został jeszcze wykonany. Uruchom proces:

Zachowaj projekt w repozytorium. Mimo informacji, że żadne wyniki nie zostały wygenerowane, przejdź do widoku wyników.

(5)

5

Zakładka „Meta Data View” przedstawia streszczenie wszystkich danych i podstawowe statystyki. Można tu odczytad, że każdy obiekt opisany jest pięcioma atrybutami. Są to: sepallength, sepalwidth, petallength, petalwidth oraz class. Atrybut class wskazuje, do której klasy należy dany przykład. Widad, że są trzy klasy: Iris-setosa, Iris-versicolor, Iris-virginica. Z każdej klasy mamy po 50 przykładów. Upewnij się, że rozumiesz co przedstawia każda kolumna. „Role = regular” oznacza, że atrybut nie został wyszczególniony jako np. etykieta klasy lub id obiektu. Czasami informacja o tym, który atrybut pełni rolę etykiety klasy jest zapisana pliku z danymi (w przypadku niektórych formatów zapisu danych). W innych przypadkach należy samodzielnie wskazad, który atrybut wskazuje na etykietę klasy.

W zakładce „Data View” można dokładnie obejrzed wartości atrybutów opisujących każdy z przykładów. Numer wiersza (Row No.) nie jest atrybutem.

(6)

6

Dzięki zakładce „Plot View” możemy poddad dane wnikliwej wizualnej analizie za pomocą różnego typu wykresów. Każda oś może wskazad na wybrany atrybut. Kolor dobrze jest ustawid na atrybut opisujący etykietę klasy. Wtedy każda klasa ma swój kolor, jak na rysunku powyżej. Widad, że jedynie dwa wybrane atrybuty, przy całkowitym pominięciu pozostałych, nie pozwalają na łatwe oddzielenie wszystkich trzech klas od siebie. Stosunkowo łatwo jest oddzielid klasę Iris-setosa (kolor niebieski), lecz nie pozostałe dwie od siebie.

Jak sprawdzid czy inne dwa wybrane atrybuty pozwalają lepiej lub gorzej oddzielid od siebie klasy? Można po kolei sprawdzad wszystkie pary atrybutów, lecz lepiej skorzystad z wykresu „Scatter Matrix”, przedstawiającego wszystkie pary jednocześnie.

(7)

7

Jak widad, żadne dwie pary atrybutów nie gwarantują rozdzielenia wszystkich klas. Dostępne są również analogiczne wykresy w 3D:

(8)

8

Przykładowym innym rodzajem wykresu jest „Bubble”. Wartośd trzeciego wybranego atrybutu jest przedstawiona jako wielkośd koła reprezentującego dany przykład. Z wykresu poniżej widad, że przykłady z klasy Iris-setosa mają stosunkowo małe wartości atrybutu petallength, gdyż niebieskie koła są niewielkich rozmiarów.

Inny przykład to typowy „Pie”. Poniżej przykład prezentujący średnie wartości atrybutu petallength w każdej klasie.

(9)

9

Bardzo przydatny w analizie jest histogram, prezentujący częstości występowanie wartości z danego zakresu.

(10)

10

Ciągłym odpowiednikiem histogramu jest wykres rozkładu gęstości prawdopodobieostwa. Może on również sugerowad, które atrybuty lepiej nadają się do rozróżniania klas (porównaj dwa poniższe wykresy).

(11)

11

Bardzo dobrym rodzajem wykresu jest „Parallel”, który jest w stanie zaprezentowad wysoko wymiarowe dane – każdy atrybut ma przydzieloną jedną pionową oś. Z poniższego widad, że atrybutem, który jest najbardziej obiecujący jeśli chodzi o odzielenie klas jest petallength – w zupełności wystarczy on do oddzielenia klasy Iris-setosa. Najmniej przydatny wydaje się byd atrybut sepalwidth. Nie znaczy to jednak, że nie jest on przydatny, gdyż w tej chwili mówimy jedynie o każdym atrybucie z osobna. W czterech wymiarach może to jednak wyglądad inaczej (ciężko to sobie jednak wyobrazid).

(12)

12

Bardziej przejrzysty może byd czasami wykres „Deviation”. Poniżej widad średnie wartości każdego z atrybutów wraz z odchyleniem standardowym przedstawionym jako zacieniony obszar. Może on sugerowad, że dwa najlepsze atrybuty do przedstawienia danych to petalwidth i petallength, co widad na poniższym „scatter plot”.

(13)

13

(14)

14 Zadanie:

Wczytaj plik z danymi „sonar.aml”. Zawiera ona dane z pomiarów mających za zadanie wykryd, czy dany obiekt należy do klasy „rock” czy też „mine”.

Przeanalizuj meta-dane – ile jest atrybutów, klas, itd.

Poniższy wykres pokazuje, że żadne dwa atrybuty nie oddzielają dobrze klas. Ciężko nawet wskazad, które nadają się chod trochę lepiej niż inne.

Inny rodzaj wykresu może byd bardziej pomocny. Widad jednak, że problem jest trudniejszy niż w przypadku zbioru „iris”.

(15)

15

Na tym przykładzie widad, że wykres „Deviation” jest zdecydowanie bardziej przejrzysty niż „Parallel”. Widad na nim (poniżej), że niektóre atrybuty przynajmniej sugerują większą użytecznośd w oddzielaniu klas.

Z poniższego wykresu wynika, że atrybut 26-ty zdaje się nie wnosid praktycznie nic do procesu dyskryminacji.

(16)
(17)

17 2. Tworzenie prostego klasyfikatora

Stwórz nowy proces i wczytaj dane iris.

Wyszukaj operator „Decision Tree” (pomocny jest przy tym filtr, jak widad poniżej). Przeciągnij i upuśd go na istniejącym linku.

(18)

18

Jak widad powyżej drzewo decyzyjne będzie utworzone na podstawie przekazanych mu na wejście danych, a utworzony model (wyjście mod) zostanie przekazane jako rezultat (res na prawej brzegu). Jeśli chcesz obejrzed wczytane dane zanim zacznie się indukcja drzewa, ustaw breakpoint z menu kontekstowego na ikonie wczytywania danych.

(19)

19 Uruchom proces:

Jako pierwszy wynik zobaczyd można wczytane dane. Jeśli był ustawiony break point, należy kontynuowad proces (niebieski trójkąt jeszcze raz jak powyżej). Jako wynik dostaniemy model drzewa decyzyjnego.

Powyższe drzewo zależy od ustawieo pewnych parametrów. Wród do widoku projektu, zaznacz ikonę drzewa i po prawej przeanalizuj dostępne parametry:

(20)

20

Niektóre operatory mają również tzw. „expert mode”, gdzie dostępnych jest więcej parametrów:

Aby przetestowad nasze drzewo decyzyjne (sprawdzid jak klasyfikuje dane) potrzebny jest operator „Apply Model”:

(21)

21 Umieśd go w projekcie jak poniżej:

Czerwona dioda sygnalizuje problem. Tutaj: brak danych, które mają byd klasyfikowane przez model. Jeśli połączymy jak poniżej, nasze drzewo spróbuje klasyfikowad te same dane, na podstawie których było utworzone.

Jednocześnie chcemy przekazad „lab” z „Apply Model” (od label, czyli wyniki klasyfikacji) do „res”.

Uruchom ponownie proces. W wynikach można odnaleźd kolumnę „prediction”. Porównaj z kolumną „labe’l, czyli poprawnymi odpowiedziami. Widad, że w niektórych przypadkach odpowiedź nie jest poprawna (dlaczego?)

(22)

22

Aby uzyskad podsumowanie jakości tej klasyfikacji możemy użyd operatora „Performance” i podłączyd go jak poniżej.

Uruchom ponownie proces. W widoku „wyniki” otrzymaliśmy zakładkę „Performance vector”. Ogólna jakośd klasyfikacji wyrażona jest przez „accuracy”. Co oznaczają „class recall” oraz „class precision” ?

W wynikach powyższego procesu nie ma już szczegółów odnośnie nadanych etykiet jak poprzednio. Jest tak dlatego, że „lab” („labelled data”) z „Apply Model” jest teraz połączony z „lab” operatora

(23)

23

„Performance”. Nie możemy bezpośrednio połączyd „lab” z „Apply Model” do obu jednocześnie. Jeśli chcemy uzyskad szczegółowe informacje o klasyfikacji, możemy użyd operatora „Multiply”, który duplikuje przekazane mu na wejściu dane.

W powyższym doświadczeniu testowaliśmy nasze drzewo decyzyjne na tych samych danych, na podstawie których było ono utworzone. To nie daje dobrego wyobrażenia o powstałym modelu, taka ocena zawsze będzie optymistyczna. Należy użyd danych testowych oddzielnych od zbioru treningowego.

(24)

24

3. Tworzenie i testowanie klasyfikatora na podstawie odrębnych zbiorów danych. W najprostszy sposób można wykorzystad operator „Split Data”

Należy ustalid jaki podział danych ma byd wygenerowany.

Dwukrotnie kliknij „Add Entry” i wpisz poniższe wartości. Oznaczają one, że planujemy przeznaczyd losowe 60% przykładów na trening a pozostałe 40% na testowanie (wartości muszą sumowad się do 1).

(25)

25

Na poniższym schemacie widad, że do trenowania używamy pierwszej części danych wygenerowanej przez operator „Split Data” a do operatora „Apply Model” (czyli do testowania) przekazujemy drugą częśd.

Uruchom powyższy proces i przeanalizuj wyniki. Poniżej widad, że do testowania nie została użyta cała baza iris.

Zadanie:

Jak przedstawid wyniki predykcji zarówno dla danych testowych jak i trenujących?

Czy poniższy schemat jest poprawny? Zwród uwagę na koniecznośd duplikowania zbioru trenującego oraz drzewa.

(26)

26

Jak widad sprawa się trochę komplikuje. Aby wstępnie przetestowad dany model na zbiorze danych, można użyd operatora „Split Validation”, który samodzielnie podzieli dane na zbiór trenujący i testowy.

(27)

27

Operator ten jest tzw. „Building block”. Nazwijmy go podprocesem. Kliknij dwukrotnie:

W ustawieniach podprocesu należy ustalid szczegóły dwóch jego faz: treningu i testowania. W fazie trenowania chcemy użyd drzewa decyzyjnego:

(28)

28

W fazie testowania musimy użyd operatora „Apply Model” oraz sprawdzid jakośd klasyfikacji operatorem „Performance”.

Należy jeszcze ustalid szczegóły losowego podziału na zbiór trenujacy i testowy:

Co oznacza „split ratio” możemy sprawdzid w pomocy poniżej:

(29)

29

Aby po uruchomieniu procesu zobaczyd streszczenie jakości klasyfikacji dla danych testowych należy jeszcze połączyd „ave” z „res”.

Jeśli chcesz zobaczyd również powstałe drzewo, musisz połaczyd również „mod” do „res”:

(30)
(31)

31

4. Ocena jakości klasyfikatora za pomocą kroswalidacji

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)

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)

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)

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)

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)

36 Podpowiedź:

(37)

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)

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)

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)

40 Zachowaj pod wybraną nazwą w repozytorium:

(41)

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)

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)

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)

44

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

Uruchom proces:

Dla drzewa otrzymujemy:

(45)

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)

46

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

(47)

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:

Cytaty

Powiązane dokumenty

Opisuje ona gdzie (to jest korzystając z jakiego najbliższego adresu pośredniczącego i/lub na jaki interfejs muszą być one przesłane) mają być wysyłane pakiety biorąc pod

● Losowe z zastępowaniem jest odmianą wyboru losowego, gdy każdy obiekt może być wylosowany więcej niż raz. Ten rodzaj losowania gwarantuje ze każdy element jest losowany

(dzieci wyciągają kciuki, pokazując OK) Metal, wood, paper and plastic, different materials are fantastic. Ćwiczeniówka

W niniejszej publikacji dokonana zostanie analiza trzech czynników prawo- twórczych funkcjonujących w prawie rzymskim, tj.: działalności pretora – two- rzącego prawo

Realna szansa na wprowadzenie modyfikacji pojawiła się jednak dopiero wraz z utworzeniem Królestwa Polskiego oraz nadaniem przez Aleksandra I Konstytucji w dniu 27 listopada 1815

Cziczerin twierdził: „[…] nie rodzi się [człowiek – M.T.] jako abstrakcyj- na istota, korzystająca z nieograniczonej wolności i nie znająca żadnych obo- wiązków, lecz

Wracając do praw włościan, Szaniecki równie zdecydowanie bronił ich na sejmie 1830 r., kiedy nie mogąc z powodu choroby przedstawić posłom i deputo- wanym swych

Janelidze, w składzie rządu znaleźli się także: Grigol Giorgadze – minister obro- ny, Akaki Chkhenkeli – minister spraw zagranicznych, Noe Khomeriki – minister rolnictwa, Gior-