|
|
pl:dydaktyka:ml:2018lab8 [2018/05/29 11:52] esimon [Instrukcje do laboratorium] |
pl:dydaktyka:ml:2018lab8 [2019/06/27 15:50] |
====== Laboratorium 10 -- Drzewa decyzyjne ====== | |
===== Instrukcje do laboratorium ===== | |
- Notebook do pobrania: [[https://drive.google.com/file/d/1mdTmhWDSoAXpZwiTMUwFM-a1GNctJ_GN/view?usp=sharing|decisiontrees.ipynb]] | |
- W celu załadowania, wybierz 'File->Upload Notebook' w Google Colab. W przypadku lokalnej wersji, po prostu nawiguj w oknie przeglądarki do miejsca gdzie zapisany jest notebook. | |
| |
| |
| |
===== Wprowadzenie do Weki ===== | |
[[http://www.cs.waikato.ac.nz/~ml/weka/|Weka]], to narzędzie opensource do data miningu. | |
Uruchom je wykonując w konsoli polecenie. Jeśli program nie jest zainstalowany, ściagnij go ze strony | |
<code> | |
$ weka | |
</code> | |
| |
Jeśli program nie jest zainstalowany, ściągnij go ze strony: [[http://www.cs.waikato.ac.nz/~ml/weka/|Weka]] i uruchom: | |
<code> | |
$ java -jar weka.jar | |
</code> | |
| |
==== Wczytywanie i analiza danych ==== | |
- Pobierz paczkę plików z danymi: {{:pl:dydaktyka:ml:data.tar.gz|}} | |
- Otwórz w Gedicie plik o nazwie swimming.arff i poznaj strukturę plików uczących dla weki z danymi symbolicznymi. | |
- Uruchom Wekę i kliknij w przycisk **Explorer** | |
- Przeanalizuj pierwszą zakładkę GUI i odpowiedz na pytania poniżej: \\ {{:pl:dydaktyka:ml:weka-preprocess.png?600|}} | |
**Pytania** | |
- Jaki jest rozmiar zbioru uczącego? | |
- Ile atrybutów występuje w zbiorze uczącym? | |
- Ile jest instancji jest pozytywnych (//Enjoy=yes//) a ile negatywnych? | |
- Który z atrybutów najlepiej rozdziela dane? ;) | |
- Ile elementów ze zbioru danych ma atrybut wilgotność (//humidity//) ustawioną jako //high//? | |
| |
==== Drzewa decyzyjne ==== | |
- Wczytaj plik swimming.arff ze zbioru danych | |
- Kliknij w zakładkę **Clasify** | |
- Wybierz za pomocą przycisku **Choose** klasyfikator Id3. | |
- Upewnij się, że w oknie //Test options// zaznaczona jest opcja //Use training set//. Uwaga! W przyszłości **nie** będziemy korzystać z tej formy testowania - tutaj jesteśmy zmuszeni, z uwagi na niewielki zbiór uczący. | |
- Kliknij w przycisk **Start**. Przyjrzyj się rezultatowi. Co oznaczają wyniki? \\ {{:pl:dydaktyka:ml:weka-clasify-1.png?600|}} | |
- Wybierz za pomocą przycisku **Choose** klasyfikator J48 i kliknij **Start**, następnie zwizualizuj drzewo tak jak to pokazano poniżej: \\ {{:pl:dydaktyka:ml:weka-visualize-tree.png?600|}} | |
- Czy drzewo wygląda tak jak je narysowałeś(aś) na początku laboratorium? \\ {{:pl:dydaktyka:ml:tree-begining.png|}} | |
| |
==== Poprawność klasyfikacji ==== | |
- Załaduj plik {{:pl:dydaktyka:ml:credit-g.arff.gz|credit-g.arff}} do Weki. Zawiera on dane uczące dla systemu, który na podstawie atrybutów zawartych w pliku powinien określać czy dany zestaw wartości atrybutów wskazuje na wiarygodnego klienta banku, czy też nie - czy można przyznać mu kredyt, czy jest to ryzykowne. | |
- Przejdź do zakładki **Classify** i wybierz algorytm J48. | |
- W obszarze //Test options// wybierz opcje //Percentage split// z wartością 66% Oznacza to, ze 66% danych posłuży do uczenia, a 34% do walidacji. Jakie to ma znaczenie? | |
- Uruchom algorytm. Ile procent przypadków zostało poprawnie zaklasyfikowanych? Czy to dobry wynik? | |
- Zmień klasyfikator na //ZeroR// z gałęzi //rules//. Jakie są wyniki? | |
- Wypróbuj inne klasyfikatory. Jakie dają wyniki? | |
- Przejdź do zakładki **Preprocess** i zobacz jak wygląda rozkład atrybutu określającego czy danych zestaw jest //dobry// czy //zły//. Jaka byłaby skuteczność algorytmu który niezależnie od wartości atrybutów "strzelałby" że użytkownik jest wiarygodny? | |
- Dlaczego przed przystąpieniem do klasyfikacji, warto wcześniej przyjrzeć się danym? ;P | |
| |
==== User Classifier ==== | |
- Zbuduj drzewo z wykorzystaniem klasyfikatora "User Classifier" dla danych z pliku (użyj PPM do "domknięcia" wielokąta): \\ {{:pl:dydaktyka:ml:polygon.png|}} | |
- Zaakceptuj zbudowane drzewo i zobacz wyniki:\\ {{:pl:dydaktyka:ml:user-accept.png|}} | |
| |
| |
| |
| |
===== Materiały ===== | |
| |
| |