Em Naive Bayes, por que se preocupar com a suavização de Laplace quando temos palavras desconhecidas no conjunto de testes?

27

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.cw

O estimador de probabilidade máxima para éP(w|c)

count(w,c)count(c)=counts w in class ccounts of words in class c.

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.P(w|c)0

Seja V o conjunto de palavras no conjunto de treinamento, adicione um novo elemento (para desconhecido) ao conjunto de palavras.UNK

Definir

P(w|c)=count(w,c)+1count(c)+|V|+1,

onde se refere ao vocabulário (as palavras no conjunto de treinamento).V

Em particular, qualquer palavra desconhecida terá probabilidade

1count(c)+|V|+1.

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? 1count(c)+|V|+1

Matt O'Brien
fonte
3
Caso contrário, qualquer declaração que encontrar contendo uma palavra anteriormente não vista terá . Isso significa que um evento impossível aconteceu. O que significa que seu modelo era incrivelmente ruim. Também em um modelo bayesiano adequado, isso nunca poderia acontecer, pois a probabilidade de palavras desconhecidas teria um numerador fornecido pelo anterior (possivelmente não 1). Portanto, não sei por que isso requer o nome sofisticado 'Laplace smoothing'. p=0
conjeturas
11
Qual foi o texto de onde veio a leitura?
wordsforthewise 31/01

Respostas:

17

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.

Sid
fonte
Eu odeio parecer um idiota completo, mas você se importaria de elaborar? Como remover "Alex" e "Steve" altera a probabilidade de ocorrência da declaração?
22814 Matt O'Brien
2
Se assumirmos independência do palavras P (Alex) P (Steve) P (MET) << P (MET)
Sid
11
poderíamos criar um vocabulário ao treinar o modelo no conjunto de dados de treinamento. Por que não apenas remover todas as novas palavras que não ocorrem no vocabulário ao fazer previsões no conjunto de dados de teste?
abacate
15

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, e

P(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.

RVC
fonte
por que manteríamos uma palavra que não existe no vocabulário? por que não removê-lo?
abacate
4
se o seu classificador classifica um e-mail com probabilidade de ser ham, então p (ham | w1, ..., wn) é 0,9, não p (w1, ..., wn | ham)
braaterAfrikaaner
5

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

m=|V|,n=ni

Se assumirmos que a distribuição anterior de é uma distribuição uniforme, podemos calcular sua distribuição de probabilidade condicional comopi

p(p1,p2,...,pm|n1,n2,...,nm)=Γ(n+m)i=1mΓ(ni+1)i=1mpini

podemos descobrir que é de fato a distribuição Dirichlet, e a expectativa de épi

E[pi]=ni+1n+m

Uma estimativa natural para é a média da distribuição posterior. Portanto, podemos fornecer ao estimador Bayes de :pipi

p^i=E[pi]

Você pode ver que apenas chegamos à mesma conclusão que a Laplace Smoothing.

Response777
fonte
4

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.

P(C|d)=argmaxCip(ti|C)P(C)P(d)argmaxCip(ti|C)P(C)
tid

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) .tktk

P(C|d)argmaxCtkip(ti|C)P(C)=argmaxCP(C)ikp(ti|C)tkp(tk|C)=argmaxCP(C)ikp(ti|C)

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.

jpmuc
fonte
2

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:

  1. Você não perde as informações de contagem nas aulas em que essas informações estão disponíveis e
  2. Você não precisa lidar com contagens zero.

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).

Aiaioo Labs
fonte
2
@ Aiaioo Labs Você não percebeu que ele estava se referindo a palavras que não apareciam no conjunto de treinamento. Por exemplo, ele estava se referindo a dizer que, se D aparecesse, o problema não é o laplace suavizando os cálculos do conjunto de treinamento e não o conjunto de teste. O uso da suavização de laplace em palavras desconhecidas do conjunto TEST faz com que a probabilidade seja inclinada para qualquer classe que tenha a menor quantidade de tokens devido a 0 + 1/2 + 3 ser maior que 0 + 1/3 + 3 (se uma das classes tiver 3 tokens e o outro tinha 2). ...
2
Na verdade, isso pode transformar uma classificação correta em uma classificação incorreta se palavras desconhecidas suficientes forem suavizadas na equação. A suavização de Laplace é adequada para cálculos de conjuntos de treinamento, mas prejudicial para a análise de conjuntos de testes. Imagine também que você tenha um conjunto de testes com todas as palavras desconhecidas; ele deve ser classificado imediatamente para a classe com maior probabilidade, mas, na verdade, pode e geralmente não será classificado como tal e geralmente é classificado como a classe com a menor quantidade de fichas.
@DrakeThatcher, concordo plenamente com você, sim, se não removermos palavras que não estão no vocabulário, os probos previstos serão inclinados para a classe com o menor número de palavras.
abacate
1

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.

Sarthak Khanna
fonte
1

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.

samthebest
fonte