Naiwny klasyfikator Bayesa

W trakcie laboratorium uczymy się wygrywać w telewizyjnych teleturniejach, zgadywać do jakiej gromady należą nietoperze, ale też poznajemy naiwny klasyfikator Bayesa i sprawdzamy, jak ten model klasyfikatora zachowuje się na wybranych zbiorach danych.

dla zapominalskich

$$P(h|D) = \frac{P(D|h)P(h)}{P(D|h)P(h)+P(D|-h)P(-h)}$$

Przećwiczmy co to znaczy na przykładzie.

nazwa narodziny ssie mleko? liczba nóg czy lata? gromada
mysz żywe tak 4 nie ssaki
lew żywe tak 4 nie ssaki
wieloryb żywe tak 2 nie ssaki
kiwi jajo nie 2 nie ptaki
orzeł jajo nie 2 tak ptaki
bocian jajo nie 2 tak ptaki
nietoperz żywe tak 2 tak ???
Rapid Miner
  • Uruchom narzędzie Rapid Miner 5
  • Pobierz plik danych zoo.arff
  • Utwórz przepływ realizujący najprostsze zadanie klasyfikacji przy wykorzystaniu naiwnego klasyfikatora Bayesa. W tym celu wykorzystaj operator Read ARFF do załadowania zbioru danych, a następnie przekaż zbiór danych do operatora Set Role, w którym wskaż atrybut type jako pełniący rolę zmiennej celu (ang. label). Dodatkowo, atrybut animal wskaż jako atrybut pełniący rolę identyfikatora. Tak zmodyfikowany zbiór danych prześlij do operatora Naive Bayes i uruchom przepływ.
  • Przełącz się na widok Plot View i obejrzyj rozkłady wartości zmiennej celu względem atrybutu feathers lub fins. Porównaj te rozkłady z rozkładami wzlgędem zmiennej predator. Obejrzyj też rozkłady dla atrybutu numerycznego legs.
  • Przełącz się na widok Distribution Table. Jakie cechy są wspólne dla wszystkich ptaków?
  • Zamień operator klasyfikatora na operator X-Validation, w fazie uczenia tego operatora umieść właśnie operator naiwnego klasyfikatora Bayesa, a w fazie testowania następujące po sobie operatory Apply Model i Performance (Classification). Twój przepływ powinien wyglądać tak:

  • Wstaw do fazy uczenia operatora X-Validation drugi operator realizujący model klasyfikatora bazującego na indukcji reguł (operator Rule Induction). Wyłącz operator Naive Bayes Classifier (z menu kontekstowego operatora wybierz opcję Enable Operator) i w jego miejsce wstaw operator indukcji reguł. Porównaj dokładność naiwnego klasyfikatora Bayesa i dokładność uzyskaną przez algorytm indukcji reguł.
  • Wprowadź do przepływu szum informacyjny zmieniając losowo 20% etykiet zwierząt. Ponownie porównaj wyniki uzyskiwane przez oba modele klasyfikacji.
Orange Data Mining

titanic.jpg

  • Uruchom narzędzie Orange Data Mining i załaduj zbiór danych Titanic. Obejrzyj dane przy pomocy operatora Data Table. Możesz także posłużyć się operatorem Statistics do zapoznania się z histogramami dla poszczególnych atrybutów.
  • Użyj operatora Data Sampler do podzielenia zbioru na dwie części: 70% danych trafi do zbioru uczącego (ang. train set), a 30% danych stanowić będzie zbiór testujący (ang. test set)
  • Prześlij zbiór uczący do operatora Naive Bayes. Uzyskany model prześlij do operatora Nomogram w celu obejrzenia wyników.
  • Posłuż się operatorem Predictions do wykonania predykcji na zbiorze testującym. Twój ostateczny przepływ powinien wyglądać tak:

  • Czy na podstawie poprzedniego przepływu możesz oszacować dokładność klasyfikatora?
  • Usuń operator próbkujący dane i prześlij całość danych do operatora Test Learners. Drugim parametrem wejściowym operatora jest konkretny algorytm uczący, prześlij więc na wejście operatora Test Learners algorytm naiwnego klasyfikatora Bayesa. W ustawieniach operatora Test Learners zaznacz, że operator ma dokonać podziału na zbiór uczący i testujący w proporcji 70%-30%.
  • Obejrzyj wynik testu. Prześlij ten wynik do operatora Confusion Matrix i obejrzyj wynikową macierz pomyłek.
  • Zmień sposób walidacji klasyfikatora na 10-krotną walidację krzyżową. Czy ta zmiana spowodowała zmianę w macierzy pomyłek i ogólnej dokładności klasyfikatora?
  • Twój ostateczny przepływ powinien wyglądac tak:

 
pisbi-naiwny.klasyfikator.bayesa.txt · Last modified: 2015/05/22 13:59 by Mikołaj Morzy
 
Except where otherwise noted, content on this wiki is licensed under the following license:Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki