Dlaczego naiwni klasyfikatorzy bayesowscy tak dobrze sobie radzą?


38

Klasyfikatory Naive Bayes są popularnym wyborem przy problemach z klasyfikacją. Istnieje wiele powodów, w tym:

  • „Zeitgeist” - powszechna świadomość po sukcesie filtrów antyspamowych około dziesięć lat temu
  • Łatwy do napisania
  • Model klasyfikatora jest szybki w budowie
  • Model można modyfikować za pomocą nowych danych treningowych bez konieczności jego odbudowywania

Są jednak „naiwne” - tzn. Zakładają, że funkcje są niezależne - kontrastuje to z innymi klasyfikatorami, takimi jak klasyfikatory Maximum Entropy (których obliczenia są powolne).

Zwykle nie można założyć założenia niezależności, aw wielu (większości?) Przypadkach, w tym na przykład w filtrze spamu, jest to po prostu błędne.

Dlaczego więc Naive Bayes Classifier nadal działa bardzo dobrze w takich aplikacjach, nawet jeśli funkcje nie są od siebie niezależne?

Odpowiedzi:


23

Ten artykuł wydaje się (nie mogę podążać za matematyką), że bayes jest dobry nie tylko wtedy, gdy cechy są niezależne, ale także wtedy, gdy zależności między nimi są podobne między cechami:

W tym artykule proponujemy nowe wyjaśnienie doskonałej wydajności klasyfikacji naiwnych Bayesa. Pokazujemy, że zasadniczo rozkład zależności; tj. jak lokalna zależność węzła rozkłada się w każdej klasie, równomiernie lub nierównomiernie, oraz jak lokalne zależności wszystkich węzłów współpracują ze sobą, konsekwentnie (wspierając pewną klasyfikację) lub niekonsekwentnie (znosząc się nawzajem), odgrywa kluczową rolę. Dlatego bez względu na to, jak silne są zależności między atrybutami, naiwne Bayesa mogą być nadal optymalne, jeśli zależności rozkładają się równomiernie w klasach lub jeśli zależności się znoszą


1
Jakościowo ma to sens. Funkcje zależne spowodują ważenie - więc równomierny rozkład lub rozkład, który anuluje, anuluje to ważenie. Jednak zależności „krzywej” prawdopodobnie będą nadal słabo funkcjonować? Myślę, że na przykład spamu, powinniśmy spodziewać się wielu zależności dla funkcji + spam, ale niekoniecznie - funkcji spamu w ogólnym przypadku. Jednak osoba może otrzymać wiele wiarygodnych wiadomości e-mail na określony temat, więc w takim przypadku istniałoby wiele zależnych funkcji - które równoważyłyby funkcje + spam.
wygrał

3
Polecam również ten artykuł: cs.stanford.edu/people/ang/papers/…
Dow

25

Większość problemów z uczeniem maszynowym jest łatwa!

Zobacz na przykład na blogu Johna Langforda . To, co tak naprawdę mówi, to to, że ML sprawia, że ​​problemy stają się łatwe, a to stanowi problem dla badaczy, czy powinni próbować stosować metody do szerokiego zakresu prostych problemów, czy atakować trudniejsze problemy. Jednak produktem ubocznym jest to, że w przypadku wielu problemów dane można rozdzielić liniowo (lub przynajmniej prawie), w którym to przypadku dowolny klasyfikator liniowy będzie działał dobrze! Tak się składa, że ​​autorzy oryginalnej bibuły filtrującej spam wybrali Naive Bayes, ale gdyby zastosowali Perceptron, SVM, Fisher Discriminant Analysis, Logistic Regression, AdaBoost lub cokolwiek innego, to prawdopodobnie działałoby.

Fakt, że kodowanie algorytmu jest stosunkowo łatwe, pomaga. Na przykład, aby zakodować SVM, albo musisz mieć QP Solver , albo musisz zakodować algorytm SMO, co nie jest trywialnym zadaniem. Możesz oczywiście pobrać libsvm, ale na początku ta opcja nie była dostępna. Istnieje jednak wiele innych prostych algorytmów (w tym wspomniany powyżej Perceptron), które są tak samo łatwe do kodowania (i umożliwiają przyrostowe aktualizacje, jak wspomniano w pytaniu).

W przypadku trudnych problemów nieliniowych potrzebne są oczywiście metody, które mogą poradzić sobie z nieliniowcami. Ale nawet to może być stosunkowo prostym zadaniem, gdy stosowane są Metody jądra . Często pojawia się pytanie „jak zaprojektować efektywną funkcję jądra dla moich danych” zamiast „Jakiego klasyfikatora powinienem użyć”.


Myślę, że „łatwy” jest może względny, ale tak, klasyfikacja spamu jest „łatwiejsza” niż myślę, że większość ludzi przypuszczała 12 lat temu. Metody jądra mogą być podejściem do tworzenia szybkiego i prostego klasyfikatora, ale „Jak zaprojektować efektywną funkcję jądra dla moich danych” wydaje się, że część uczenia maszynowego staje się „uczeniem się człowieka” (tj. Lepszym zrozumieniem danych i jego wzajemne relacje)?
wygrał

1
Tak, jest względny, a także istnieje wiele problemów, więc wciąż istnieje wiele trudnych! I myślę, że granica między ML a ludzkim uczeniem się jest zawsze rozmyta ... jeśli tworzysz super fantazyjny model probabilistyczny, robisz to samo. Stary dobry NFLT mówi nam, że jedna metoda nie może rozwiązać wszystkich problemów, jakkolwiek skomplikowana jest ta metoda, dlatego zawsze będziemy potrzebować ludzi do projektowania modeli / jąder / algorytmów lub czegokolwiek, co jest potrzebne, aby uzyskać więcej z twoich danych.
tdc

prawda - zdecydowanie rozmyta linia!
wygrał w

1
Dlaczego głosowanie negatywne? Chcesz komentować?
tdc

7

Po obszernym stosowaniu Naiwnych klasyfikatorów bayesowskich w narzędziach do klasyfikacji segmentacyjnej, moje doświadczenie jest spójne z opublikowanymi artykułami wykazującymi, że NBC jest porównywalna pod względem dokładności z dyskryminatorem liniowym i CART / CHAID, gdy wszystkie zmienne predykcyjne są dostępne.

(Dokładność zarówno „wskaźnika trafień” w przewidywaniu poprawnego rozwiązania jako najbardziej prawdopodobnego, jak i kalibracji, co oznacza, powiedzmy, 75% szacunkowego członkostwa jest słuszne w 70% -80% przypadków.)

Moje dwa centy to to, że NBC działa tak dobrze, ponieważ:

  • Korelacja między zmiennymi predykcyjnymi nie jest tak silna, jak mogłoby się wydawać (typowe wyniki wzajemnych informacji od 0,05 do 0,15)
  • NBC dobrze radzi sobie z dyskretnymi zmiennymi politomicznymi, nie wymagając od nas surowej dychotomizacji lub traktowania zmiennych porządkowych jako kardynalnych.
  • NBC używa wszystkich zmiennych jednocześnie, podczas gdy CART / CHAID używają tylko kilku

I wtedy obserwowane są wszystkie zmienne. To, co sprawia, że ​​NBC naprawdę odrywa się od paczki, to to, że z wdziękiem ulega degradacji, gdy brakuje jednej lub więcej zmiennych predykcyjnych lub nie są one obserwowane. W tym przypadku CART / CHAID i liniowa analiza dyskryminacyjna zatrzymują się na płasko.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.