W tej rundzie poznajemy meta-metody uczenia maszynowego. Dowiadujemy się, czy bezpośrednia demokracja (Voting) jest lepsza niż demokracja sterowana (Stacking) i dowiadujemy się, jak zastosować klasyfikator binarny do klasyfikacji danych zawierających więcej niż dwie klasy. A przede wszystkim uczymy się oszczędzać sobie czas wykonując setki eksperymentów za jednym pociągnięciem myszki.

Rapid Miner

  • Uruchom narzędzie Rapid Miner 6.5
  • Utwórz przepływ ilustrujący metodę Bagging. W tym celu załaduj zbiór mushroom.csv (opis: mushroom.arff) i prześlij do operatora Set Role, wskazując atrybut class jako zmienną celu. Następnie prześlij zbiór danych do operatora Split data w celu podzielenia zbioru na dwie partycje w proporcji 70%-30%. Prześlij większą część zbioru uczącego do operatora Bagging. Wykonaj 10 iteracji uczenia drzewa decyzyjnego (użyj miary Gini index), wykorzystując w każdej iteracji 90% danych jako zbiór uczący. Model wynikowy wyślij do operatora Apply Model a jako zbiór testowy wykorzystaj owe 30% oryginalnych danych które nie było wykorzystywane do uczenia klasyfikatora. Wykorzystaj operator Performance do znalezienia dokładności klasyfikatora końcowego. Sprawdź, jaki wpływ na dokładność klasyfikacji ma zmieniająca się liczba iteracji (tj. niezależnie budowanych modeli).
  • Utwórz przepływ wykonujący algorytm AdaBoost. Pobierz zbiór danych nursery.csv (opis: nursery.arff) i za pomocą operatora Set Role wskaż atrybut class jako zmienną decyzyjną. Prześlij zbiór danych do operatora Split Validation pozostawiając domyślne parametry tego operatora. W fazie uczenia operatora Split Validation umieść meta-operator AdaBoost, a wewnątrz tego operatora umieść naiwny klasyfikator Bayesa. W fazie testowania operatora Split Validation umieść tradycyjnie operatory Apply Model oraz Performance w celu określenia dokładności klasyfikacji. Porównaj uzyskany wynik z sytuacją w której zamiast operatora AdaBoost wykorzystujesz bezpośrednio naiwny klasyfikator Bayesa. Powtórz ten sam eksperyment wykorzystując tym razem jako klasyfikator operator Rule Induction. Czy procedura adaptive boosting w tym przypadku polepszyła dokładność klasyfikacji?
  • Pobierz zbiór danych breast-cancer.csv (opis: breast-cancer.arff), zmienną decyzyjną jest Class. Utwórz przepływ realizujący proste głosowanie. Wyślij dane do operatora Split Data i podziel je w proporcji 70%-30%. Większy zbiór prześlij do operatora Vote, wewnątrz którego umieść klasyfikatory Rule Induction, Naive Bayes Classifier oraz Decision Tree. Model wynikowy wyślij do operatora Apply Model a jako zbiór testowy wykorzystaj dane nieużyte do uczenia klasyfikatorów. Jaka jest dokładność takiego klasyfikatora? Czy jest on lepszy niż indywidualne klasyfikatory? Twój ostateczny przepływ powinien wyglądać tak:

vote.png

  • Zamień głosowanie na operator Stacking, umieszczając w fazie Stacking Model Learner operator Rule Induction, oraz zamieniając naiwny klasyfikator Bayesa na operator CHAID. Uruchom przepływ i obejrzyj modele bazowe.
  • W ostatnim przykładzie postaramy się przeszukać przestrzeń parametrów w celu znalezienia optymalnych wartości. Pobierz ponownie zbiór letter.csv (opis: letter.arff) i prześlij go do operatora Optimize Parameter (Grid). Wewnątrz operatora umieść operator Split-Validation zawierający w fazie uczenia operator Neural Net, a w fazie testowania tradycyjną kombinację operatorów Apply Model i Performance (Classification). Port wyjściowy ave operatora Validation prześlij do operatora Log i zapisz pod dowolną nazwą na dysku. W konfiguracji operatora Log zaznacz zapisywanie dokładności (wartość z operatora Performance), momentu (parametr z operatora Neural Net) i tempa uczenia (parametr z operatora Neural Net). Konfiguracja operatora Log powinna wyglądać następująco:

log-config.png

  • Wróć do konfiguracji operatora Optimize Parameter (Grid). Kliknij przycisk Edit Parameter Settings i z listy dostępnych operatorów wybierz operator Neural Net, a następnie wybierz dwa parametry operatora: learning_rate i momentum. Przenieś oba parametry do panelu Selected Parameters. Zaznacz parametr learning_rate i wskaż, że powinien się zmieniać od 0 do 1 w 4 krokach. Analogicznie, skonfiguruj parametr momentum aby się zmieniał od 0 do 1 w 4 krokach (w obu przypadkach zwiększanie wartości parametru w każdym kroku powinno być liniowe). Liczbę cykli uczenia sieci neuronowej ustaw kolejno na 5, 10 i 15. Okno konfiguracji operatora Optimize Parameter (Grid) powinno wyglądać następująco:

optimize-settings.png

  • Przejdź jeszcze do konfiguracji operatora Neural Net i zmniejsz liczbę rund uczenia sieci do 5. Wyłącz także normalizację i mieszanie danych wejściowych. Uruchom przepływ a następnie skorzystaj z wizualizacji Surface 3D w celu obejrzenia wyników.

Zadanie samodzielne

Pobierz zbior danych onehr.csv reprezentujący dane dotyczące stanu powłoki ozonowej. Zapoznaj się z opisem danych. Wykorzystując automatyczną optymalizację przestrzeni parametrów postaraj się uzyskać najwyższą możliwą dokładność klasyfikatora (accuracy). Możesz posłużyć się dowolnym klasyfikatorem.

Manuskrypty i księgi

manuscript