Os classificadores Naive Bayes são uma escolha popular para problemas de classificação. Existem muitas razões para isso, incluindo:
- "Zeitgeist" - amplo conhecimento após o sucesso dos filtros de spam, cerca de dez anos atrás
- Fácil de escrever
- O modelo do classificador é rápido de construir
- O modelo pode ser modificado com novos dados de treinamento sem precisar reconstruir o modelo
No entanto, eles são "ingênuos" - isto é, assumem que os recursos são independentes - isso contrasta com outros classificadores, como os classificadores Maximum Entropy (que são lentos na computação).
Normalmente, a suposição de independência não pode ser assumida e, em muitos casos (incluindo a maioria?), Incluindo o exemplo de filtro de spam, ela está simplesmente errada.
Então, por que o Naive Bayes Classifier ainda funciona muito bem nessas aplicações, mesmo quando os recursos não são independentes um do outro?
fonte
A maioria dos problemas de aprendizado de máquina é fácil!
Veja, por exemplo, o blog de John Langford . O que ele realmente está dizendo é que o ML facilita os problemas, e isso representa um problema para os pesquisadores em termos de se eles devem tentar aplicar métodos a uma ampla gama de problemas simples ou atacar problemas mais difíceis. No entanto, o subproduto é que, para muitos problemas, os dados são Separáveis Linearmente (ou pelo menos quase), caso em que qualquer classificador linear funcionará bem! Acontece que os autores do papel de filtro de spam original optaram por usar o Naive Bayes, mas eles usaram um Perceptron, SVM, Fisher Discriminant Analysis, Logistic Regression, AdaBoost ou praticamente qualquer outra coisa que provavelmente teria funcionado também.
O fato de ser relativamente fácil codificar o algoritmo ajuda. Por exemplo, para codificar o SVM, você precisa ter um QP Solver ou codificar o algoritmo SMO, que não é uma tarefa trivial. Obviamente, você poderia baixar o libsvm, mas nos primeiros dias essa opção não estava disponível. No entanto, existem muitos outros algoritmos simples (incluindo o Perceptron mencionado acima) que são tão fáceis de codificar (e permitem atualizações incrementais quanto a pergunta).
Para problemas não lineares difíceis, é claro que são necessários métodos que possam lidar com os não lineares. Mas mesmo isso pode ser uma tarefa relativamente simples quando os Métodos do Kernel são empregados. A questão geralmente se torna "Como faço para projetar uma função eficaz do kernel para meus dados" em vez de "Qual classificador devo usar".
fonte
Tendo usado extensivamente os classificadores Naive Bayesian em ferramentas de classificação por segmentação, minha experiência é consistente com artigos publicados que mostram que a NBC é comparável em precisão a discriminante linear e CART / CHAID quando todas as variáveis preditivas estão disponíveis.
(Por precisão, a "taxa de acertos" em prever a solução correta como a mais provável, bem como a calibração, significam que, digamos, uma estimativa de associação de 75% está correta em 70% a 80% dos casos.
Meus dois centavos é que a NBC funciona tão bem porque:
E é aí que todas as variáveis são observadas. O que faz a NBC realmente se afastar do pacote é que ela se degrada normalmente quando uma ou mais variáveis preditivas estão ausentes ou não são observadas. CART / CHAID e análise discriminante linear param nesse caso.
fonte