ML Atlas

01 · Podstawy · 4 min czytania · Interaktywne · aktualizacja

Na czym polega twierdzenie Bayesa i jak go używać w praktyce?

W skrócie

Twierdzenie Bayesa odwraca warunek: z P(dowód|hipoteza) liczy P(hipoteza|dowód), łącząc siłę dowodu z tym, jak częsta była hipoteza przed jego poznaniem.

Co to jest

Twierdzenie Bayesa pozwala odwrócić prawdopodobieństwo warunkowe: P(H | D) = P(D | H) · P(H) / P(D). Tutaj H to hipoteza (np. „pacjent jest chory”), a D to dane lub dowód (np. „test wyszedł dodatni”). Wzór pochodzi z pracy Thomasa Bayesa opublikowanej pośmiertnie w 1763 roku; w ogólnej postaci rozwinął go Pierre-Simon Laplace.

Składniki mają swoje nazwy. P(H) to prawdopodobieństwo a priori — jak częsta była hipoteza, zanim zobaczyliśmy dowód. P(D | H) to wiarygodność — jak dobrze hipoteza tłumaczy dowód. P(H | D) to prawdopodobieństwo a posteriori — przekonanie po uwzględnieniu dowodu. P(D) to normalizacja: łączna szansa zobaczenia takiego dowodu przy wszystkich hipotezach.

Twierdzenie jest jednocześnie banalne i głębokie. Banalne, bo to dwie linijki algebry z definicji prawdopodobieństwa warunkowego. Głębokie, bo opisuje, jak racjonalnie uczyć się z danych — i pokazuje, dlaczego intuicja ludzi tak często się myli.

Mechanizm — dlaczego tak działa

Wyprowadzenie zajmuje jedną linijkę. Iloczyn P(H i D) można zapisać na dwa sposoby: P(H) · P(D | H) albo P(D) · P(H | D). Porównując oba zapisy i dzieląc przez P(D), dostajemy twierdzenie Bayesa. Mianownik rozpisuje się z prawa prawdopodobieństwa całkowitego: P(D) = P(D | H) · P(H) + P(D | nie H) · P(nie H).

Najczytelniejsza jest postać ilorazowa: szansa a posteriori = szansa a priori × iloraz wiarygodności, gdzie iloraz wiarygodności to P(D | H) / P(D | nie H). Dowód mnoży szanse przez czynnik mówiący, ile razy bardziej prawdopodobny jest pod jedną hipotezą niż pod drugą. Silny dowód (iloraz 100) przy rzadkiej hipotezie (szansa 1 do 1000) daje wciąż tylko szansę 1 do 10.

Stąd bierze się błąd zaniedbania częstości bazowej. Ludzie oceniają P(H | D) po samej sile dowodu, ignorując P(H). Test wykrywający 90% chorych wydaje się „wiarygodny w 90%”, ale jeśli choroba jest rzadka, większość dodatnich wyników pochodzi od zdrowych, bo zdrowych jest po prostu znacznie więcej. W języku metryk: czułość to P(+ | chory), precyzja to P(chory | +), a twierdzenie Bayesa łączy je przez częstość klasy pozytywnej.

Twierdzenie opisuje też uczenie się krok po kroku: wynik a posteriori po pierwszym dowodzie staje się a priori dla następnego. Dwa niezależne dodatnie testy to dwukrotne pomnożenie szans przez iloraz wiarygodności. Na tej idei opiera się wnioskowanie bayesowskie, filtry Kalmana i aktualizacja przekonań w uczeniu ze wzmocnieniem.

W uczeniu maszynowym wprost używa go naiwny klasyfikator Bayesa: P(klasa | cechy) ∝ P(klasa) · P(cechy | klasa), z założeniem, że cechy są niezależne w obrębie klasy. Zastrzeżenie: wynik a posteriori jest tak dobry jak a priori i wiarygodność. Jeśli częstość klasy w danych treningowych różni się od tej w produkcji (np. po zbalansowaniu klas), przewidywane prawdopodobieństwa będą systematycznie przesunięte.

Na przykładzie

Prosty przykład liczbowy: choroba dotyczy 1% osób, test wykrywa 90% chorych i daje fałszywy alarm u 9% zdrowych. Na 10 000 osób mamy 100 chorych, z których 90 ma wynik dodatni, oraz 9900 zdrowych, z których 891 ma wynik dodatni. P(chory | +) = 90 / (90 + 891) = 0,092. Mimo „dobrego” testu tylko 9,2% dodatnich wyników to rzeczywiście chorzy. Drugi, niezależny dodatni test podnosi tę wartość do około 50%.

Na zbiorze Titanic (891 pasażerów) można sprawdzić twierdzenie na prawdziwych liczbach. Wiemy, że P(przeżycie | kobieta) = 0,742, P(kobieta) = 0,352 i P(przeżycie) = 0,384. Bayes daje P(kobieta | przeżycie) = 0,742 · 0,352 / 0,384 = 0,681, dokładnie tyle, ile wynosi bezpośrednio policzony odsetek kobiet wśród ocalałych (233 z 342). W postaci ilorazowej: szansa przeżycia a priori to 342 : 549 = 0,62, a bycie kobietą jest 4,6 razy częstsze wśród ocalałych niż wśród ofiar. Szansa a posteriori to 0,62 · 4,6 ≈ 2,88, czyli prawdopodobieństwo 0,742.

Ta ilustracja działa w przeglądarce z włączonym JavaScriptem: przy częstości choroby 1%, czułości 90% i swoistości 90% tylko 9 ze 108 wyników dodatnich to chorzy (PPV 8,3%).

Dane: Titanic

W praktyce

  • sklearn.naive_bayes zawiera GaussianNB (cechy ciągłe), MultinomialNB (liczniki słów) i BernoulliNB (cechy binarne); a priori ustawisz parametrem priors lub class_prior.
  • Gdy częstość klasy w produkcji jest inna niż w treningu, przelicz wyniki postacią ilorazową: pomnóż szansę przez stosunek nowych i starych szans a priori.
  • Mnożąc wiele wiarygodności, sumuj logarytmy (predict_log_proba) — iloczyn setek małych liczb zaokrągli się do zera.
  • Precyzję modelu przy innej częstości klasy pozytywnej oszacujesz z czułości i swoistości właśnie twierdzeniem Bayesa.
  • Typowy błąd: interpretowanie wartości p albo czułości testu jako prawdopodobieństwa, że hipoteza jest prawdziwa.

Najczęstsze pytania

Skąd wziąć prawdopodobieństwo a priori?
Z częstości w populacji (np. rozpowszechnienia choroby), z wcześniejszych badań albo z wiedzy dziedzinowej. Przy braku wiedzy wybiera się rozkłady mało informacyjne; przy dużej ilości danych wybór a priori ma coraz mniejszy wpływ na wynik.
Czym różni się statystyka bayesowska od częstościowej?
Obie używają twierdzenia Bayesa, gdy chodzi o zdarzenia. Różnica dotyczy parametrów: podejście bayesowskie traktuje nieznany parametr jako zmienną losową z rozkładem a priori, a częstościowe — jako stałą, o której wnioskuje się z zachowania procedur w powtarzanych próbach.
Dlaczego „naiwny” Bayes działa, skoro cechy nie są niezależne?
Bo do klasyfikacji wystarczy, żeby właściwa klasa miała najwyższy wynik, nawet jeśli same prawdopodobieństwa są przesadzone. Ranking klas bywa poprawny, choć kalibracja jest słaba.

Źródła

  • Bayes, 1763, „An Essay towards solving a Problem in the Doctrine of Chances”, Philosophical Transactions of the Royal Society of London 53, 370–418.
  • Gigerenzer, Hoffrage, 1995, „How to improve Bayesian reasoning without instruction: Frequency formats”, Psychological Review 102(4), 684–704.
  • Blitzstein, Hwang „Introduction to Probability”, 2nd ed., CRC Press, 2019, rozdz. 2.
  • Bishop „Pattern Recognition and Machine Learning”, Springer, 2006, rozdz. 1.2.
  • Dokumentacja scikit-learn: Naive Bayes, https://scikit-learn.org/stable/modules/naive_bayes.html

Zobacz też