Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:psi:labs:lab_ml-unsupervised [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== LAB: Uczenie nienadzorowane ======
  
 +Laboratorium kontynuuje poprzednie zajęcia rozszerzając wiedzę dotyczącą sposobów nabywania wiedzy przez inteligentnych agentów o wybrane metody uczenia nienadzorowanego.
 +
 +Laboratorium zostało przygotowane w oparciu o materiały z kursów: [[https://​www.cs.waikato.ac.nz/​ml/​weka/​courses.html|Data Mining with Weka]], [[https://​www.cs.waikato.ac.nz/​ml/​weka/​courses.html|More Data Mining with Weka]] i [[https://​www.coursera.org/​learn/​machine-learning|Machine Learning]] oraz w oparciu o materiały udostępniane z podręcznikiem [[http://​artint.info/​|Artificial Intelligence:​ Foundations of Computational Agents]].
 +
 +
 +===== - Reguły asocjacyjne =====
 +
 +//Reguły asocjacyjne przypominają reguły decyzyjne omawiane na jednym z poprzednich laboratoriów. Tym razem jednak decyzja (prawa strona implikacji) nie jest z góry określona, tzn. nie wiemy, na którym atrybucie ma się opierać. Jest to przykład nauki bez nauczyciela:​ algorytm nie ma określonej z góry prawidłowej odpowiedzi, zamiast tego ma opisać wewnętrzne zależności między atrybutami.//​
 +
 +==== Analiza koszykowa [15 minut] ====
 +=== Dane ===
 +
 +Mamy dane następujące informacje o transakcjach w jednym z hipermarketów:​
 +
 +^Numer paragonu ^ Kupione produkty ^
 +|1000 | Ananas, Chleb, Drożdże |
 +|2000 | Banan, Chleb, Eukaliptus |
 +|3000 | Ananas, Eukaliptus, Chleb, Banan |
 +|4000 | Banan, Eukaliptus |
 +
 +Zadaniem algorytmu odkrywającego reguły asocjacyjne będzie odpowiedź napytanie: //Jakie są zależności pomiędzy kupowanymi produktami?// ​
 +
 +**Pytanie** Patrząc na zbiór uczący w tabeli powyżej wypisz reguły które będą określać jakie produkty są kupowane najczęściej razem.
 +
 +=== Support i Confidence ===
 +
 +Z powyższego zbioru uczącego możemy łatwo wywnioskować następujące reguły:
 +<​code>​if Banan then Eukaliptus
 +if Eukaliptus then Banan
 +if Ananas then Chleb
 +if Chleb then Ananas
 +</​code>​
 +
 +Pozostałe reguły intuicyjnie odrzuciliśmy ponieważ ich //​częstotliwość//​ w zbiorze uczącym jest niewielka, i w związku z tym mamy małą //​pewność//​ co do ich prawdziwości.
 +W celu automatycznego określenia tych parametrów stosuje się dwa wskaźniki: **support** (wsparcie) i **confidence** (wiarygodność)
 +
 +==Support==
 +Wskaźnik ten określa częstotliwość (prawdopodobieństwo) danej reguły w stosunku do wszystkich transakcji.
 +Innymi słowy jest to stosunek ilości transakcji zawierających dane elementy wchodzące w skład reguły do wszystkich transakcji.
 +
 +Dla przykładu z tabeli powyżej, //support// reguły <​code>​if Banan then Eukaliptus</​code>​ jest równy $\frac{3}{4}=75\%$,​ ponieważ 3 transakcje zawierają Banan i Eukaliptus, natomiast ilość wszystkich transakcji jest równa 4.
 +
 +**Pytanie** Jaki jest //support// dla reguły poniżej? <​code>​if Ananas then Chleb</​code>​
 +
 +
 +==Confidence==
 +Wskaźnik ten określa siłę implikacji w regule. Innymi słowy jest on definiowany jako stosunek ilości transakcji zawierających wszystkie elementy wchodzące w skład reguły do transakcji zawierających elementy z części warunkowej reguły.
 +
 +Dla przykładu z tabeli powyżej, //​confidence//​ reguły <​code>​If Banan then Eukaliptus </​code>​ jest równy $\frac{3}{3}=100\%$,​ ponieważ 3 transakcje zawierają Banan i Eukaliptus, natomiast ilość transakcji zawierających elementy z części warunkowej tej reguły (czyli w tym wypadku Banan) jest także równa 3.
 +
 +**Pytanie** Jaki jest //​confidence//​ dla reguł poniżej? ​
 +<​code>​if Chleb then Ananas ​
 +if Ananas then Chleb
 +</​code>​
 +
 +=== Frequent Itemsets ===
 +Patrząc na przykłady powyżej odnalezienie dobrych reguł asocjacyjnych sprowadza się tak naprawdę do wykonania dwóch kroków
 +  * wyszukania zbiorów elementów które mają //support// większy lub równy jakiemuś zadanemu //​supportowi progowemu// - są tak zwanymi zbiorami częstymi (//frequent itemsets//)
 +  * wybrania spośród nich tych konfiguracji,​ których //​confidence//​ przekracza jakiś zadany //​confidence progowy//.
 +
 +W przypadku reguł asocjacyjnych,​ zbiory które zawierają //k// elementów nazywane są k-zbiorami (//​k-itemsets//​).
 +
 +
 +**Pytanie** Zakładając,​ ze bazujemy na danych z tabeli na początku sekcji [[#​dane|Analiza koszykowa]],​ wyznacz wszystkie //​1-zbiory//​ i policz dla nich //​support//​.\\
 +Przyjmując,​ że //support progowy// jest równy 50%, wyznacz 1-zbiór częsty. ​
 +
 +
 +==== Algorytm Apriori [10 minut] ====
 +Na zasadzie opisanej powyżej działa najpopularniejszy algorytm wyszukujący reguły asocjacyjne - algorytm Apriori.
 +Wykonuje on następujące krok:
 +  - znajdź wszystkie 1-zbiory (//​1-itemsets//​)
 +  - znajdź pośród wygenerowanych //​1-zbiorów//,​ //częste 1-zbiory// (//frequent 1-itemsets//​ $L_1$) - czyli takie, których support jest $\geq \epsilon$
 +  - bazując na $L_1$ wygeneruj //​2-zbiory//​ (//​2-itemsets//​)
 +  - znajdź pośród wygenerowanych //​2-zbiorów//,​ //częste 2-zbiory// $L_2$
 +  - Powtarzaj proces, do momentu aż ostatni wygenerowany zbiór $L_{k-1}=\o$
 +
 +Poniżej znajduje się bardziej formalny opis algorytmu:
 +
 +$$\begin{align}
 +& \mathrm{Apriori}(T,​\epsilon)\\
 +&\qquad L_1 \gets \{ \mathrm{1-item sets} \} \\
 +&\qquad k \gets 2\\
 +&​\qquad\qquad \mathrm{\textbf{while}}~ L_{k-1} \neq \ \emptyset \\
 +&​\qquad\qquad\qquad C_k \gets \{ a \cup \{b\} \mid a \in L_{k-1} \land b \in \bigcup L_{k-1} \land b \not \in a \}\\
 +&​\qquad\qquad\qquad L_k \gets \{ c \mid c \in C_k \land ~ \mathit{support}[c] \geq \epsilon \}\\
 +&​\qquad\qquad\qquad k \gets k+1\\
 +&​\qquad\qquad \mathrm{\textbf{return}}~\bigcup_k L_k
 +\end{align}$$
 +
 +Dla ułatwienia,​ poniżej znajduje się rysunek pokazujący jak powinien działać algorytm na danych z tabeli na początku sekcji [[#​dane|Analiza koszykowa]]((A - Ananas, B - Banan, C - Chleb, D - Drożdże, E - Eukaliptus))\\
 +**Uwaga 1:** Na rysunku nie są przedstawione wszystkie //k-zbiory częste//​.\\
 +**Uwaga 2:** Algorytm przedstawiony na rysunku poniżej zawiera pewną optymalizację polegająca na obserwacji, że zbiór 3-elementowy nie może być częsty jeśli zawiera w sobie zbiór dwuelementowy,​ który nie jest częsty.
 +
 +{{.:​apriori.png?​500|}}
 +
 +
 +=== Apriori i Weka ===
 +
 +Weka zawiera implementację algorytmu Apriori, którą teraz przetestujemy na następującym zestawie transakcji:
 +
 +^ Paragon ^ Zakupy ^
 +| 1 | A,B,C,D,G,H |
 +| 2 | A,​B,​C,​D,​E,​F,​H |
 +| 3 | B,C,D,E,H |
 +| 4 | B,E,G,H |
 +| 5 | A,B,D,E,G,H |
 +| 6 | A,C,F,G,H |
 +| 7 | B,D,E,G,H |
 +| 8 | A,C,D,E,G,H |
 +| 9 | B,C,D,E,H |
 +| 10 | A,C,E,F,H |
 +| 11 | C,E,H |
 +| 12 | A,D,E,F,H |
 +| 13 | B,C,E,F,H |
 +| 14 | A,B,C,F,H |
 +| 15 | A,B,E,F,H |
 +
 +**Zadania:​**
 +  - Na początek należy przygotować odpowiedni plik Weki
 +    - jak myślisz, w jaki sposób najlepiej zakodować informacje?
 +    - możesz wzorować się na plikach z poprzedniego laboratorium {{:​pl:​dydaktyka:​psi:​data.tar.gz}}
 +    - Możesz skorzystać z gotowego pliku umieszczonego tutaj: {{:​pl:​dydaktyka:​psi:​apriori-zakupy.arff.zip}}
 +  - Wczytaj plik do Weki, przejdź do zakładki **Associate** i uruchom algorytm z domyślnymi ustawieniami. Jakie wyniki się pojawiły?
 +  - Pobaw się ustawieniami algorytmu (aby wejść w ustawienia kliknij w wiersz z nazwą algorytmu i jego parametrami):​ Czy wiesz jak wyświetlić informację o znalezionych //​k-zbiorach//?​ Czy wiesz jak zmienić oczekiwany poziom //​supportu//​ i //​confidence//?​ Czy rozumiesz pozostałe parametry? Sprawdź jak one wpływają na otrzymywane wyniki.
 +
 +
 +==== Duży przykład [15 minut] ====
 +
 +W zestawie danych {{:​pl:​dydaktyka:​psi:​data.tar.gz}} znajduje się plik ''​supermarket.arff''​ -- zawiera informacje o prawdziwych zakupach z jednego z supermarketów w Nowej Zelandii. Otwórz go w Wece i odpowiedz na następujące **pytania**:​
 +  - Ile jest atrybutów i co one reprezentują?​
 +  - Ile jest instancji i co one reprezentują?​
 +  - W zakładce **Preprocess** kliknij **Edit...** i przyjrzyj się danym:​ jakie wartości przyjmują atrybuty? Czy wszystkie wartości są uzupełnione?​
 +  - Jakie są 3 produkty najczęściej kupowane w tym sklepie? Jak to sprawdzić w zakładce **Preprocess**,​ a jak to sprawdzić za pomocą algorytmu **Apriori** wbudowanego w Wekę?
 +  - Uruchom algorytm Apriori przy domyślnych ustawieniach. Następnie uruchom algorytm Apriori przy domyślnych ustawieniach dla tego samego zbioru danych, w którym zamiast brakujących wartości są wartości ''​n'':​ {{.:​supermarket-nonmiss.arff.zip|}}. Porównaj otrzymane wyniki.
 +  - Następnie zrób takie samo porównanie dla danych z tabeli w sekcji [[#​apriori_i_weka|Apriori i Weka]]. Jeden plik został przygotowany przez Ciebie już wcześniej - do porównania należy przygotować jeszcze drugi plik tak, aby jeden z nich zawierał wartości nie/fałsz, a drugi nieokreślone. Porównaj otrzymane wyniki.
 +  - Po zapoznaniu się z wynikami, podaj co najmniej jeden argument za stosowaniem wartości nieokreślonej i co najmniej jeden za stosowaniem wartości nie/fałsz.
 +
 +
 +**Pytania:​**
 +  - W ramach laboratorium rozważaliśmy tworzenie reguł asocjacyjnych w analizie koszykowej, czyli ustalaliśmy jakie produkty są ze sobą najczęściej łączone w trakcie zakupów. Do czego może się przydać taka wiedza? Wymyśl dwa zastosowania.
 +  - Do czego innego może przydać się tworzenie reguł asocjacyjnych?​ Wymyśl dwa problemy / pytania (niezwiązane z zakupami), na które można znaleźć dzięki nim odpowiedź.
 +
 +===== - Klasteryzacja =====
 +
 +//​Klasteryzacja to przykład klasyfikacji. Podobnie jak w drzewach decyzyjnych z poprzedniego laboratorium,​ podejmujemy decyzję o określeniu przynależności elementu do jednej z grup. Tutaj jednak nie mamy z góry określonych kategorii, a są one tworzone na podstawie dostępnego zbioru danych uczących.//​
 +
 +//Istnieją różne rodzaje klastrów://​
 +  - //Klastry rozłączne (np. algorytm K-Means/​X-Means w dalszej części laboratorium)://​ \\ {{.:​clusters-disjoint.png?​300|}}
 +  - //Klastry nachodzące na siebie (np. algorytm EM w dalszej części laboratorium)://​ \\ {{.:​clusters-overlap.png?​300|}}
 +  - //Klastry probabilistyczne (np. algorytm EM w dalszej części laboratorium)://​ \\ {{.:​clusters-prob.png?​300|}}
 +  - //Klastry hierarchiczne://​ \\ {{.:​clusters-hierarchy.png?​300|}}
 +
 +==== Algorytm K-Means [20 minut] ====
 +
 +Algorytm K-Means to prosty algorytm bez nauczyciela dzielący zbiór uczący na K klastrów zawierających podobne elementy (podobieństwo jest tutaj określone jako bliskość w przestrzeni elementów). Każdy z klastrów reprezentowany jest przez punkt (centroid) określający położenie środka klastra. Wyznaczanie centroidów przebiega zgodnie z następującymi krokami:
 +  - Wylosuj K punktów (centroidów) w przestrzeni elementów.
 +  - Oblicz odległość każdego z elementów od centroidów i przypisz ten element do najbliższego z nich.
 +  - Zaktualizuj położenie każdego centroidu ustawiając go jako średnią wszystkich punktów, które są do niego przypisane.
 +  - Powtarzaj kroki 2-3 aż do uzyskania zbieżności (przesunięcie centroidów w kroku 3 będzie mniejsze od ustalonego progu).
 +
 +Nie ma tutaj zewnętrznego nauczyciela,​ wobec tego należy przyjąć inną strategię oceny poprawności rozwiązania -- jedną z najprostszych możliwości jest tutaj policzenie sumy kwadratów odległości pomiędzy elementami i ich centroidami. W ten sposób promowane są rozwiązania,​ w których odległości są mniejsze,​ a co za tym idzie -- elementy rzeczywiście są (względnie) blisko siebie.
 +
 +Działanie algorytmu zaobserwuj w praktyce przy użyciu narzędzia [[http://​krzysztof.kutt.pl/​didactics/​psi/​kmeans/​]]. Dokonaj klasteryzacji kilka razy (//​losowanie nowych danych za pomocą ''​New points'',​ losowanie nowych centroidów za pomocą ''​New centroids'',​ kolejne kroki za pomocą przycisku ''​Find closest centroid''/''​Update centroid''//​) w różnych warunkach:
 +  * ilość centroidów = ilość klastrów\\ ilość centroidów < ilość klastrów\\ ilość centroidów > ilość klastrów
 +  * dane zgrupowane (suwak w lewej połowie)\\ dane losowe (suwak w prawej połowie)
 +
 +**Pytania:​**
 +  * Jak szybko algorytm osiąga zbieżność?​
 +  * Jak algorytm działa w przypadku losowych danych?
 +  * Co dzieje się w sytuacji gdy ilość centroidów nie zgadza się z ilością klastrów ukrytych w danych?
 +  * Jaka jest skuteczność tego algorytmu w wykrywaniu klastrów ukrytych w danych? Jeżeli dane układają się w n klastrów i zadajemy n centroidów to czy zawsze udaje się dobrze dopasować dane? Porównaj poniższe dwa rysunki: \\ {{.:​kmeans-ex1.png?​400|}} ​ {{.:​kmeans-ex2.png?​400|}}
 +
 +
 +<WRAP center round tip 60%>
 +Jeżeli chcesz się jeszcze pobawić algorytmem K-Means, możesz skorzystać z apletu [[http://​www.naftaliharris.com/​blog/​visualizing-k-means-clustering/​|]],​ który pozwala między innymi na ręczne zaznaczanie początkowych położeń centroidów. Have fun :-)
 +</​WRAP>​
 +
 +
 +=== K-Means i Weka ===
 +
 +Otwórz w Wece plik ''​iris.arff''​ z zestawu danych {{:​pl:​dydaktyka:​psi:​data.tar.gz|}}. Wykorzystywaliśmy już ten plik na poprzednim laboratorium - opisuje on parametry kwiatów należących do trzech gatunków Irysów: \\ {{.:​weka-iris-imgs.png?​700|}} \\
 +**Zadania:​**
 +  - Przypomnij sobie jak zbudowany jest ten plik: ile jest atrybutów, jakich są typów, ile jest instancji. Zapoznaj się z budową zboru uczącego: kliknij ''​Edit...''​ w zakładce **Preprocess**. Zauważ, że dane są podzielone względem klas: najpierw 50 instancji jednej klasy, następnie 50 instancji drugiej i na końcu 50 instancji trzeciej klasy.
 +  - Przejdź na zakładkę **Visualize** i zapoznaj się z rozkładem danych:
 +    * Są to trójwymiarowe wykresy bazujące na trzech wybranych atrybutach ze zbioru danych: oś X, oś Y i różne kolory - upewnij się, że kolorem oznaczony jest atrybut class (domyślnie).
 +    * Kliknięcie na wykres pozwala na jego powiększenie (na powiększeniu można manipulować atrybutami położonymi na osiach).
 +  - Wyobraź sobie sytuację, w której znika atrybut ''​class''​ (znikają kolory) -- czy jesteś w stanie ponownie pogrupować te dane w pierwotne klasy?
 +  - Spróbujmy to zrobić za pomocą algorytmu K-Means zaimplementowanego w Wece:
 +    - Przejdź do zakładki **Cluster**.
 +    - Zostaw domyślną wartość ''​Cluster mode''​ = ''​Use training set''​
 +    - Wybierz algorytm **SimpleKMeans**,​ w ustawieniach zmień liczbę klastrów na 3 i uruchom go.
 +    - Zapoznaj się z wynikami:
 +      * Z wyświetlonym raportem
 +      * Z wizualizacją:​ kliknij prawym na wynik klasteryzacji w ''​Result list''​ i z menu wybierz ''​Visualize cluster assignments''​
 +      * Przede wszystkim zapoznaj się z wizualizacją:​ X = Class, Y = Cluster. Możesz jeszcze pobawić się suwakiem ''​Jitter'',​ który rozrzuca dane (bo wiele punktów znajduje się w tym samym miejscu).
 +      * Czy dane zostały poprawnie zaklasyfikowane?​ Jaki błąd popełniliśmy?​
 +  - Spróbujmy to zrobić po raz kolejny:
 +    - Kliknij przycisk ''​Ignore attributes'',​ zaznacz odpowiedni atrybut (który?) i kliknij ''​Select''​. Uruchom ponownie klasteryzację.
 +    - Zapoznaj się z wynikami i porównaj je z uzyskanymi wcześniej. Jaka teraz była skuteczność klasyfikacji?​
 +    - Czy wiesz który z trzech gatunków Irysów został w 100% poprawnie zaklasyfikowany przez ten algorytm? Możesz to odczytać z wykresu wizualizującego wyniki klasyfikacji,​ jak również możesz w ''​Cluster mode''​ zaznaczyć opcję ''​Classes to clusters evaluation''​. Po wybraniu tej opcji i wyświetleniu wizualizacji możesz zobaczyć na wykresie krzyżyki (poprawne trafienia) i kwadraty (niepoprawne klasyfikacje).
 +  - Przeprowadź klasteryzację po raz trzeci. Tym razem nie zmieniaj żadnych ustawień. Czy pojawiły się dokładnie takie same wyniki?
 +    * Jak to było wcześniej powiedziane,​ algorytm K-Means losuje początkowe położenie centroidów,​ więc wyniki powinny się od siebie różnić. Tutaj jednak są takie same...
 +    * W jaki sposób sprawić aby wylosowały się inne wyniki?
 +
 +==== Inne algorytmy klasteryzacji [10 minut] ====
 +
 +=== Algorytm X-Means ===
 +
 +Algorytm K-Means jest bardzo popularny, ale ma kilka wad, m.in. nie jest w pełni automatyczny -- użytkownik musi samodzielnie określić liczbę klastrów. Co jednak w sytuacji kiedy nie chcemy albo nie możemy tego zrobić (po prostu nie wiemy ile takich klastrów będzie)? Przygotowane zostało rozszerzenie algorytmu K-Means o m.in. automatyczne wyznaczanie ilości klastrów (w przedziale określonym przez użytkownika). Algorytm ten to X-Means i działa on wykonując następujące kroki:
 +  - Rozpoczęcie algorytmu z najmniejszym dozwolonym przez użytkownika K.
 +  - Ulepszanie parametrów -- wykonywanie algorytmu K-Means dla aktualnego K aż do uzyskania zbieżności.
 +  - Ulepszanie struktury -- podzielenie wybranego centroidu na dwa centroidy i wykonanie kroku 2 aż do uzyskania zbieżności. Jeżeli wynik jest lepszy (zgodnie z przyjętą metryką) to go akceptujemy i zwiększamy K o 1. Jeśli nie -- próbujemy podzielić inny centroid.
 +  - Wykonujemy kroki 2-3 aż do momentu kiedy podział nie ulepsza rozwiązania / K osiągnie maksymalną dozwoloną wartość.
 +
 +**Zadania:​**
 +  - Wczytaj ponownie plik ''​iris.arff''​ do Weki.
 +  - W zakładce **Cluster** wybierz algorytm ''​XMeans''​ i uruchom go na domyślnych ustawieniach.
 +    * Algorytm XMeans operuje tylko i wyłącznie na atrybutach numerycznych. Dlatego aby go włączyć należy: (a) albo w ''​Ignore attributes''​ wybrać ''​class'',​ (b) albo wybrać opcję ''​Classes to clusters evalutaion''​.
 +  - Zapoznaj się z otrzymanymi wynikami:
 +    * Ile klastrów pojawiło się w wynikowym modelu?
 +    * Przeanalizuj wizualizację wyników.
 +    * Porównaj otrzymane wyniki z wynikami z K-Means.
 +  - Zapoznaj się z dostępnymi opcjami i ich znaczeniem. Poeksperymentuj z różnymi ustawieniami.
 +
 +
 +=== Algorytm EM ===
 +
 +Algorytmy K-Means i X-Means jednoznacznie dzielą przestrzeń przykładów na odpowiednią liczbę klastrów. Każdy z klastrów reprezentowany jest przez położenie centroidu, a element należy do tego klastru, którego centroid znajduje się najbliżej.
 +
 +W algorytmie EM (Expectation-Maximization) klastry reprezentowane są przez średnie (będące odpowiednikami centroidów) oraz odchylenia standardowe. Dzięki temu możliwe jest określenie prawdopodobieństwa przynależności elementu do każdego klastru i wybranie tego o największej wartości (nie jest to więc "​sztywny"​ jednoznaczny podział jak w K-Means tylko "​miękki"​).
 +
 +Działanie algorytmu może być różne w zależności od implementacji,​ ale w ogólnym wypadku wygląda analogicznie jak w przypadku algorytmu K-Means i zostało zobrazowane na poniższym gifie: \\ {{.:​em_cluster_wikipedia.gif|}}
 +
 +**Zadania:​**
 +  - Wczytaj ponownie plik ''​iris.arff''​ do Weki.
 +  - W zakładce **Cluster** wybierz algorytm ''​EM''​ i uruchom go na domyślnych ustawieniach.
 +  - Zapoznaj się z otrzymanymi wynikami:
 +    * Ile klastrów pojawiło się w wynikowym modelu? Na domyślnych ustawieniach algorytm EM sam ustala optymalną liczbę klastrów - czy wiesz jak to zmienić?
 +    * Przeanalizuj wizualizację wyników.
 +    * Porównaj otrzymane wyniki z wynikami z K-Means i X-Means.
 +  - Zapoznaj się z dostępnymi opcjami i ich znaczeniem. Poeksperymentuj z różnymi ustawieniami.
 +
 +===== - Poprawność klasyfikacji [10 minut] =====
 +**Pytania:​**
 +  - Załaduj plik ''​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? ​
 +  - Wybierz trzy inne klasyfikatory i je wypróbuj. 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
 +
 +
 +
 +===== - Większy zbiór danych [10 minut] (o ile wystarczy czasu) =====
 +
 +Wybierz jeden zbiór danych:
 +  * {{.:​wine.arff.zip|}} -- dane dotyczące win otrzymywanych w jednym regionie Włoch z trzech różnych odmian winorośli (13 atrybutów, 178 instancji, 3 klastry)
 +  * {{.:​vehicle.arff.zip|}} -- parametry pojazdów wyciągnięte ze zrobionych zdjęć (18 atrybutów, 846 instancji, 4 klastry)
 +  * {{.:​spambase.arff.zip|}} -- dane opisujące wiadomości e-mail z klasyfikacją spam/nie spam (57 atrybutów, 4 601 instancji, 2 klastry)
 +  * {{.:​letter.arff.zip|}} -- parametry opisujące wielkie litery napisane różnymi czcionkami (16 atrybutów, 20 000 instancji, 26 klastrów)
 +Ściągnij go i pobaw się nim z użyciem metod, które pojawiły się na aktualnym i poprzednim laboratorium,​ np.:
 +  * sprawdź skuteczność klasteryzacji,​
 +  * poszukaj ukrytych zależności między różnymi parametrami (z wykorzystaniem reguł asocjacyjnych),​
 +  * ustal czy da się stworzyć dobre drzewo decyzyjne dla danego przykładu,
 +  * spróbuj wyznaczyć model liniowy, który najlepiej opisuje zadany problem.
 +
 +[[https://​xkcd.com/​1838/​|{{https://​imgs.xkcd.com/​comics/​machine_learning.png}}]]
 +===== Chcesz wiedzieć więcej? =====
 +
 +  * [[http://​en.wikipedia.org/​wiki/​K-means%2B%2B|K-Means++]] -- inne ulepszenie algorytmu K-Means niż przedstawione X-Means
 +
 +{{section>​lab_ml-supervised#​machine_learning_ogolnie}}
pl/dydaktyka/psi/labs/lab_ml-unsupervised.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0