01 · Podstawy · 4 min czytania · Interaktywne · aktualizacja
Czym jest prawdopodobieństwo i jakie są jego podstawowe reguły?
W skrócie
Prawdopodobieństwo to liczba od 0 do 1 mierząca, jak bardzo możliwe jest zdarzenie. Trzy proste aksjomaty dają reguły dopełnienia, sumy i niezależności.
Co to jest
Prawdopodobieństwo to liczba z przedziału od 0 do 1 przypisana zdarzeniu, mierząca, jak bardzo jest ono możliwe: 0 oznacza zdarzenie niemożliwe, 1 — pewne. Formalnie jest to funkcja P określona na zdarzeniach (podzbiorach zbioru wszystkich możliwych wyników), spełniająca trzy aksjomaty Kołmogorowa z 1933 roku.
Te aksjomaty są zaskakująco skromne: prawdopodobieństwo żadnego zdarzenia nie jest ujemne; prawdopodobieństwo, że wydarzy się cokolwiek, wynosi 1; a dla zdarzeń wykluczających się prawdopodobieństwa się dodają. Cała reszta — rozkłady, twierdzenie Bayesa, prawa wielkich liczb — wynika z tych trzech zdań.
W uczeniu maszynowym prawdopodobieństwo jest językiem niepewności. Klasyfikator nie mówi „to spam”, tylko „to spam z prawdopodobieństwem 0,93”. Model językowy wybiera kolejne słowo, losując z rozkładu prawdopodobieństwa. Funkcje straty, takie jak entropia krzyżowa, mierzą, jak dobrze przewidywane prawdopodobieństwa pasują do rzeczywistości.
Mechanizm — dlaczego tak działa
Najprostsza interpretacja jest częstościowa: prawdopodobieństwo to odsetek, do którego zbliża się częstość zdarzenia przy wielu powtórzeniach. Rzucając monetą tysiące razy, zobaczymy orła w coraz bliżej 50% rzutów. Druga interpretacja jest bayesowska: prawdopodobieństwo to stopień przekonania, który aktualizujemy w świetle danych. Obie używają tych samych reguł rachunku — różnią się tym, do czego wolno je stosować (np. do jednorazowego zdarzenia, którego nie da się powtórzyć).
Z aksjomatów wynikają trzy reguły, których używa się na co dzień. Dopełnienie: P(nie A) = 1 − P(A). Suma: P(A lub B) = P(A) + P(B) − P(A i B); odejmujemy część wspólną, bo inaczej liczylibyśmy ją dwa razy. Iloczyn: P(A i B) = P(A) · P(B | A), gdzie P(B | A) to prawdopodobieństwo B, jeśli wiemy, że zaszło A.
Zdarzenia są niezależne, gdy wiedza o jednym nie zmienia szans drugiego, czyli P(A i B) = P(A) · P(B). To bardzo silne założenie, często milcząco przyjmowane: naiwny klasyfikator Bayesa zakłada niezależność słów w e-mailu, a wiele testów statystycznych zakłada niezależność obserwacji. Gdy jest fałszywe, wyniki bywają systematycznie przesadzone.
Ważne rozróżnienie: częstość w danych to nie to samo co prawdopodobieństwo. Odsetek z próby jest tylko oszacowaniem, obarczonym błędem losowym, który maleje wraz z liczebnością próby. Dla 10 obserwacji 30% może oznaczać prawdziwe 10% albo 60%; dla 10 000 obserwacji — już raczej nie.
Ostatnie zastrzeżenie dotyczy modeli: liczba wypluwana przez klasyfikator jest „prawdopodobieństwem” tylko z nazwy, dopóki nie sprawdzimy, czy wśród przypadków z wynikiem 0,8 rzeczywiście około 80% należy do klasy pozytywnej. Ta zgodność nazywa się kalibracją i wiele modeli jej nie ma.
Na przykładzie
Zbiór Titanic zawiera 891 pasażerów. Przeżyło 342 osoby, więc częstość przeżycia wynosi 342 / 891 = 0,384, a z reguły dopełnienia częstość śmierci to 0,616. Kobiet było 314 (0,352), a kobiet, które przeżyły — 233 (0,262). Reguła sumy przewiduje, że odsetek osób, które były kobietami lub przeżyły, wynosi 0,384 + 0,352 − 0,262 = 0,475. Bezpośrednie policzenie daje 423 osoby, czyli właśnie 0,475.
Czy płeć i przeżycie są niezależne? Gdyby były, odsetek kobiet, które przeżyły, wynosiłby 0,384 · 0,352 = 0,135. W danych jest prawie dwa razy więcej: 0,262. To liczbowy ślad zasady „najpierw kobiety i dzieci” — wiedza o płci mocno zmienia szanse przeżycia. Dokładnie to, ile zmienia, mierzy prawdopodobieństwo warunkowe.
Dane: Titanic
W praktyce
- W pandas częstość zdarzenia to średnia z kolumny logicznej:
(df.sex == 'female').mean(); tabele łączne dajepd.crosstab(a, b, normalize=True). - Klasyfikatory scikit-learn zwracają prawdopodobieństwa przez
predict_proba; sprawdzaj je krzywą kalibracjisklearn.calibration.calibration_curve. - Losowanie w NumPy:
rng = np.random.default_rng(seed)irng.random(),rng.choice; ustalony seed czyni eksperyment powtarzalnym. - Mnożąc wiele małych prawdopodobieństw, pracuj na logarytmach (suma log-prawdopodobieństw), inaczej wynik zaokrągli się do zera.
- Typowy błąd: dodawanie prawdopodobieństw zdarzeń, które się nie wykluczają, bez odjęcia części wspólnej.
Najczęstsze pytania
- Czym różni się prawdopodobieństwo od szansy (odds)?
- Prawdopodobieństwo to p, szansa to p / (1 − p). Przy p = 0,75 szansa wynosi 3 do 1. Regresja logistyczna modeluje liniowo logarytm szansy, nie samo prawdopodobieństwo.
- Czy zdarzenie o prawdopodobieństwie 0 jest niemożliwe?
- Dla zdarzeń dyskretnych w praktyce tak. Dla zmiennych ciągłych nie: prawdopodobieństwo, że wzrost wyniesie dokładnie 175,000… cm, jest równe 0, a jednak ktoś ma jakiś konkretny wzrost. Dlatego dla zmiennych ciągłych mówi się o gęstości i przedziałach.
- Czy wyniki `predict_proba` to prawdziwe prawdopodobieństwa?
- Nie zawsze. Lasy losowe, SVM czy przetrenowane sieci często dają wyniki zbyt skrajne albo zbyt ostrożne. Trzeba je sprawdzić krzywą kalibracji i w razie potrzeby skalibrować (`CalibratedClassifierCV`).
Źródła
- Kolmogorov, 1933, „Grundbegriffe der Wahrscheinlichkeitsrechnung”, Springer, Berlin.
- Blitzstein, Hwang „Introduction to Probability”, 2nd ed., CRC Press, 2019, rozdz. 1.
- Goodfellow, Bengio, Courville „Deep Learning”, MIT Press, 2016, rozdz. 3 (Probability and Information Theory).
- Murphy „Probabilistic Machine Learning: An Introduction”, MIT Press, 2022, rozdz. 2.
- Bishop „Pattern Recognition and Machine Learning”, Springer, 2006, rozdz. 1.2 (Probability Theory).