Twierdzenie Bayesa w praktyce.

Zaczynajmy!

Twierdzenie Bayesa zalicza sie do ważnych twierdzeń w nauce rachunku prawdopodobieństwa oraz statystyki i jest szeroko wykorzystywane w praktyce. Stąd konieczna jest znajomość podstawowych pojęć i zagadnień. Czy wiesz co znaczy zapis P(A ∪ B)? Co to są zdarzenia niezależne? Czy potrafisz obliczyć prawdopodobieństwo warunkowe?

Wprowadzenie

Życie człowieka składa się z niezliczonej ilości decyzji, które podejmuje ze świadomością wygranej lub przegranej. Oczywistym jest, że dobra decyzja to taka, która pociąga za sobą pozytywne skutki. Chcąc podejmować coraz lepsze decyzje, minimalizując przy tym błędy oraz możliwość klęski powstał rachunek prawdopodobieństwa, który dzięki przejrzystości i niezawodności pozwala określić rezultat decyzji.

Rachunek prawdopodobieństwa jest wszechobecny. Od gier planszowych, przez transakcje giełdowe po określanie wyników badań. Wszędzie tam podejmowane działania opierają się o wyliczone prawdopodobieństwo i poziom ryzyka, który jesteśmy w stanie zaakceptować. Rzucając kostką pradopodobieństwo wyrzucenia reszki, jak i orła wynosi 50%. W takiej sytuacji nie jesteśmy w stanie określić wyniku - jest losowy, natomiast chcąc kupić akcje pewnej spółki X, opieramy się na spekulacjach opartych o zgromadzone dane.

Klasycznym przykładem zastosowania rachunku prawdopodobieństwa jest ocena wystąpienia chorób genetycznych u przyszłego dziecka. Na lekcji biologii wymagało to użycia reguły mnożenia i dodawania. Wyniki były jednak zaskakujące.

Twierdzenie Bayesa stało się ważnym etapem w rozwoju nauki rachunku prawdopodobieństwa.

W XVIII wieku brytyjski matematyk - Thomas Bayes - udowodnił twierdzenie wiążące prawdopodobieństwo warunkowe P(A|B) i P(B|A).

Skąd wzięło się twierdzenie Bayesa?

Aby wyprowadzić twierdzenie Bayesa, musimy rozumieć zagadnienie prawdopodobieństwa warunkowego, które jest niezbędne do wyprowadzenia wzoru ogólnego.

  • Prawdopodobieństwo warunkowe oznaczane jako: P(A|B), jest wynikiem zdarzeń połączonych.

    P(A|B) = P(A∩B) / P(B)

    Przykład:

    Jakie jest prawdopodobieństwo zawału serca pacjenta (którego dane chorobowe są rejestrowane) w kolejnym roku?
    Aby uzyskać odpowiedź sięga się do danych - przyczyn - (B), które pozwolą wywnioskować czy dojdzie do zawału serca w jego przypadku (A). Istnieje wiele zachowań, które świadczą o podwyższonym ryzyku zachorowania. Znając stan zdrowia pacjenta i bieżace wyniki badań, można dopasować go do ogólnego wzorca.

  • Prawdopodobieństwo iloczynu zdarzeń oznaczone jako: P(A∪B) = P(A)P(B|A), gdzie P(B|A) > P(B), (wyprowadzony z przekształcenia prawdopodobieństwa warunkowego).

Znając prawdopodobieństwo warunkowe i iloczynu zdarzeń możemy wywnioskować logicznie, że iloczyn jest przemienny, więc prawdziwa jest równość:

P(A∩B) = P(B∩A)

Z twierdzenia o prawdopodobieństwie iloczynu zdarzeń mamy:

P(A∩B) = P(A)P(B|A)

Podstawiając powyższe do wzoru p(A∩B) = p(B∩A) otrzymujemy:

P(B) P(A|B) = P(A) P(B|A)

Co po kolejnych przekształceniach prowadzi do wzoru Bayesa:

P(A|B) = P(A)P(B|A) P(B)

Jeśli skutek A nastąpił w wyniku zajścia jednej z przyczyn B1, B2, ... Bn, to prawdopodobieństwo tego, że Bi była przyczyną zajścia A wyraża się wzorem Bayesa.
Prawdopodobieństwo P(Bi) nazywamy czasem prawdopodobieństwem a priori, natomiast prawdopodobieństwo P(Bi|A) nazywamy prawdopodobieństwem a posteriori, gdyż podaje ono szansę zajścia Bi po zaobserwowaniu zajścia zdarzenia A.

Najedź na elementy wzoru

Nowotwór

Co roku na raka piersi zapada ponad 1 milion kobiet. 10% z nich umiera. Wiele z nich jest źle zdiagnozowana, ponieważ nawet najlepsze mammografy dają fałszywe wyniki.

W celu polepszenia dokładności urządzeń medycznych stosuje się skomplikowane algorytmy, które zwiększają liczbę obiektywnych diagnoz. Dzięki twierdzeniu Bayesa, możemy odpowiedzieć na pytanie:

Jakie jest prawdopodobieństwo zachorowania na nowotwór przy pozytywnym wyniku z testu?

Na etapie testów klinicznych nowego mammografu przeprowadzono statystykę, której wyniki pokazują sprawność testu:

  • 1% kobiet poddanych badaniom ma raka, stąd 99% nie ma.
  • 90% przypadków, kiedy kobieta ma raka jest wykrywana prawidłowo, 10% z nich nie
  • U 20% zdrowych osób test wykrywa nowotwór.

Aby wyniki były bardziej czytelene, zaprezentujmy je w formie tabelki

Chory (1%) Zdrowy (99%)
Test pozytywny 90% 10%
Test negatywny 20% 80%

Załóżmy, że dostałeś pozytywny wynik, czyli masz raka. Jakie jest prawdopodobieństwo, że faktycznie jesteś chory?

W tym celu sformułujmy problem w terminologii rachunku prawdopodobieństwa.

P(R|+)

gdzie R - to posiadanie raka,
+ to wynik pozytywny testu

Znamy już wzór Bayesa, więc zastanówmy się co jest nam potrzebne, żeby policzyć P(R|+).

P(R|+) = P(+|R)P(R) P(+)

Potrzebujemy P(+|R), P(R) i P(+)

P(+|R) = P(wynik pozytywny|chory) = 0,9

P(R) = 0,01

P(+) - tutaj musimy policzyć prawdopodobieństwo wyniku pozytywnego, jest to prawdopodobieństwo marginalne.

P(+) = 0,9*0,01 + 0,2*0,99 = 0,207

Podstawmy nasze dane do głównego wzoru:

P(+|R) = 0,9 * 0,01 / 0,207 = 0,0434 = 4,3%

Prawdopodobieństwo że jesteśmy chorzy na raka, jeśli wynik testu jest pozytywny jest niezwykle małe. Wynosi 4,3%.

Na pierwszy rzut oka, może się wydawać, że jest niezwykle wysokie, przecież test ma wskaźnik obiektywności na poziomie 80%, dla osoby chorej? Niestety tu ludzka intuicja zawodzi. Klucz w rozumieniu prawdziwego prawdopodobieństwa tkwi w prawdopodobieństwie marginalnym (inaczej określanym jako normalizatorze). Dzieląc przez P(+) dostajemy wynik w odniesieniu do prawdopodobieństwa zaistnienia zdarzenia + (testu pozytywnego), które tak jak w tym przypadku wynosi 0.207, na co wpłynął fakt, że tylko 1 osoba na 100 jest chora. Test przez swoją niedoskonałość zawyża wynik i wskazuje, iż 3 osoby są chore.

Wniosek z powyższego przykładu jest taki, że test należy powtórzyć kilka razy. Test wykonany wielokrotnie drastycznie zmniejsza prawdopodobieństwo fałszywej oceny pacjenta.

Zbadaj jak zmnieni się prawdopodobieństwo posidania raka, jeśli wynik testu jest pozytywny, w zależności od danych początkowych.

Przyjmijmy, że grupa testowa to 100 osób.

Chory Zdrowy
Test pozytywny
Test negatywny

Test IV generacji na HIV ma średnią skuteczność 95% dla wyniku pozytywnego dla osoby faktycznie chorej

Prawdopodobieństwo: 4.34%

Spam

Według badań Internet Threats Trend Report każdego miesiąca wysyłane jest 40 miliardów wiadmości spam. To 70% wysłanych wiadomości w ogóle. Pewnie nie zdajesz sobie z tego sprawy, ale obecne filtry anty-spamowe chronią Cię przed niechcianymi wiadomościami ze skutecznością 99,7%.

Spam jest wiadomością niechcianą, wysyłaną automatycznie przez boty. Klasyczny przykład wiadomości typu spam ma zachęcić do wejścia na stronę internetową, bądź do zakupu. Z punktu widzenia użytkownika, wiadomość jest zbędna i zabiera pojemność skrzynki mail.

Chcąc się bronić przed spamem, zostały opracowane algorytmy klasyfikujące wiadomości przychodzące. Programy anty spamowe dzielą się na statyczne i dynamiczne.
Pierwsza grupa to proste filtry opierające się o słowniki słów kluczowych (bazę danych i ocenę zero-jedynkową czy słowo jest charakterystyczna dla spamu). Objętość słownika jest bardzo duża z uwagi na mnogość słów, które zawierają się w wiadomościach. Takie rozwiązanie jest proste do obejścia z uwagi na rzadko aktualizowany słownik i prostotę algorytmu. Wtedy wystarczy wykraść aktualnie używany słownik i tworzyć wiadomości spam, używając słów innych niż zawarte w słowniku.

Druga z opisanych technik polega na klasyfikacji mail w oparciu o rachunek prawdopodobieństwa. Algorytm analizuje wiadomość jako całą i na podstawie bazy danych prawdopodobieństw słów charakterystycznych dla spamu i wiadomości prawdziwych, oblicza prawdopodobieństwo, że wiadomość jest spamem. Lista słów jest cały czas zmieniana, co czyni ją zmienną i odporną na zmianę taktyki botów wysyłających spam.

Dynamiczy algorytm wykrywający spam działa w oparciu o twierdzenie Bayesa, gdzie:

P(spam|wiadomość) = P(wiadomość|spam)P(spam) / P(wiadomość)

Pierwszym krokiem jest stworzenie bazy danych słów i ilości występowania ich w wiadomościach oznaczanych jako spam.

Filtr spamu Bayesa, jest klasycznym przykładem algorytmu Naïve Bayes Classifier (NBC), który stanowi podstawę uczenia maszynowego i sztucznej inteligencji. Polega on na analizie wielowymiarowych danych i przyporządkowaniu ich do modeli danych.

Mając zestaw danych, w naszym przypadku są to po 3 wiadomości spam i prawdziwe maile, możemy używając twierdzenie Bayesa, określić czy nowa wiadomość pasuje do danych treningowych.

Algorytm wykrywający spam składa się z 2 części. Pierwsza z nich to analiza danych (data mining). W naszym przypadku musimy stworzyć bazę danych słów, które są charakterystyczne dla spamu i prawdziwego maila. Po prawej stronie mamy 6 wiadomości (3 spam i 3 prawdziwe maile), które musimy przekształcić do postaci listy. Wiadomości spam mają osobną listę od prawdziwych maili.

  • Usuwamy z tekstu znaki niebędące literami i zamieniamy wszystkie litery na małe.
  • Dzielimy tekst na słowa.
  • Jeśli słowo nie pojawiło się na liście to dodajemy je, jeśli się pojawiło, to zwiększamy licznik (wiemy dzięki temu jak często pojawiło się dane słowo).

Kolejnym krokiem jest policzenie prawdopodobieństw dla zdarzeń

  • P(wiadomość|spam)
  • P(spam)
  • P(m|prawdziwa wiadomość)
  • P(prawdziwej wiadomości)

Obliczenie prawdopodobieństwa, że wiadomość, którą wysłaliśmy to spam, sprowadza się do wzoru i podstawienia danych

P(spam|wiadomość) = P(wiadomość|spam)P(spam) P(wiadomość)

Sprawdź jak działa bardzo prosty algorytm wykrywania spamu. Skorzystaj z kilku przykładowych wiadomości, albo wprowadź swoją!

  • Super!
  • Cześć! Czy możesz kliknąć w ten link? Super ofeta
  • Cześć, czy możesz dodać mnie do projektu?

Niestety z uwagi na małą objętość naszego słownika (71 unikalnych słów) i małą ilość słów wspólnych dla spamu i prawdziwego maila, masz algorytm nie działa, dla każdej wiadomości. Powód jest prosty. Jeśli słowo, które użyliśmy w naszej wiadomości nie znajduje się w słowniku, to prawdopodobieństwo wynosi 0. Idąc dalej cały mianownik wynosi 0, a dzielenie przez 0 prowadzi do błędu.

Rozwiązaniem jest zastosowanie wygładzania Laplace'a (Laplace Smoothing) - prostej metody wykluczenia sytuacji dzielenia przez 0. Licząc standardowo prawdopodobieństwo obliczaliśmy stosunek wystąpienia danego elementu w zbiorze, przez ilość elementów w zbiorze w ogóle. Jeśli ilość elementu w zbiorze nie było, to licznik się zerował, a prawdopodobieństwo wynosiło 0. Wygładzanie Laplace'a to tak naprawdę dodanie zmiennej k do licznika i wartości k|x| do mianownika.

P(x) = liczbaElementów(x) + k / N + k|x|

Modyfikując wzór ogólny, zabezpieczamy nasz algorytm przed sytuacją, gdy jakiegoś elementu nie ma w naszym słowniku.

Filtr spamu oparty o algorytm Naive Bayes Classifier jest obecnie najskuteczniejszym sposobem do walczenia ze spamem. Algorytm pracujący na dużej bazie danych słów, z mechanizmem dynamicznego dodawania nowych, jest w stanie z dokładnością do 99.7% zaklasyfikować poprawnie wiadomość, która jest spamem.

Pogoda

Rozwiąż poniższe zadania, aby upewnić się, że rozumiesz Twierdzenie Bayesa. Bardzo ważna jest umiejętność prezentacji danych i wyciągania z nich wniosków. Jeśli będziesz miał problem to zobacz rozwiązanie

Ania bierze jutro ślub na wyjątkowej wyspie, pośrodku oceanu. W ubiegłym roku deszcz padał tam tylko 5 razy. Niestety meteorolog na podstawie obserwacji przyrody spodziewa się jutro deszczu. Kiedy pada, meteorolog przewiduje deszcz z prawdopodobieństwem 90%, natomiast kiedy nie pada, nieprawidłowo przewiduje deszcz w 1 na 10 przypadków. Jakie jest prawdopodobieństwo, że naprawdę będzie padać deszcz na ślubie Ani?

Aby skrócić zapis wprowadźmy oznaczenia:

  • Zdarzenie A1 - deszcz pada na ślubie Ani.
  • Zdarzenie A2 - deszcz nie pada na ślubie Ani.
  • Zdarzenie B - Meteologog prognozuje deszcz.
  • P(A1) = 5/365 = 0,0136985 - prawdopodieństwo deszczu, na podstwie danych historycznych
  • P(A2) = 1 - P(A1) - prawdopodieństwo, że nie będzie padać
  • P(B|A1) = 0.9 - kiedy pada, meteorolog prognozuje deszcz z dokładnością 90%
  • P(B|A2) = 0.1 - kiedy nie pada, meteorolog prognozuje deszcz z dokładnością 10%

Co chcemy obliczyć? W terminologi rachunku prawdopodobieństwa szukamy P(A1|B), czyli prawdopodobieństwo, że będzie padać na ślubie Ani, mając progonzę od meteorologa. Rozwiązaniem tego problemu jest zastosowanie wzoru Bayesa.

P(A1|B)=P(A1)P(B|A1)/ P(A1)P(B|A1)+P(A2)P(B|A2)

P(A1|B)=(0.014)(0.9)/[(0.014)(0.9)+(0.986)(0.1)]

P(A1|B)=0.111

0.111% - takie jest prawdopodobieństwo, że będzie jutro padał deszcz na ślubie Ani.

Zauważasz wynik sprzeczny z intuicją? Nawet kiedy meteorolog przepowiada deszcz na podstawie obserwacji, w rzeczywistości prawdopodobieństwo wystąpienia opadów wynosi tylko 11%. Pomimo ponurych prognoz na jutrzejszy dzień, istnieje spora szansa, że ślub Ani odbędzie się w słoneczny dzień.

Co dalej? Materiały dodatkowe

Jeśli zainteresowało Cię twierdzenie Bayesa, to nic straconego!

Twierdzenie Bayesa jest obowiązkowym zagadnieniem dla studentów informatyki, matematyki stosowanej, czy analizy danych. Będą oni mieli omówiony szczegółowo aspekt teoretyczny twierdzenia Bayesa. Na tej stronie został położony nacisk szczególnie na zastosowania w praktyce. Aspekt czysto teoretyczny twierdzenia wymaga biegłej znajomości m.in.: całek, pojęcia płaszczyzny...

Jeśli jesteś ciekawy teoretycznej strony twierdzenie Bayesa to odwiedź:

Jeśli jesteś ciekawy innych zastosowań w praktyce to odwiedź:

Jeśli interesuje Cię sztuczna inteligencja, data-mining to odwiedź:

Jeśli zafascynowała Cię teoria Bayesa i chcesz stać się mistrzem to przeczytaj:

Jeśli zafascynowała Cię teoria Bayesa i chcesz stać się mistrzem w sztucznej inteligencji to weź udział w kursie:

Zakończenie

Twierdzenie Bayesa od momentu opublikowania dowodu przez Thomasa Bayesa budzi wiele kontrowersji. Ludzki mózg posiada wady w myśleniu, które poddają pod wątpliwość wiele oczywistych faktów. Daniel Kahneman (noblista z zakresu ekonomii) w Thinking Fast and Slow, pokazuje że człowiek w procesie myślowym kieruje się 2 metodami: intuicją i analizą. Decyzje podejmowane pod wpłyem presji, stresu są automatycznie podejmowane w oparciu o intuicję, która z punktu biologicznego pozwala nam myśleć szybko i efektywnie. Myślenie oparte na intuicji jest obarczone błędem. Twierdzenie Bayesa jest przykładem zagadki dla mózgu, ponieważ produkuje nieoczywiste wyniki.

Dlatego też jest potężnym narzędziem w obecnych czasach. Tak jak wspomniałem we wstępie, Twierdzenie Bayesa stosowane jest w wielu dziedzinach, zarówno w medycynie, bankowości, ekonomii, informatyce.