Como o classificador ingênuo de Bayes lida com os dados ausentes no treinamento?

7

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?

Matstsair
fonte
11
Talvez Laplace Smoothing é o que você está procurando? en.wikipedia.org/wiki/Additive_smoothing
Regenschein
sobre o comentário, observe que 'valor ausente' é diferente de 'probabilidade zero'. Probabilidade zero significa que conhecemos o valor e ele é zero. Mas a falta de valor significa que não sabemos a probabilidade. 'Poderia ser' zero. Mas também pode ser 0,75 ou 0,3 ou qualquer valor entre 0 e 1. Mas simplesmente não sabemos disso. E usamos a suavização da Lapônia para lidar com o problema de probabilidade zero. não falta problema de valor. para o problema de valor ausente, simplesmente ignoramos esse atributo, como indicado na resposta acima.
Kavin Ranawella

Respostas:

10

Em geral, você tem uma opção ao lidar com valores ausentes ao treinar um classificador Bayes ingênuo. Você pode optar por

  1. Omita registros com quaisquer valores ausentes,
  2. Omita apenas os atributos ausentes.

Usarei o exemplo vinculado acima para demonstrar essas duas abordagens. Suponha que adicionemos mais um registro de treinamento a esse exemplo.

Outlook  Temperature  Humidity   Windy   Play
-------  -----------  --------   -----   ----
rainy    cool        normal    TRUE    no
rainy    mild        high      TRUE    no
sunny    hot         high      FALSE   no
sunny    hot         high      TRUE    no
sunny    mild        high      FALSE   no
overcast cool        normal    TRUE    yes
overcast hot         high      FALSE   yes
overcast hot         normal    FALSE   yes
overcast mild        high      TRUE    yes
rainy    cool        normal    FALSE   yes
rainy    mild        high      FALSE   yes
rainy    mild        normal    FALSE   yes
sunny    cool        normal    FALSE   yes
sunny    mild        normal    TRUE    yes
NA       hot         normal    FALSE   yes
  1. Se decidirmos omitir o último registro devido ao outlookvalor ausente , teríamos exatamente o mesmo modelo treinado conforme discutido no link.

  2. Também podemos optar por usar todas as informações disponíveis neste registro. Poderíamos optar por simplesmente omitir o atributo outlookdesse registro. Isso produziria a seguinte tabela atualizada.

           Humidade da temperatura do Outlook   
==================== ================= ============= ====  
          Sim Não Sim Não Sim Não 
Ensolarado 2 3 Quente 3 2 Alto 3 4
Encoberto 4 0 Leve 4 2 Normal 7 1 
Chuvoso 3 2 Frio 3 1
          ----------- --------- ---------- 
Ensolarado 2/9 3/5 Quente 3/10 2/5 Alto 3/10 4/5 
Encoberto 4/9 0/5 Leve 4/10 2/5 Normal 7/10 1/5
Chuvoso 3/9 2/5 Fresco 3/10 1/5


            Windy Play
================= ========
      Sim Não Sim Não
Falso 7 2 10 5
Verdadeiro 3 3
      ---------- ----------
Falso 7/10 2/5 10/15 15/5
Verdadeiro 3/10 3/5

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 e1071implementação naiveBayes tem a opção na.actionque pode ser definida como na.omit ou na.pass.

user51855
fonte