Java Bayes Tutorial

Tomasz Nazar
01.12.2003
Temat
Tutorial programu do obsługi Sieci Bayesowskich.
Dokument ten został stworzony na zaliczenie przedmiotu Sztuczna inteligencja.
Program
Wybrany program to: JavaBayes

Autor JavaBayes:

    Fabio Gagliardi Cozman

    PhD, Robotics Institute, Carnegie Mellon University.
    
Spis treści
O tutorialu, programie, przykłady.
W poniższym tekście mowa będzie o programie JavaBayes służącym do obługi sieci Bayesowskich (sieci przekonań). Program jest stosunkowo prosty w obsłudze. Napisany jest w języku Java. Może być uruchomiony jako normalna aplikacja lub aplet uruchomiony z oknie przeglądarki
W dystrybucji programu JavaBayes umieszczone są przykładowe sieci. Znajdują się one w katalogu Examples.
W poniższym tutorialu wykorzystywany jest jedynie jeden przykład: DogProblem

Czytając niniejszy tutorial i podążając za instrukcjami tu podawanymi można mieć uruchomiony program i wykonywać opisywane tu czynności bezpośrednio w JavaBayes.
[Patrz: Instalacja programu]

Sieci Bayesowskie (ogólnie)
Bardzo dobry wstęp do sieci autorstwa dr Witolda Paluszyńskiego.
Przykład sieci: Dog problem

Rozważmy popularną sieć. Sieć opisuje prostą sytuację opisującą problemy psa domowego. (plik w formacie XML)

Przypuśćmy, że wracamy do domu i chcemy wiedzieć jakie jest prawdopodobieństwo tego, że światła będą włączone oraz pies szczeka nie mając żadnych problemów żołądkowych. Jeśli rodzina jest poza domem, często światła pozostały włączone (to, chyba przed złodziejami). Pies zwykle jest na podwórku właśnie wtedy gdy nie ma rodziny w domu lub gdy ma problemy żołądkowe. Na dodatek, gdy pies jest na podwórku to najczęściej szczeka.
Sieć Bayesowska dla tego przykładu podana jest na rysunku. (skróty wyjaśnione są poniżej w tabeli).

DogProblem


[Fig 1 - Dog problem]
Tak wygląda powyższa sieć w programie JavaBayes

Poniżej mamy tabelę, która precyzuje prawdopodobieństwo poszczególnych zdarzeń warunkowych oraz ich dopełnień (dopełnienie zmiennej będziemy symbolizowali literką d).

NazwaWartość1-Wartość
p(f) 0.15 0.85
p(b) 0.01 0.99
p(l|f) 0.60 0.40
p(l|fd) 0.05 0.95
p(d|f,b) 0.99 0.01
p(d|f,bd) 0.90 0.10
p(d|fd,b) 0.97 0.03
p(d|fd,bd) 0.30 0.70
p(h|d) 0.70 0.30
p(h|dd) 0.01 0.99
SkrótZmienna
frodzina poza domem (family-out)
bproblem żołądkowy (bowel-problem)
lświatła włączone (lights-on)
dpies poza domem (dog-out)
hsłychać szczekanie (hear-bark)

Część graficzna programu

Zostawmy na chwilkę sieć DogProblem i przedstawmy krótko sam program JavaBayes.

GUI
Po uruchomieniu programu ukazują się dwa okna. Pokazane one są poniżej.
1. Okno edycji sieci (z załadowaną siecią Dog Problem)
okno 1
2. Okno z komunikatami i ustawieniami
okno 2
Tryby pracy
Od momentu załadowania sieci do programu, interakcja z siecią następuje w oknie edycyjnym programu, a rezulaty pojawiają się w oknie z komunikatami.

Okno edycyjne może być w jednym z kilku trybów. Każdy z przycisków w tym oknie odpowiada za inny tryb (stan), w którym pracujemy.

Te tryby to:

Naciśnięcie każdego z 7 przycisków powoduje wejście w tryb. W takim trybie przyciski myszy (lewy, prawy) są interpretowane w specjalny sposób. (najlepiej się o tym przekonać, klikając samemu)

Modelowanie sieci

Ładowanie, zapisywanie sieci

Istnieją 3 różne sposoby na operowanie sieciami bayesowskimi w programie:

Patrz: Formaty Sieci Bayesowskich

Tworzenie sieci od podstaw

W celu stworzenia sieci:

  1. tworzymy nowe węzły
    1. wchodzimy w tryb Create
    2. tworzymy zmienne kliknięciem myszy
    3. wchodzimy w tryb edycji zmiennej edit variable
  2. łączymy węzły, przeciągając ojca do syna
Edycja zmiennych

Teraz, gdy już potrafimy stworzyć własną sieć oraz załadować sieć istniejącą, możemy spróbować edytować sieć.

W celu edycji zmiennej (np: dog-out):

  1. wchodzimy w tryb Edit-variable
  2. klikamy myszą interesującą nas zmienną
  3. otworzy nam się oknko edycyjne danej zmiennej:
    Edit_variable
    [Fig. X - Edycja zmiennej dog_out
  4. w oknie możemy:
    • zmienić nazwę zmiennej
    • podać i nazwać zbiór jej wartości

W celu podania rozkładu prawdopodobieństwa tej zmiennej, wchodzimy w tryb Edit-function. Tu pokazuje się nam okno z wartościami zmiennej, w którym wypełniamy te wartości.

Edit_function-family_out
[Fig. X - Edycja zmiennej losowej family_out

Edit_function-dog_out
[Fig. X - Edycja zmiennej losowej dog-out

Praca z Sieciami Bayesowskimi

Przypuśćmy, że chcemy zbadać prawdopodobieństwo zdarzenia:

p(light_on|hear_bark, not-bowel_problem),
czyli "światło włączone, pies szczeka i nie jest chory".
Ustawiamy zmienne

Program JavaBayes umożliwia nam zbadanie takiego prawdopodobieństwa. Aby to zrobić, należy ustawić zmienną "hear-bark" na true, a zmienną "bowel-problem" na false, a następnie w trybie Observe kliknąć na zmienną "light-on". W oknkie z komunikatami pokażą się interesujące nas wartości.

Aby to zrobić, należy:

  1. wejść w tryb Observe.
  2. kliknąć na interesującą nas zmienną
  3. wybrać, czy chcemy, aby zdarzenie występowało (true) lub nie (false)

Observe2
[Fig. X - Tak ustawiamy zmienną do "obserwacji"]

"Pytamy" sieć
Sieć Bayesowską "pytamy", wchodząc w tryb Query, a następnie klikamy na interesującą nas zmienną. W oknie z komunikatami wyświetlają się interesujące nas dane.

Observe
[Fig. X - Przykładowy wydruk po zapytaniu]

Podsumowanie
W powyższym tekście zostały omówione podstawowe funkcje programu JavaBayes. Zostały one omówione na prostym przykładzie. W dystrybucji programu znajdują się również dodatkowe przykłady.

Na podstawie przedstawionych tu informacji, czytelnik powinien poradzić sobie z typowymi zadaniami związanymi z zapytaniami do sieci Bayesowskich.

Akceptowane formaty
Instalacja
W celu uruchomienia programu należy spełnić poniższe wymagania:
  1. pobrać plik z programem JavaBayes (poniższy lub ze strony domowej autora)
  2. rozpakować (Tar, Gzip) (tar xfvz javaBayes.tgz)
  3. cd javaBayes/
  4. java JavaBayes
Uruchamianie programu jako Applet
Program JavaBayes jest napisany tak, że może być uruchamiany bezpośrednio z tej strony.

UWAGA. Z powodu ograniczeń JVM, nie można ładować plików lokalnych. Ale, można ładować pliki zdalne (na podstawie URL).
Należy skorzystać z menu: File -> Open URL.. i wpisać poniższy adres: http://www.ii.uni.wroc.pl/~nthx/school/ai/javabayes/app/Examples/DogProblem/dog-problem.xml

Jeśli masz problemy z uruchomieniem apletu, pomocna może się okazać lektura: http://java.sun.com/products/plugin/

Linki

Strona domowa JavaBayes
http://www.cs.cmu.edu/~javabayes
Lokalne archiwum programu (program + przykłady)
javaBayes.tgz
Sieci przekonań, dr Witold Paluszyński
http://sequoia.ict.pwr.wroc.pl/~witold/aiuwr/beliefnet_s.pdf

Designed with CSS Valid HTML 4.01! Created with GIMP