Eu estava lendo a Classificação Naive Bayes hoje. Eu li, sob o título Estimativa de parâmetros, com 1 suavização :
Vamos referem-se a uma classe (como positiva ou negativa), e deixe referem-se a um símbolo ou palavra.
O estimador de probabilidade máxima para é
Essa estimativa de pode ser problemática, pois nos daria probabilidade para documentos com palavras desconhecidas. Uma maneira comum de resolver esse problema é usar a suavização de Laplace.
Seja V o conjunto de palavras no conjunto de treinamento, adicione um novo elemento (para desconhecido) ao conjunto de palavras.
Definir
onde se refere ao vocabulário (as palavras no conjunto de treinamento).
Em particular, qualquer palavra desconhecida terá probabilidade
Minha pergunta é a seguinte: por que nos incomodamos com essa suavização de Laplace? Se essas palavras desconhecidas que encontramos no conjunto de testes tiverem uma probabilidade que é obviamente quase zero, ou seja, , qual é o sentido de incluí-los no modelo? Por que não ignorar e excluí-los?
Respostas:
Você sempre precisa dessa probabilidade 'à prova de falhas'.
Para ver por que considere o pior caso em que nenhuma das palavras da amostra de treinamento aparece na frase de teste. Nesse caso, no seu modelo, concluiríamos que a sentença é impossível, mas existe claramente criando uma contradição.
Outro exemplo extremo é a frase de teste "Alex conheceu Steve". onde "conheceu" aparece várias vezes na amostra de treinamento, mas "Alex" e "Steve" não. Seu modelo concluiria que é muito provável que essa afirmação não seja verdadeira.
fonte
Digamos que você tenha treinado seu Classificador Naive Bayes em 2 classes, "Ham" e "Spam" (ou seja, ele classifica os e-mails). Por uma questão de simplicidade, assumiremos que as probabilidades anteriores são 50/50.
Agora, digamos que você tenha um e-mail que seu classificador classifique muito como "Ham", digamos e(w1,w2,...,wn) P(Ham|w1,w2,...wn)=.90 P(Spam|w1,w2,..wn)=.10
Por enquanto, tudo bem.
Agora, digamos que você tenha outro email exatamente o mesmo que o email acima, exceto que há uma palavra que não está incluída no vocabulário. Portanto, como a contagem dessa palavra é 0,(w1,w2,...,wn,wn+1) P(Ham|wn+1)=P(Spam|wn+1)=0
De repente, eP(Ham|w1,w2,...wn,wn+1)=P(Ham|w1,w2,...wn)∗P(Ham|wn+1)=0 P(Spam|w1,w2,..wn,wn+1)=P(Spam|w1,w2,...wn)∗P(Spam|wn+1)=0
Apesar de o 1º email ser fortemente classificado em uma classe, esse segundo email pode ser classificado de maneira diferente, pois a última palavra tem probabilidade de zero.
A suavização de Laplace resolve isso, dando à última palavra uma pequena probabilidade diferente de zero para ambas as classes, para que as probabilidades posteriores não caiam repentinamente para zero.
fonte
Essa questão é bastante simples se você estiver familiarizado com os estimadores de Bayes, pois é a conclusão direta do estimador de Bayes.
Na abordagem bayesiana, os parâmetros são considerados uma quantidade cuja variação pode ser descrita por uma distribuição de probabilidade (ou distribuição anterior).
Portanto, se considerarmos o procedimento de coleta como distribuição multinomial, poderemos resolver a questão em algumas etapas.
Primeiro, defina
Se assumirmos que a distribuição anterior de é uma distribuição uniforme, podemos calcular sua distribuição de probabilidade condicional comopi
podemos descobrir que é de fato a distribuição Dirichlet, e a expectativa de épi
Uma estimativa natural para é a média da distribuição posterior. Portanto, podemos fornecer ao estimador Bayes de :pi pi
Você pode ver que apenas chegamos à mesma conclusão que a Laplace Smoothing.
fonte
Desrespeitar essas palavras é outra maneira de lidar com isso. Corresponde à média (integração) de todas as variáveis ausentes. Então o resultado é diferente. Quão?
Supondo a notação usada aqui : onde são os tokens no vocabulário é um documento.
Digamos que o token não apareça. Em vez de usar uma suavização de Laplace (que vem da imposição de um Dirichlet antes na multinacional Bayes), você que corresponde a dizer: Faço uma votação ponderada sobre todas as possibilidades dos tokens desconhecidos (com ou não) .tk tk
Mas, na prática, prefere-se a abordagem de suavização. Em vez de ignorar esses tokens, você atribui a eles uma baixa probabilidade, que é como pensar: se eu tenho tokens desconhecidos, é mais improvável que seja o tipo de documento que eu pensaria que seria.
fonte
Você quer saber por que nos preocupamos com a suavização em um classificador Naive Bayes (quando podemos jogar fora os recursos desconhecidos).
A resposta para sua pergunta é: nem todas as palavras precisam ser desconhecidas em todas as classes.
Digamos que haja duas classes M e N com os recursos A , B e C , da seguinte maneira:
M: A = 3, B = 1, C = 0
(Na classe M , A aparece 3 vezes e B apenas uma vez)
N: A = 0, B = 1, C = 3
(Na classe N , C aparece 3 vezes e B apenas uma vez)
Vamos ver o que acontece quando você joga fora os recursos que aparecem zero vezes.
A) Jogue fora os recursos que aparecem zero vezes em qualquer classe
Se você jogar fora os recursos A e C porque eles aparecem zero vezes em qualquer uma das classes, você só terá o recurso B para classificar os documentos.
E perder essas informações é uma coisa ruim, como você verá abaixo!
Se você receber um documento de teste da seguinte maneira:
B = 1, C = 3
(Ele contém B uma vez e C três vezes)
Agora, desde que você tenha descartado os recursos A e B , você não será capaz de dizer se o documento acima pertence à classe M ou classe N .
Portanto, perder qualquer informação de recurso é uma coisa ruim!
B) Jogue fora os recursos que aparecem zero vezes em todas as classes
É possível contornar esse problema descartando apenas os recursos que aparecem zero vezes em todas as classes?
Não, porque isso criaria seus próprios problemas!
O documento de teste a seguir ilustra o que aconteceria se fizéssemos isso:
A = 3, B = 1, C = 1
A probabilidade de M e N se tornaria zero (porque não descartamos a probabilidade zero de A na classe N e a probabilidade zero de C na classe M ).
C) Não jogue nada fora - use suavização
A suavização permite que você classifique os dois documentos acima corretamente porque:
Naive Bayes Classifiers Na Prática
O classificador Naive Bayes no NLTK costumava jogar fora os recursos que tinham contagem zero em qualquer uma das classes.
Isso costumava ter um desempenho ruim quando treinado usando um procedimento EM rígido (onde o classificador é inicializado com muito poucos dados de treinamento).
fonte
Eu também me deparei com o mesmo problema enquanto estudava Naive Bayes.
De acordo comigo, sempre que encontrarmos um exemplo de teste que não encontramos durante o treinamento, a probabilidade posterior será 0.
Portanto, adicionando o 1, mesmo que nunca treinemos em um recurso / classe específico, a probabilidade posterior nunca será 0.
fonte
Matt, você está certo, você levanta um ponto muito bom - sim Laplace Smoothing é francamente absurdo! Simplesmente jogar fora esses recursos pode ser uma abordagem válida, principalmente quando o denominador também é um número pequeno - simplesmente não há evidências suficientes para apoiar a estimativa de probabilidade.
Tenho uma forte aversão a resolver qualquer problema através do uso de algum ajuste arbitrário. O problema aqui é zeros, a "solução" é apenas "adicionar algum valor pequeno a zero, para que não seja mais zero - MAGIC, o problema não existe mais". Claro que isso é totalmente arbitrário.
Sua sugestão de uma melhor seleção de recursos para começar é uma abordagem menos arbitrária e o IME aumenta o desempenho. Além disso, o Laplace Smoothing em conjunto com o ingênuo Bayes, conforme o modelo piorou o problema de granularidade - ou seja, o problema em que o resultado das pontuações tende a ser próximo de 1,0 ou 0,0 (se o número de recursos for infinito, cada pontuação será 1,0 ou 0,0 - isto é uma consequência da suposição de independência).
Agora existem técnicas alternativas para estimativa de probabilidade (que não sejam a probabilidade máxima + suavização de Laplace), mas estão massivamente sub-documentadas. De fato, existe todo um campo chamado Lógica Indutiva e Processos de Inferência que usam muitas ferramentas da Teoria da Informação.
O que usamos na prática é a Atualização Mínima de Entropia Cruzada, que é uma extensão da Atualização de Jeffrey, onde definimos a região convexa do espaço de probabilidade consistente com a evidência de ser a região, de modo que um ponto nela significaria que a estimativa de Máxima Verossimilhança está dentro do Desvio absoluto esperado a partir do ponto.
Isso tem uma boa propriedade que, à medida que o número de pontos de dados diminui, as estimativas aproximam-se suavemente do anterior - e, portanto, seu efeito no cálculo bayesiano é nulo. Por outro lado, a suavização de Laplace faz com que cada estimativa se aproxime do ponto de Entropia máxima que pode não ser o anterior e, portanto, o efeito no cálculo não é nulo e apenas adiciona ruído.
fonte