Aparentemente, o Naive Bayes lida com os dados ausentes de maneira diferente, dependendo se eles existem em instâncias de treinamento ou teste / classificação.
Ao classificar instâncias, o atributo com o valor ausente simplesmente não é incluído no cálculo de probabilidade ( http://www.inf.ed.ac.uk/teaching/courses/iaml/slides/naive-2x2.pdf )
No treinamento, "a instância [com os dados ausentes] não é incluída na contagem de frequências para a combinação de classe de valor e atributo". ( http://www.csee.wvu.edu/~timm/cs591o/old/BasicMethods.html )
Isso significa que determinado registro de treinamento simplesmente não está incluído na fase de treinamento? Ou isso significa outra coisa?
Respostas:
Em geral, você tem uma opção ao lidar com valores ausentes ao treinar um classificador Bayes ingênuo. Você pode optar por
Usarei o exemplo vinculado acima para demonstrar essas duas abordagens. Suponha que adicionemos mais um registro de treinamento a esse exemplo.
Se decidirmos omitir o último registro devido ao
outlook
valor ausente , teríamos exatamente o mesmo modelo treinado conforme discutido no link.Também podemos optar por usar todas as informações disponíveis neste registro. Poderíamos optar por simplesmente omitir o atributo
outlook
desse registro. Isso produziria a seguinte tabela atualizada.Observe que há 15 observações para cada atributo , exceto
Outlook
que possui apenas 14. Isso ocorre porque esse valor não estava disponível para o último registro. Todo o desenvolvimento continuaria conforme discutido no artigo vinculado.Por exemplo, no pacote R, a
e1071
implementação naiveBayes tem a opçãona.action
que pode ser definida como na.omit ou na.pass.fonte