Zadanie z bayesowskich sieci przekonań

Zadanie polega na zbudowaniu bayesowskiej sieci decyzyjnej (Bayesian Decision Network, Influence Diagram) dla wybranego lub samodzielnie opracowanego zagadnienia, z wykorzystaniem jednego z dostępnych narzędzi wspierających ten model.

Kroki wykonania zadania:

Krok 1 - Wybór problemu

Znajdź jakieś zagadnienie, które można opisać siecią przekonań, do którego jesteś w stanie uzyskać wszystkie niezbędne prawdopodobieństwa. W dalszych etapach konieczne będzie również uwzględnienie pewnych prostych decyzji (wystarczy jeden węzeł decyzyjny) dla problemu, i użyteczności sytuacji opisywanych stworzonym modelem.

Wskazówki:

  1. Dane muszą być prawdziwe. Wymyślone dane dadzą się wykorzystać jedynie w bardzo prostych przykładach, i zwykle nie dają podstaw do przeprowadzania żadnych analiz.

  2. Z powyższego powodu zwykle dobrym zagadnieniem na potrzeby zadania będzie takie, do którego potrafimy pozyskać dane, czyli komplet prawdopodobieństw (bezwarunkowych i warunkowych).

    Dobrym źródłem danych są tabele statystycznych zbiorów przypadków jakiegoś zjawiska zawierające zestaw wartości atrybutów dla wielu instancji tego zjawiska. Taka tabela zwykle nie zawiera co prawda żadnych prawdopodobieństw, ale pozwala obliczyć zarówno pierwotne rozkłady prawdopodobieństw wszystkich atrybutów, traktowanych jako zmienne losowe, jak również warunkowe rozkłady prawdopodobieństwa dowolnego atrybutu w zależności od dowolnej grupy innych atrybutów. W tym celu jednak tabelka musi zawierać dużo danych (wierszy, czyli instancji).

  3. Dane, których należy użyć w tym ćwiczeniu powinny być statystyką jakiegoś zjawiska. Musimy wierzyć, że zbudowany model będzie poprawnie opisywał statystyczną próbkę ze zbioru, z którego został zbudowany.

    W szczególności należy uważać na podejrzanie regularne dane, jak np.:

    nr       atrybut_1    atrybut_2    atrybut_3
    1        true         low          low
    2        true         low          medium
    3        true         low          high
    4        true         medium       low
    5        true         medium       medium
    6        true         medium       high
    7        true         high         low
    8        true         high         medium
    9        true         high         high
    10       false        low          low
    ...
    

    Takie dane nie są statystyką i nie można z nich obliczać prawdopodobieństw.

  4. Zagadnienie powinno być, przynajmniej w większości, zrozumiałe. Przy korzystaniu ze znalezionych w internecie danych: medycznych, socjologicznych, demograficznych, meteorologicznych, itp., trzeba zwrócić uwagę, aby rozumieć zależności pomiędzy atrybutami opisowymi. Budowanie sieci przekonań polega właśnie na zapisaniu prawidłowych zależności przyczynowo-skutkowych pomiędzy atrybutami. Czasami można rozwiązać problem niezrozumiałych atrybutów przez pominięcie ich z zestawu danych, i wykorzystanie tylko tych lepiej zrozumiałych przez laika.

    Kluczowe pytanie: Co reprezentuje pojedynczy rekord ze zbioru?
    Odpowiedź na to pytanie powinna być jasna i zrozumiała, i powinna znaleźć się w raporcie z wykonania zadania.

  5. Dla potrzeb tego zadania sieć nie powinna być zbyt duża. Sieć licząca piętnaście albo więcej węzłów może być dobrym modelem zjawiska, i pozwalać na jego wielodniowe/wielotygodniowe badanie, ale trudno będzie dokładnie policzyć i zweryfikować wszystkie prawdopodobieństwa, jak również prawidłowość zbudowanego modelu, we wszystkich szczegółach. W tym zadaniu sieć powinna mieć 5-10 zmiennych losowych.

    UWAGA: wielkość i złożoność sieci musi być dopasowana do wielkości zbioru danych. Na przykład, jeśli w sieci wystąpią cztery zmienne losowe, z których jedna jest zależna od trzech pozostałych, i każda z tych zmiennych będzie miała np. po sześć wartości, to w definicji zmiennej zależnej wystąpi prawie 1300 wartości prawdopodobieństw warunkowych (osobnych przypadków), które trzeba wyliczyć z posiadanych danych. Inaczej mówiąc, posiadany zbiór danych podzieli się na 1300 podzbiorów, z których każdy musi być użyty do obliczenia jednego prawdopodobieństwa warunkowego. Jeśli oryginalny zbiór danych ma mniej niż 2600 rekordów to będzie to w ogóle niemożliwe. Ale nawet gdyby zawierał 10,000 rekordów to wyliczanie tych prawdopodobieństw, nawet jeśli możliwe, to jest mało sensowne. Jak poradzić sobie z tym problemem? Zbudować mniejszą i/lub mniej złożoną sieć. Mniej zmiennych, mniej zależności między nimi, mniejsze zbiory wartości. Gdyby w tej powyższej sieci zmienne miały tylko po dwie wartości, to zbiór danych liczący 1300 rekordów pozwala bezpiecznie wyliczyć potrzebne prawdopodobieństwa.

    (Zawsze jest możliwe, że na niektóre przypadki prawdopodobieństw warunkowych przypadnie zero próbek, albo choćby jedna lub dwie, co nadal nie pozwala skutecznie wyliczyć żadnego prawdopodobieństwa. Jednak takie przypadki odpowiadają niezwykle rzadkim lub niemożliwym zdarzeniom, i o ile tylko program poradzi sobie ze zbudowaniem sieci i jej obsługą, to nie wpłynie to na poprawność odpowiedzi dla normalnych przypadków.)

  6. Zmienne losowe zależne i prawdopodobieństwa warunkowe potrafią być bardzo nieintuicyjne, i mylące w analizie. Budując sieć przekonań należy bardzo precyzyjnie zdefiniować sobie umieszczone w niej zmienne losowe. Należy bezwzględnie nadać im nazwy odzwierciedlające ich znaczenie. (W długich nazwach opisowych można stosować skróty, ale nie pomijać ważnych elementów definicji.)

    Na przykład, dane dla przeciętnego człowieka są zupełnie inną statystyką niż dane dla przeciętnego pacjenta. Temperatura powietrza będzie inną zmienną losową jeśli policzymy ją dla przeciętnego dnia w roku, inną jeśli dla przeciętnego dnia w miesiącu, a jeszcze inną jeśli odniesiemy ją do statystycznego zjawiska, opisywanego przez posiadane dane (np. statystycznego pożaru lasu).

    Należy najpierw precyzyjnie zdefiniować zmienne losowe zgodnie z założonym modelem zjawiska, a dopiero potem obliczać ich rozkłady prawdopodobieństw. Pozwala to wykryć błędy w konstrukcji logicznej modelu, lub jego niezgodność z posiadanymi danymi. Typowym błędem początkującego jest mylenie prawdopodobieństwa ze zmienną losową.

  7. Czasami, gdy wykonanie kolejnych kroków tego projektu staje się problematyczne, dobrym pomysłem może być wypróbowanie innego zbioru danych. Po próbie zbudowania sieci na podstawie jednego zbioru danych zwykle znacznie łatwiej jest powtórzyć to ćwiczenie z innymi danymi, które mogą się okazać lepsze, łatwiejsze do zrozumienia i pracy z nimi.

Krok 2 - Budowa i weryfikacja sieci

Dla wybranego zjawiska, zbuduj model w postaci sieci przekonań, oraz oblicz lub pozyskaj wszystkie potrzebne w nim prawdopodobieństwa. Dane wprowadź do wybranego programu, a następnie uważnie zweryfikuj model, odpytując sieć o rozkłady prawdopodobieństw zmiennych niezależnych, i wartości oczekiwane zmiennych zależnych. Jeśli otrzymywane odpowiedzi są poprawnymi prawdopodobieństwami zgodnymi z oczekiwaniami, to być może sieć została poprawnie zbudowana. Ten krok jest analogiczny do debuggowania napisanego programu przez uruchamianie go na prostych danych dla potwierdzenia poprawności, przed użyciem go do rozwiązywania rzeczywistych przypadków.

UWAGA: w tym punkcie chcemy między innymi potwierdzić prawidłowość przyjętych założeń o zależnościach zmiennych losowych zjawiska. Sieć przekonań powinna zawierać połączenia pomiędzy zmiennymi, które zależą od siebie bezpośrednio. Jeśli pracujemy z jakimś słabo zrozumiałym zjawiskiem, to jest możliwe, że te zależności zostały niewłaściwie przyjęte. Jedynym sposobem stwierdzenia tego jest budowa alternatywnych sieci, i porównania, która z nich zachowuje się najbardziej poprawnie. Do tego celu można wykorzystać narzędzia, które automatycznie budują sieć przekonań z surowych danych statystycznych (patrz linki poniżej).

Krok 3 - Obliczanie prawdopodobieństw na sieci

Z kolei, mając zweryfikowany model, poćwicz z nim, zadając pytania, na które trudno przewidzieć odpowiedzi na podstawie samych danych. Typowo zapytaniami dającymi interesujące wyniki są zapytania diagnostyczne, kiedy znamy wartości zmiennych wynikowych, a pytamy się o rozkłady prawdopodobieństw zmiennych przyczynowych, i porównujemy je z ich podstawowymi rozkładami. Dobrym wynikiem zadania byłoby zapytanie dające jakieś wyjątkowo zaskakujące lub niezgodne z intuicją wyniki (pod warunkiem, że są prawidłowe, a nie wynikają z błędów w budowie modelu).

Niekiedy ciekawe okazują się również zapytania przyczynowo-skutkowe, kiedy przyjmujemy znajomość jakiejś kombinacji zmiennych przyczynowych, a pytamy o rozkład (wartości oczekiwane) zmiennych wynikowych.

Jeśli nie natrafisz na żadne wyniki zaskakujące, to poprawnym wynikiem mogą być również wyniki całkowicie zgodne z, i potwierdzające intuicje. Należy jednak popracować i poszukać przypadków, kiedy ustawienie pewnych danych istotnie zmienia rozkład prawdopodobieństwa jakiejś innej zmiennej, i ogólnie przypadków wpływu, które nie są widoczne od razu w posiadanych danych wejściowych.

W raporcie opisz jak ustawienie danych faktów zmieniło rozkład prawdopodobieństwa obserwowanej zmiennej.

Krok 4 - Podejmowanie decyzji

Następny etap ćwiczenia polega na wykorzystaniu informacji otrzymywanych z sieci przekonań do podejmowania decyzji. Określ jakąś prostą akcję albo decyzję agenta podejmowaną w związku z sytuacjami, opisywanymi przez sieć przekonań. Zdefiniuj również funkcję użyteczności, która będzie określona na stanach wynikowych. Oblicz oczekiwaną użyteczność sytuacji wynikających z posiadanych informacji, i różnych wartości akcji. Na tej podstawie wyznacz optymalną akcję agenta.

Uwaga: o ile zmienne losowe i prawdopodobieństwa powinny dotyczyć jakiegoś rzeczywistego zjawiska, to decyzja i użyteczności, które wprowadzisz aby stworzyć sieć decyzyjną, będą Twoim pomysłem i będą odzwierciedlać Twoje poglądy.

Pomyśl co mógłbyś/mogłabyś zrobić w odniesieniu do obiektu wyybranego ze zbioru, a jeśli to dotyczy osoby, to mógłbyś/mogłabyś doradzić lub zaproponować tej osobie. Na przykład, kupić czy nie kupić, odwiedzić dane miejsce lub nie odwiedzić, pójść na studia czy nie, poddać się leczeniu czy nie, napisać o czymś notatkę, raport, lub esej, itp.

W Twojej sieci powinien znaleźć się pojedynczy węzeł decyzji i pojedynczy węzeł użyteczności. Ten ostatni powinien nazywać się po prostu Użytecznością, jednak musisz zdefiniować precyzyjnie czyjej użyteczności on dotyczy. Na przykład, jeśli statystyka dotyczy pacjentów i chorób, a decyzja określa czy poddać się leczeniu, to użyteczność można określić z punktu widzenia pacjenta, lekarza, szpitala, ubezpieczyciela, producenta leków, itp. I za każdym razem rozkład tej użyteczności będzie zupełnie inaczej określony.

W sieci powinien być łuk prowadzący od węzła decyzji do węzła użyteczności. Ponadto powinny być łuki z pewnych węzłów zmiennych losowych (co najmniej z jednej) do węzła użyteczności. Jednak nie twórz zbyt wielu łuków od zmiennych losowych do użyteczności, ponieważ wymaga to zdefiniowania rozbudowanego rozkładu użyteczności, który trudno jest wymyśleć i uzasadnić.

Krok 5 - Obliczanie wartości informacji

Znajdź w swojej sieci zmienną lub zmienne losowe, których wartość można w jakiś sposób uzyskać (albo przynajmniej życzylibyśmy sobie, by można było ją pozyskać), a której znajomość miałaby wpływ na podejmowanie decyzji. Poszukaj przypadków, kiedy opłaca się zdobywać informację, i kiedy to się nie opłaca. Oblicz wartość dokładnej informacji (VPI) o tej zmiennej/ych.

Uwaga: zmienna, która bezpośrednio wpływa na użyteczność w oczywisty sposób będzie miała dużą wartość informacji. Poszukaj innej zmiennej, bardziej "odległej" od węzła użyteczności, która nadal ma dużą wartość VPI.

Uwaga2: niektóre narzędzia do budowy sieci przekonań wspierają obliczanie "wartości informacji", która może być tym samym co VPI, ale może być innym pojęciem. Aby to zrozumieć, użyj programu do obliczenia tej "wartości informacji", oraz niezależnie oblicz ręcznie VPI, aby to zweryfikować.

Popularne narzędzia do budowy sieci bayesowskich: