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?
źródło
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ć”.
źródło
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ż:
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.
źródło