Naive Bayes deve gerar previsões devido a recursos ausentes (scikit learn)

7

Como o Naive Bayes usa a probabilidade para fazer uma previsão e trata os recursos como condicionalmente independentes um do outro, faz sentido que o modelo ainda possa fazer uma previsão, pois há alguns recursos ausentes nos dados de teste.

Eu sei que é prática comum atribuir dados ausentes, mas por que fazer isso quando Naïve Bayes deve ser capaz de fazer uma previsão, considerando que existem alguns recursos ausentes?

Isso pode ser implementado no sci-kit learn? Tentei um conjunto de testes com menos recursos e obtive um ValueError porque as formas não estão alinhadas.

Então, teoricamente, isso é possível, mas é possível no scikit learn?

gbhrea
fonte

Respostas:

4

Sua pergunta é sensata. A maneira pela qual a probabilidade posterior é calculada no classificador clássico de Naive Bayes (no sklearn) é como a soma das probabilidades condicionais de todos os recursos do conjunto de dados. Mesmo que os recursos sejam tratados como condicionalmente independentes, para aprender a probabilidade de classificação, todos os recursos são sempre usados ​​nesta configuração. Uma vez que o modelo foi aprendido, você ainda possui todos esses recursos para calcular o posterior para uma nova observação. A independência condicional é apenas uma suposição que é feita para fazer as estatísticas e a matemática obedecerem às regras e funcionarem.

Mas modificando levemente a maneira como o posterior é calculado, você pode usar a abordagem bayesiana para fazer previsões, mesmo com a ausência de certas características. Usar a abordagem bayesiana para fazer previsões na ausência de certas características ainda é um trabalho em andamento. Você pode dar uma olhada neste artigo, no qual a abordagem bayesiana é aplicada à astronomia para fazer a classificação com valores ausentes.

O Naive Bayes pode ser facilmente implementado em python, pois é um cálculo simples. O sklearn Naive Bayes não suporta previsões com valores ausentes e pode ser complicado de implementar no que você está pensando. Talvez escrever seu próprio pedaço de código seja melhor :)

Arun Aniyan
fonte