Naive Bayes-Klassifikatoren sind eine beliebte Wahl für Klassifizierungsprobleme. Dafür gibt es viele Gründe, darunter:
- "Zeitgeist" - weit verbreitetes Bewusstsein nach dem Erfolg von Spam-Filtern vor etwa zehn Jahren
- Einfach zu schreiben
- Das Klassifikatormodell ist schnell zu erstellen
- Das Modell kann mit neuen Trainingsdaten geändert werden, ohne dass das Modell neu erstellt werden muss
Sie sind jedoch "naiv", dh sie gehen davon aus, dass die Funktionen unabhängig sind. Dies steht im Gegensatz zu anderen Klassifikatoren wie Maximum Entropy-Klassifikatoren (die nur langsam berechnet werden).
Die Unabhängigkeitsannahme kann normalerweise nicht angenommen werden und ist in vielen (den meisten?) Fällen, einschließlich des Spam-Filter-Beispiels, einfach falsch.
Warum funktioniert der Naive Bayes-Klassifikator in solchen Anwendungen immer noch sehr gut, auch wenn die Funktionen nicht unabhängig voneinander sind?
quelle
Die meisten Probleme mit maschinellem Lernen sind einfach!
Siehe zum Beispiel auf John Langfords Blog . Was er wirklich sagt, ist, dass ML Probleme leicht macht, und dies ist ein Problem für Forscher, da sie versuchen sollten, Methoden auf eine breite Palette einfacher Probleme anzuwenden oder schwierigere Probleme anzugreifen. Das Nebenprodukt ist jedoch, dass die Daten bei vielen Problemen linear (oder zumindest nahezu) trennbar sind. In diesem Fall funktioniert jeder lineare Klassifikator gut! Es ist einfach so, dass die Autoren des ursprünglichen Spam-Filterpapiers Naive Bayes gewählt haben, aber wenn sie Perceptron, SVM, Fisher Discriminant Analysis, Logistic Regression, AdaBoost oder so ziemlich alles andere verwendet hätten, hätte es wahrscheinlich auch funktioniert.
Die Tatsache, dass es relativ einfach ist, den Algorithmus zu codieren, hilft. Um beispielsweise die SVM zu codieren, benötigen Sie entweder einen QP-Solver , oder Sie müssen den SMO-Algorithmus codieren, was keine triviale Aufgabe ist. Sie könnten natürlich libsvm herunterladen, aber in den Anfängen war diese Option nicht verfügbar. Es gibt jedoch viele andere einfache Algorithmen (einschließlich des oben erwähnten Perceptron), die genauso einfach zu codieren sind (und inkrementelle Aktualisierungen ermöglichen, wie in der Frage erwähnt).
Für schwierige nichtlineare Probleme werden natürlich Methoden benötigt, die sich mit Nichtlinearitäten befassen können. Aber auch dies kann eine relativ einfache Aufgabe sein, wenn Kernel-Methoden verwendet werden. Die Frage lautet dann oft "Wie entwerfe ich eine effektive Kernelfunktion für meine Daten?" Und nicht "Welchen Klassifikator soll ich verwenden?".
quelle
Nachdem ich Naive Bayesian Classifiers ausgiebig in Segmentierungsklassifizierungswerkzeugen verwendet habe, stimmen meine Erfahrungen mit veröffentlichten Veröffentlichungen überein, die zeigen, dass NBC in Bezug auf Genauigkeit mit linearer Diskriminante und CART / CHAID vergleichbar ist, wenn alle Prädiktorvariablen verfügbar sind.
(Aufgrund der Genauigkeit sind sowohl die "Trefferquote" bei der Vorhersage der wahrscheinlichsten richtigen Lösung als auch die Kalibrierung, dh eine Schätzung der Mitgliederzahl von beispielsweise 75%, in 70% -80% der Fälle richtig.)
Meine zwei Cent ist, dass NBC so gut funktioniert, weil:
Und dann werden alle Variablen beobachtet. Was NBC wirklich davon abhält, ist, dass es sich elegant verschlechtert, wenn eine oder mehrere Prädiktorvariablen fehlen oder nicht beobachtet werden. In diesem Fall bleiben CART / CHAID und die lineare Diskriminanzanalyse unverändert.
quelle