03 · Nadzorowane · 4 min czytania · Interaktywne · aktualizacja
Jak działa naiwny klasyfikator Bayesa i dlaczego działa, choć jest naiwny?
W skrócie
Naiwny Bayes liczy prawdopodobieństwo klasy z twierdzenia Bayesa, zakładając niezależność cech. Klasyfikuje nieźle, ale jego pewność bywa mocno zawyżona.
Co to jest
Naiwny klasyfikator Bayesa to model, który wybiera klasę o największym prawdopodobieństwie a posteriori, liczonym z twierdzenia Bayesa, przy upraszczającym założeniu, że wszystkie cechy są od siebie niezależne w obrębie każdej klasy. Dzięki temu założeniu zamiast modelować skomplikowany łączny rozkład cech wystarczy oszacować rozkład każdej cechy osobno.
Wzór jest krótki: P(klasa | x₁, …, xₚ) ∝ P(klasa) · P(x₁ | klasa) · P(x₂ | klasa) · … · P(xₚ | klasa). Pierwszy czynnik to częstość klasy, kolejne — jak typowa jest dana wartość cechy dla tej klasy. Wygrywa klasa z największym iloczynem.
Intuicja z filtru spamu: słowo „przelew” pojawia się w 30% spamu i w 2% zwykłych maili, słowo „spotkanie” odwrotnie. Naiwny Bayes mnoży takie ilorazy dla wszystkich słów wiadomości, jakby każde słowo było osobnym, niezależnym świadkiem. To właśnie naiwność — słowa w tekście oczywiście nie są niezależne.
Mechanizm — dlaczego tak działa
Bez założenia niezależności trzeba by oszacować prawdopodobieństwo każdej kombinacji wartości cech. Przy 30 cechach binarnych to ponad miliard kombinacji na klasę — żaden zbiór danych tego nie pokryje. Niezależność redukuje problem do 30 osobnych, małych oszacowań. Model uczy się więc błyskawicznie (jedno przejście po danych, liczenie częstości lub średnich i wariancji) i potrzebuje niewielu przykładów.
Warianty różnią się założonym rozkładem cech: wariant gaussowski przyjmuje rozkład normalny dla cech ciągłych, wielomianowy liczy wystąpienia słów, Bernoulliego — obecność lub brak słowa. W wariantach zliczeniowych stosuje się wygładzanie Laplace’a (dodanie małej stałej do każdej liczby), bo jedno słowo niewidziane w treningu dałoby zerowe prawdopodobieństwo i wyzerowało cały iloczyn.
Dlaczego model działa, skoro założenie jest prawie zawsze fałszywe? Do klasyfikacji nie potrzeba trafnych prawdopodobieństw, wystarczy poprawna kolejność klas. Domingos i Pazzani (1997) pokazali, że naiwny Bayes może być optymalny w sensie liczby błędów nawet przy silnych zależnościach między cechami — o ile zniekształcenia przesuwają wszystkie klasy w podobną stronę.
Cena naiwności płaci się w prawdopodobieństwach. Jeśli dwie cechy niosą tę samą informację (np. promień i obwód guza), model liczy ten sam dowód dwa razy, a przy dziesięciu skorelowanych cechach — dziesięć razy. Iloczyny szybko uciekają do skrajności i model jest pewny siebie prawie zawsze, także wtedy, gdy się myli. Jest też ścisły związek z regresją logistyczną: oba modele dają liniową granicę (dla wariantu gaussowskiego ze wspólną wariancją), ale naiwny Bayes ustala wagi z osobnych rozkładów cech, a regresja logistyczna dobiera je wprost pod klasyfikację. Przy małych danych często wygrywa Bayes, przy dużych — regresja logistyczna.
Na przykładzie
Breast Cancer Wisconsin: 569 guzów, 30 cech jąder komórkowych, z czego wiele mierzy niemal to samo — korelacja promienia z obwodem wynosi 0,998, a 21 par cech ma korelację powyżej 0,9. Trening na 426 guzach, test na 143 (podział warstwowy, random_state=0). Gaussowski naiwny Bayes trafia w 92,3% przypadków (AUC 0,976), regresja logistyczna w 95,8% (AUC 0,995). W 5-krotnej walidacji krzyżowej: 93,9% wobec 97,9%. Klasyfikacja jest więc przyzwoita, choć założenie niezależności jest tu rażąco złamane.
Gorzej z pewnością siebie. Aż 95,1% przewidywań naiwnego Bayesa to prawdopodobieństwa poniżej 0,01 lub powyżej 0,99 (dla regresji logistycznej 69,9%). Z 11 pomyłek na teście 7 model popełnił z pewnością co najmniej 99%. Entropia krzyżowa, która karze pewne siebie błędy, wynosi 1,22 dla Bayesa i 0,086 dla regresji logistycznej — czternaście razy mniej.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
GaussianNBdla cech ciągłych,MultinomialNBdla zliczeń słów (zCountVectorizerlubTfidfVectorizer),BernoulliNBdla cech binarnych,ComplementNBdla niezbalansowanego tekstu.- Wygładzanie w wariantach zliczeniowych: parametr
alpha(domyślnie 1,0, czyli wygładzanie Laplace’a); warto go stroić. - Nie ufaj
predict_probabez kalibracji:CalibratedClassifierCV(GaussianNB(), method="isotonic")lub"sigmoid". - Świetny punkt odniesienia dla klasyfikacji tekstu: trening w ułamku sekundy, wynik często blisko modeli dużo droższych.
- Usuń zduplikowane i silnie skorelowane cechy — naiwny Bayes liczy każdą z nich jako osobny dowód.
Najczęstsze pytania
- Dlaczego „naiwny”?
- Bo zakłada, że cechy są niezależne w obrębie klasy, co w realnych danych prawie nigdy nie jest prawdą. Słowa w tekście, objawy choroby czy pomiary guza są ze sobą powiązane. Nazwa podkreśla, że to świadome uproszczenie, a nie opis świata.
- Czy naiwny Bayes ma coś wspólnego ze statystyką bayesowską?
- Niewiele poza nazwą twierdzenia. Używa wzoru Bayesa do odwrócenia warunku, ale parametry zwykle szacuje się zwykłymi częstościami, bez rozkładów a priori na parametry. To klasyfikator generatywny, nie przykład pełnego wnioskowania bayesowskiego.
- Kiedy naiwny Bayes jest dobrym wyborem?
- Przy klasyfikacji tekstu, gdy cech jest bardzo dużo, a przykładów mało, przy potrzebie bardzo szybkiego treningu i jako pierwszy punkt odniesienia. Słabym wyborem jest wtedy, gdy potrzebujesz wiarygodnych prawdopodobieństw albo cechy są silnie zależne i masz dużo danych.
Źródła
- Domingos P., Pazzani M. „On the Optimality of the Simple Bayesian Classifier under Zero-One Loss”, Machine Learning 29, 1997.
- Hand D. J., Yu K. „Idiot’s Bayes — Not So Stupid After All?”, International Statistical Review 69(3), 2001.
- Niculescu-Mizil A., Caruana R. „Predicting Good Probabilities with Supervised Learning”, ICML 2005.
- James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 4.4.4.
- Dokumentacja scikit-learn, „Naive Bayes”: https://scikit-learn.org/stable/modules/naive_bayes.html