Naive Bayes

Exemplo de classificador naive Bayes representado como rede bayesiana.

Em estatística, os classificadores naive Bayes (em português, também Bayes ingênuo; na literatura em inglês, também chamados simple Bayes, independence Bayes ou idiot's Bayes) são uma família de classificadores probabilísticos que supõem que os atributos são condicionalmente independentes dada a classe.:p. 385–386:seç. 13.2, p. 258, e seç. 13.4, p. 268 Em outras palavras, o modelo supõe que, uma vez conhecida a classe, o valor de um atributo não traz nenhuma informação adicional sobre os valores dos demais. Essa suposição de independência condicional raramente é verdadeira na prática, e é por ela ser tão "ingênua" (naive, em inglês) que o classificador recebe esse nome.:p. 385–387:p. 104:seç. 13.4, p. 268 Representado como rede bayesiana, o classificador tem a estrutura mais simples possível: a classe é o único pai de cada atributo, e não há arestas entre os atributos.:p. 132–134 (fig. 1):seç. "Naive Bayes and Augmented Naive Bayes"

Em comparações empíricas extensas, o naive Bayes costuma ficar atrás de outros métodos, inclusive da regressão logística quando há dados de treinamento suficientes, sobretudo na qualidade das probabilidades estimadas: por causa da suposição de independência, ele tende a empurrar as probabilidades previstas para perto de 0 ou de 1, ou seja, a ser confiante demais.:tab. 2 e seç. 7:resumo e seç. 4:p. 388 No entanto, esses classificadores são altamente escaláveis: o número de parâmetros cresce apenas linearmente com o número de atributos (é proporcional ao número de atributos vezes o número de classes), e tanto o treinamento quanto a classificação exigem uma única passagem pelos dados.:p. 261–262, 267 e 270:p. 118 e 127 O treinamento por máxima verossimilhança tem solução em forma fechada: basta contar as observações de cada classe e de cada valor de atributo em cada classe. Já o modelo discriminativo correspondente, a regressão logística, não tem solução em forma fechada conhecida e exige otimização numérica iterativa.:eqs. 13.5–13.6, p. 259:p. 133:p. 271:p. 391

Apesar do uso do teorema de Bayes na regra de decisão, o naive Bayes não é necessariamente um método bayesiano no sentido estatístico, e seus modelos podem ser ajustados aos dados tanto por métodos bayesianos quanto frequencistas.:p. 387 e 391

Introdução

O naive Bayes é uma técnica simples para construir classificadores: modelos que atribuem rótulos de classe a instâncias de um problema, representadas como vetores de valores de atributos, em que os rótulos de classe pertencem a um conjunto finito. Não há um único algoritmo para treinar esses classificadores, mas uma família de algoritmos baseados num princípio comum: todos os classificadores naive Bayes supõem que, dada a variável de classe, o valor de um atributo é independente do valor de qualquer outro atributo. Por exemplo, uma fruta pode ser considerada uma maçã se for vermelha, redonda e tiver cerca de 10 cm de diâmetro. Um classificador naive Bayes considera que cada uma dessas características contribui de forma independente para a probabilidade de a fruta ser uma maçã, ignorando possíveis correlações entre cor, formato e diâmetro dentro de cada classe.:p. 386:seç. 13.2–13.3, p. 258, e seç. 13.4, p. 268

Em muitas aplicações práticas, os parâmetros dos modelos naive Bayes são estimados por máxima verossimilhança (frequências relativas), muitas vezes com suavização; ou seja, é possível trabalhar com o modelo naive Bayes sem aceitar a probabilidade bayesiana nem usar métodos bayesianos.:eqs. 13.5–13.7, p. 259–260:p. 387

Apesar do desenho ingênuo e das suposições aparentemente simplificadas demais, os classificadores naive Bayes funcionam bem em muitas situações reais complexas. Em 1997, Domingos e Pazzani mostraram que o classificador pode ser ótimo sob perda 0-1 mesmo quando a suposição de independência é fortemente violada; em 2004, Zhang mostrou que o que importa é como as dependências entre os atributos se distribuem entre as classes: se elas se distribuem por igual entre as classes ou se cancelam, o naive Bayes continua ótimo.:p. 103:p. 395:resumo e teoremas 1–3 Ainda assim, uma comparação empírica de 2006 entre dez algoritmos, em onze problemas de classificação binária e oito métricas, mostrou que o naive Bayes é superado por outras abordagens, como as árvores de decisão impulsionadas (boosted trees; ver gradient boosting) e as florestas aleatórias.:seç. 1–2, tab. 2 e 4 e seç. 7

Uma vantagem do naive Bayes é precisar de relativamente poucos dados de treinamento para estimar seus parâmetros: como estima poucos parâmetros, pode superar alternativas mais flexíveis com amostras pequenas, e se aproxima do seu erro assintótico com um número de exemplos da ordem de log⁡n, sendo n o número de atributos, contra a ordem de n da regressão logística.:p. 387–389:seç. 3–4

Modelo probabilístico

Em termos abstratos, o naive Bayes é um modelo de probabilidade condicionada: atribui probabilidades p(Ck∣x1,…,xn) a cada uma das K classes possíveis Ck, dada uma instância a classificar, representada por um vetor 𝐱=(x1,…,xn) de n atributos (variáveis independentes).:eq. 13.2, p. 258:p. 103–104

Se o número de atributos n for grande, ou se um atributo puder assumir muitos valores, é inviável basear esse modelo em tabelas de probabilidade. Por isso, o modelo é reformulado para ficar mais tratável. Pelo teorema de Bayes, a probabilidade condicional pode ser decomposta como p(Ck∣𝐱)=p(Ck) p(𝐱∣Ck)p(𝐱). Na terminologia da probabilidade bayesiana, essa equação pode ser escrita como posteriori=priori×verossimilhançaevidência. Na prática, interessa apenas o numerador dessa fração, porque o denominador não depende de C e os valores dos atributos xi são dados, de modo que o denominador é efetivamente constante.:seç. 13.4, eqs. 13.9–13.10, p. 265–266, e eq. 11.4, p. 220:seç. 1.2, eqs. 1.12–1.13, p. 15, e eq. 1.44, p. 22:p. 104

O numerador equivale ao modelo de probabilidade conjunta p(Ck,x1,…,xn), que pode ser reescrito pela regra da cadeia, aplicando repetidamente a definição de probabilidade condicionada: p(Ck,x1,…,xn)=p(x1,…,xn,Ck)=p(x1∣x2,…,xn,Ck) p(x2,…,xn,Ck)=p(x1∣x2,…,xn,Ck) p(x2∣x3,…,xn,Ck) p(x3,…,xn,Ck)=⋯=p(x1∣x2,…,xn,Ck) p(x2∣x3,…,xn,Ck)⋯p(xn−1∣xn,Ck) p(xn∣Ck) p(Ck). Entram então as suposições "ingênuas" de independência condicional: supõe-se que todos os atributos de 𝐱 são mutuamente independentes, condicionalmente à categoria Ck. Sob essa suposição, p(xi∣xi+1,…,xn,Ck)=p(xi∣Ck). Assim, o modelo conjunto pode ser expresso como p(Ck∣x1,…,xn)∝ p(Ck,x1,…,xn)=p(Ck) p(x1∣Ck) p(x2∣Ck) p(x3∣Ck) ⋯=p(Ck)∏i=1np(xi∣Ck), em que ∝ indica proporcionalidade, já que o denominador p(𝐱) foi omitido.:eq. 11.1, p. 220; eq. 12.4, p. 240; eqs. 13.13–13.14, p. 266:eq. 1.11, p. 14:p. 104, eq. 2:p. 386

Isso significa que, sob essas suposições de independência, a distribuição condicional da variável de classe C é p(Ck∣x1,…,xn)=1Z p(Ck)∏i=1np(xi∣Ck), em que a evidência Z=p(𝐱)=∑kp(Ck) p(𝐱∣Ck) é um fator de escala que depende apenas de x1,…,xn, isto é, uma constante se os valores dos atributos forem conhecidos.:eq. 1.13, p. 15:eq. 11.4, p. 220

Muitas vezes, basta discriminar entre as classes. Nesse caso, o fator de escala é irrelevante, e basta calcular a log-probabilidade a menos de uma constante: ln⁡p(Ck∣x1,…,xn)=ln⁡p(Ck)+∑i=1nln⁡p(xi∣Ck)−ln⁡Z⏟irrelevante. O fator de escala é irrelevante porque se cancela na comparação entre classes: ln⁡p(Ck∣x1,…,xn)p(Cl∣x1,…,xn)=(ln⁡p(Ck)+∑i=1nln⁡p(xi∣Ck))−(ln⁡p(Cl)+∑i=1nln⁡p(xi∣Cl)). Trabalhar com logaritmos tem duas vantagens: evita o underflow (subfluxo) de ponto flutuante causado pelo produto de muitas probabilidades pequenas e permite ler cada termo ln⁡p(xi∣Ck) como um peso que indica quanto o atributo favorece a classe; a soma dos pesos mede a evidência a favor de cada classe.:seç. 13.2, eq. 13.4, p. 258–259, e seç. 14.4, eq. 14.5, p. 302–303

Construção de um classificador a partir do modelo probabilístico

A discussão até aqui derivou o modelo de atributos independentes, isto é, o modelo probabilístico naive Bayes. O classificador naive Bayes combina esse modelo com uma regra de decisão. Uma regra comum é escolher a hipótese mais provável, de modo a minimizar a probabilidade de classificação errada; ela é conhecida como regra de decisão máximo a posteriori (MAP). O classificador correspondente, um classificador bayesiano, atribui o rótulo de classe ŷ=Ck para o k dado por:p. 103–104, eq. 2:eq. 13.3, p. 258 ŷ=argmaxk∈{1,…,K} p(Ck)∏i=1np(xi∣Ck).

Funções de verossimilhança p(𝐱∣Y), matriz de confusão e curva ROC.

Estimação de parâmetros e modelos de evento

A probabilidade a priori de uma classe pode ser calculada supondo classes equiprováveis, isto é, p(Ck)=1K, ou estimada a partir do conjunto de treinamento::seç. 13.2, eq. 13.5, p. 259:seç. 2.2 priori de uma classe=n.º de amostras da classen.º total de amostras. Para estimar os parâmetros da distribuição de um atributo, é preciso supor uma distribuição ou gerar modelos não paramétricos para os atributos a partir do conjunto de treinamento.:resumo, seç. 2–3

As hipóteses sobre a distribuição dos atributos são chamadas de "modelo de evento" do classificador naive Bayes. Para atributos discretos, como os da classificação de documentos (inclusive a filtragem de spam), são comuns as distribuições multinomial e de Bernoulli. Essas hipóteses levam a dois modelos distintos, ambos chamados de "naive Bayes", o que gerou confusão na literatura.:introdução e seç. "Multi-variate Bernoulli Model" e "Multinomial Model":resumo e seç. 1

Naive Bayes gaussiano

Com dados contínuos, uma hipótese comum é que os valores contínuos associados a cada classe seguem uma distribuição normal (gaussiana). Suponha, por exemplo, que os dados de treinamento contenham um atributo contínuo x. Primeiro, separam-se os dados por classe e calculam-se, em cada classe, a média e a variância de x, estimadas a partir dos dados de treinamento. Sejam μk a média dos valores de x associados à classe Ck e σk2 a variância desses valores. Suponha que se tenha observado um valor v. Então a densidade de probabilidade de v dada a classe Ck, p(x=v∣Ck), pode ser calculada substituindo v na equação de uma distribuição normal de parâmetros μk e σk2::seç. 2, eqs. 2–3, p. 339:seç. 2.4:seç. 2 p(x=v∣Ck)=12πσk2e−(v−μk)22σk2.

Outra técnica comum para valores contínuos é discretizá-los, agrupando-os em intervalos (binning), o que gera novos atributos categóricos (ou binários, um indicador por intervalo). A discretização não é obrigatória, pois é possível modelar diretamente a densidade de cada atributo, por exemplo com uma normal ou por estimativa de densidade por núcleo. Além disso, ela pode perder informação discriminativa, já que deixa de distinguir valores dentro de um mesmo intervalo.:resumo e seç. 2–3:p. 39 e seç. 3, p. 43

Às vezes, a distribuição das densidades marginais condicionadas à classe está longe da normal. Nesses casos, pode-se usar a estimativa de densidade por núcleo para obter estimativas mais realistas das densidades marginais de cada classe. Nos experimentos de John e Langley, que propuseram esse método em 1995, ele aumentou significativamente a acurácia do classificador em 5 dos 11 domínios testados e a reduziu em 2.:seç. 1 e 3 (eq. 4), seç. 5.1 e tab. 2

Naive Bayes multinomial

Com um modelo de evento multinomial, as amostras (vetores de atributos) representam as frequências com que certos eventos foram gerados por uma distribuição multinomial (p1,…,pn), em que pi é a probabilidade de ocorrer o evento i (ou K multinomiais desse tipo, no caso de várias classes). Um vetor de atributos 𝐱=(x1,…,xn) é então um histograma, em que xi conta o número de vezes que o evento i foi observado numa instância. Esse é o modelo de evento usado tipicamente na classificação de documentos, em que os eventos representam a ocorrência de uma palavra num documento (ver modelo saco de palavras).:seç. "Multinomial Model":seç. 13.2, p. 258, e seç. 13.4, p. 265–267 A verossimilhança de observar um histograma 𝐱 é dada por:seç. 2.1, eq. 1 p(𝐱∣Ck)=(∑i=1nxi)!∏i=1nxi!∏i=1npkixi, em que pki:=p(i∣Ck).

Expresso no espaço logarítmico, o classificador naive Bayes multinomial torna-se um classificador linear: log⁡p(Ck∣𝐱)=log⁡p(Ck)+∑i=1nxi⋅log⁡pki+c(𝐱)=bk+𝐰k⊤𝐱+c(𝐱), em que bk=log⁡p(Ck), wki=log⁡pki e c(𝐱) não depende da classe. Fazer os cálculos com somas de logaritmos, em vez de produtos de probabilidades, é vantajoso porque multiplicar muitas probabilidades pequenas pode causar subfluxo (underflow) de ponto flutuante.:seç. 2.1 (eq. 3) e 2.2 (eq. 5):seç. 13.2, eqs. 13.3–13.4, p. 258–259, e seç. 14.4, p. 302–303

Se uma dada classe e um dado valor de atributo nunca ocorrem juntos nos dados de treinamento, a estimativa de probabilidade baseada em frequências será zero, porque é diretamente proporcional ao número de ocorrências do valor do atributo. Isso é problemático, porque, ao multiplicar as probabilidades, anula toda a informação das demais. Por isso, incorpora-se a todas as estimativas uma pequena correção, chamada pseudocontagem (ocorrências fictícias somadas a cada contagem), de modo que nenhuma probabilidade seja exatamente zero. Quando a pseudocontagem é 1, essa forma de regularização do naive Bayes chama-se suavização de Laplace (add-one); com um valor genérico, chama-se suavização aditiva, procedimento que remonta a Lidstone (1920).:seç. 13.2, eq. 13.7, p. 259–260:seç. 2.2, eq. 4:seç. 2, eq. 2

Rennie e colaboradores discutem problemas da hipótese multinomial na classificação de documentos e formas de atenuá-los, como o uso de pesos tf–idf em vez das frequências brutas dos termos e a normalização pelo comprimento do documento, obtendo um classificador naive Bayes competitivo com as máquinas de vetores de suporte na maioria dos conjuntos de dados testados.:resumo, seç. 3–4 e tab. 3–4

Naive Bayes de Bernoulli

No modelo de evento de Bernoulli multivariado, os atributos são variáveis booleanas (binárias) independentes que descrevem as entradas. Como o multinomial, esse modelo é popular em tarefas de classificação de documentos, em que se usam atributos binários de ocorrência dos termos, e não suas frequências. Se xi é um booleano que indica a ocorrência ou a ausência do i-ésimo termo do vocabulário, a verossimilhança de um documento dada a classe Ck é:seç. "Multi-variate Bernoulli Model", eq. 2:seç. 13.3, p. 263–264, e eq. 13.14, p. 266:seç. 2.1 p(𝐱∣Ck)=∏i=1npkixi(1−pki)(1−xi), em que pki é a probabilidade de um documento da classe Ck conter o i-ésimo termo do vocabulário. Esse modelo de evento costuma funcionar melhor com documentos curtos e com poucos atributos (vocabulário pequeno) e tem a vantagem de modelar explicitamente a ausência de termos. Um classificador naive Bayes com modelo de evento de Bernoulli não é o mesmo que um classificador multinomial com as contagens de frequência truncadas em 1.:seç. 13.3, p. 264, e tab. 13.3, p. 268:introdução e discussão:seç. 2.3

Estimação semissupervisionada de parâmetros

Dado um modo de treinar um classificador naive Bayes com dados rotulados, é possível construir um algoritmo de treinamento semissupervisionado, que aprende com uma combinação de dados rotulados e não rotulados, executando o algoritmo de aprendizagem supervisionada em ciclo::seç. 5.1, p. 111–112, e tab. 1, p. 113

  1. dado um conjunto D=L⊎U de amostras rotuladas L e não rotuladas U, começa-se treinando um classificador naive Bayes com L;
  2. até a convergência:
    1. usa-se o classificador atual para estimar as probabilidades de classe P(C∣x) de cada exemplo x de U (os exemplos de L mantêm seus rótulos);
    2. retreina-se o modelo com todos os dados D, usando essas probabilidades, e não rótulos fixos.

A convergência é verificada pela melhora da log-probabilidade do modelo dados os dados, que deve deixar de crescer acima de um limiar.:seç. 5.1, p. 111–112, e tab. 1, p. 113

Esse algoritmo de treinamento é uma instância do algoritmo de maximização de expectativa (EM): a predição dentro do ciclo é o passo E do EM, e o retreinamento do naive Bayes é o passo M. O procedimento justifica-se formalmente ao supor que os dados são gerados por um modelo de mistura cujos componentes correspondem exatamente às classes do problema de classificação.:seç. 3, p. 107, e seç. 5.1, p. 111–112

Discussão

Embora as amplas suposições de independência muitas vezes não sejam exatas, o classificador naive Bayes tem várias propriedades que o tornam surpreendentemente útil na prática. Em particular, como as distribuições dos atributos condicionadas à classe são desacopladas, cada uma pode ser estimada separadamente como uma distribuição unidimensional. Isso reduz em várias ordens de grandeza o número de parâmetros, que sem a suposição de independência cresceria exponencialmente com o número de atributos, e com ele a quantidade de dados necessária.:p. 386–389:seç. 13.4, p. 265–268

Embora o naive Bayes muitas vezes não produza boas estimativas das probabilidades das classes, isso pode não ser necessário em muitas aplicações. Por exemplo, o classificador toma a decisão correta pela regra MAP desde que a classe à qual ele atribui a maior probabilidade seja a mesma de maior probabilidade verdadeira, quer a estimativa de probabilidade seja ligeiramente imprecisa, quer grosseiramente imprecisa. Desse modo, o classificador como um todo pode ser robusto o bastante para ignorar deficiências sérias do modelo probabilístico ingênuo em que se baseia.:p. 113:tab. 13.4, p. 269:resumo e seç. 4

Relação com a regressão logística

No caso de entradas discretas (atributos indicadores ou de frequência para eventos discretos), os classificadores naive Bayes formam um par gerativo-discriminativo com os classificadores de regressão logística multinomial: cada classificador naive Bayes pode ser visto como uma forma de ajustar um modelo probabilístico que otimiza a verossimilhança conjunta p(C,𝐱), enquanto a regressão logística ajusta o mesmo modelo probabilístico para otimizar a condicional p(C∣𝐱).:seç. 1

Mais formalmente, os classificadores naive Bayes com atributos binários estão contidos na classe dos classificadores de regressão logística.:p. 267 e 277–280 (teoremas 2–3):p. 391

Prova

Considere um problema genérico de classificação com K classes, Y∈{1,…,K}, e atributos binários xi∈{−1,+1}. O classificador de Bayes (não ingênuo) dá, pelo teorema de Bayes, p(Y∣X=x)=softmax⁡({ln⁡p(Y=k)+ln⁡p(X=x∣Y=k)}k). O classificador naive Bayes dá p(Y=k∣X=x)=softmax⁡({ln⁡p(Y=k)+12∑i[(ai,k+−ai,k−)xi+(ai,k++ai,k−)]}k), em que ai,s+=ln⁡p(Xi=+1∣Y=s);ai,s−=ln⁡p(Xi=−1∣Y=s). Isso equivale a softmaxk(𝐰k⊤x+bk), com wk,i=12(ai,k+−ai,k−) e bk=ln⁡p(Y=k)+12∑i(ai,k++ai,k−), que é exatamente um classificador de regressão logística (multinomial).

A ligação entre os dois fica clara ao observar que a função de decisão do naive Bayes (no caso binário) pode ser reescrita como "preveja a classe C1 se p(C1∣𝐱) for maior que p(C2∣𝐱)", isto é, se a chance (odds) a favor de C1 for maior que 1. No espaço logarítmico, isso dá log⁡p(C1∣𝐱)p(C2∣𝐱)=log⁡p(C1∣𝐱)−log⁡p(C2∣𝐱)>0. O lado esquerdo dessa equação é o logaritmo da chance (log-odds), ou logit, a quantidade prevista pelo modelo linear subjacente à regressão logística. Como o naive Bayes também é um modelo linear para os dois modelos de evento "discretos", ele pode ser reparametrizado como uma função linear b+𝐰⊤x>0. Obter as probabilidades é então questão de aplicar a função logística a b+𝐰⊤x ou, no caso de várias classes, a função softmax.:seç. 14.4, eqs. 14.3 e 14.5, p. 301–303:seç. 2–3:eq. 8, p. 275

Num par gerativo-discriminativo, o classificador discriminativo tem erro assintótico menor ou igual ao do gerativo; assim, com muitos dados, a regressão logística tende a superar o naive Bayes. Ng e Jordan mostraram, porém, que o naive Bayes se aproxima do seu erro assintótico (mais alto) muito mais depressa, com um número de exemplos da ordem de log⁡n em vez de n, e que, em vários conjuntos de dados reais, ele supera a regressão logística quando há poucos exemplos de treinamento.:seç. 1, 3 (prop. 1–2, corolário 6) e 4 (fig. 1)

Exemplos

Classificação de pessoas

Problema: classificar se uma pessoa é do sexo masculino ou feminino com base em características medidas: altura, peso e tamanho do pé. Embora o classificador naive Bayes as trate como independentes, na realidade elas não são.:p. 386:seç. 2, eqs. 1–3, p. 339

Treinamento

Conjunto de treinamento
Pessoaaltura (pés)peso (libras)tamanho do pé (polegadas)
masculino618012
masculino5,92 (5'11")19011
masculino5,58 (5'7")17012
masculino5,92 (5'11")16510
feminino51006
feminino5,5 (5'6")1508
feminino5,42 (5'5")1307
feminino5,75 (5'9")1509

O classificador obtido do conjunto de treinamento supondo distribuições gaussianas seria o da tabela abaixo. Neste exemplo, as variâncias foram estimadas com a correção de Bessel (divisor n−1), isto é, são variâncias amostrais não enviesadas.:seç. 2, eqs. 2–3, p. 339:seç. 2.4

Pessoamédia (altura)variância (altura)média (peso)variância (peso)média (tamanho do pé)variância (tamanho do pé)
masculino5,8553,5033 × 10−2176,25122,9211,259,1667 × 10−1
feminino5,41759,7225 × 10−2132,5558,337,51,6667

O exemplo supõe classes equiprováveis, de modo que P(masculino) = P(feminino) = 0,5. Essa distribuição a priori poderia se basear no conhecimento das frequências na população maior ou no conjunto de treinamento.:seç. 13.2, eq. 13.5, p. 259:seç. 2.2

Teste

Amostra a classificar como do sexo masculino ou feminino
Pessoaaltura (pés)peso (libras)tamanho do pé (polegadas)
amostra61308

Para classificar a amostra, é preciso determinar qual posteriori é maior, a de masculino ou a de feminino. Para a classificação como masculino, a posteriori é dada por posteriori (masculino)=P(masculino)p(altura∣masculino)p(peso∣masculino)p(pé∣masculino)evidência. Para a classificação como feminino, a posteriori é dada por posteriori (feminino)=P(feminino)p(altura∣feminino)p(peso∣feminino)p(pé∣feminino)evidência. A evidência (também chamada de constante de normalização) pode ser calculada: evidência=P(masculino)p(altura∣masculino)p(peso∣masculino)p(pé∣masculino)+P(feminino)p(altura∣feminino)p(peso∣feminino)p(pé∣feminino). No entanto, dada a amostra, a evidência é uma constante e escala igualmente as duas posterioris. Por isso, não afeta a classificação e pode ser ignorada.:seç. 13.4, eqs. 13.9–13.10, p. 265:eqs. 1.12–1.13, p. 15

A distribuição de probabilidade do sexo da amostra pode agora ser determinada: P(masculino)=0,5 p(altura∣masculino)=12πσ2exp⁡(−(6−μ)22σ2)≈1,5789, em que μ=5,855 e σ2=3,5033⋅10−2 são os parâmetros da distribuição normal determinados antes a partir do conjunto de treinamento. Um valor maior que 1 é aceitável aqui: trata-se de uma densidade de probabilidade, e não de uma probabilidade, porque a altura é uma variável contínua.:seç. 2, eq. 3, p. 339:seç. 2.2

p(peso∣masculino)=12πσ2exp⁡(−(130−μ)22σ2)=5,9881⋅10−6 p(pé∣masculino)=12πσ2exp⁡(−(8−μ)22σ2)=1,3112⋅10−3 numerador da posteriori (masculino)=produto desses valores=6,1984⋅10−9

P(feminino)=0,5 p(altura∣feminino)=2,2346⋅10−1 p(peso∣feminino)=1,6789⋅10−2 p(pé∣feminino)=2,8669⋅10−1 numerador da posteriori (feminino)=produto desses valores=5,3779⋅10−4

Como o numerador da posteriori é maior no caso feminino, a previsão é que a amostra seja do sexo feminino.:eq. 13.3, p. 258:p. 103–104, eq. 2

Classificação de documentos

Segue um exemplo resolvido de classificação naive Bayes aplicada ao problema de classificação de documentos. Considere o problema de classificar documentos pelo conteúdo, por exemplo em e-mails de spam e e-mails legítimos. Imagine que os documentos sejam extraídos de várias classes de documentos que podem ser modeladas como conjuntos de palavras, em que a probabilidade (independente) de a i-ésima palavra de um documento ocorrer num documento da classe C pode ser escrita como p(wi∣C). Para simplificar, supõe-se ainda que as palavras estão distribuídas aleatoriamente no documento, isto é, que não dependem do comprimento do documento, da posição no documento em relação a outras palavras nem de outro contexto do documento.:seç. 13.2, eq. 13.2, p. 258, e seç. 13.4, p. 267–268:seç. "Probabilistic Classification", eqs. 1–2

Então a probabilidade de um dado documento D conter todas as palavras wi, dada uma classe C, é p(D∣C)=∏ip(wi∣C). A pergunta a responder é: "qual é a probabilidade de um dado documento D pertencer a uma dada classe C?" Em outras palavras, quanto vale p(C∣D)? Por definição de probabilidade condicionada, p(D∣C)=p(D∩C)p(C) e p(C∣D)=p(D∩C)p(D). O teorema de Bayes transforma essas expressões num enunciado de probabilidade em termos de verossimilhança: p(C∣D)=p(C)p(D∣C)p(D). Suponha, por ora, que haja apenas duas classes mutuamente exclusivas, S e ¬S (por exemplo, spam e não spam), de modo que todo elemento (e-mail) pertença a uma ou a outra: p(D∣S)=∏ip(wi∣S) e p(D∣¬S)=∏ip(wi∣¬S). Usando o resultado bayesiano acima, pode-se escrever p(S∣D)=p(S)p(D)∏ip(wi∣S) p(¬S∣D)=p(¬S)p(D)∏ip(wi∣¬S). Dividindo uma pela outra, obtém-se p(S∣D)p(¬S∣D)=p(S)∏ip(wi∣S)p(¬S)∏ip(wi∣¬S), que pode ser refatorado como p(S∣D)p(¬S∣D)=p(S)p(¬S)∏ip(wi∣S)p(wi∣¬S). Assim, a razão de probabilidades p(S∣D)/p(¬S∣D) pode ser expressa como um produto de razões de verossimilhança.:seç. 13.2, eq. 13.2, p. 258, e seç. 14.4, eq. 14.5, p. 302–303:seç. 2, eq. 2:seç. "Probabilistic Classification", eqs. 1–2

Tomando o logaritmo de todas essas razões, obtém-se ln⁡p(S∣D)p(¬S∣D)=ln⁡p(S)p(¬S)+∑iln⁡p(wi∣S)p(wi∣¬S). Como S e ¬S são mutuamente exclusivas e exaustivas, p(S∣D)+p(¬S∣D)=1, e p(S∣D) é a função logística (sigmoide) desse logaritmo da razão; ver também logit.:seç. 3.1, eq. 8:seç. 14.4, eq. 14.5, p. 302–303

Por fim, o documento pode ser classificado da seguinte forma: é spam se p(S∣D)>p(¬S∣D), isto é, se ln⁡p(S∣D)p(¬S∣D)>0; caso contrário, não é spam. Na prática, pode-se exigir um limiar mais alto: Sahami e colaboradores, por exemplo, só classificavam uma mensagem como spam quando sua probabilidade de ser spam passava de 99,9%.:seç. 14.4, eq. 14.5, p. 302–303:seç. 2, eq. 2:seç. "Results – Using Domain-Specific Features"

Filtragem de spam

Os classificadores naive Bayes são uma técnica estatística popular de filtragem de e-mails. Costumam usar atributos do tipo saco de palavras para identificar spam, abordagem comum na classificação de textos. Eles funcionam correlacionando o uso de tokens (normalmente palavras, às vezes outros elementos) com mensagens de spam e legítimas e, depois, usando o teorema de Bayes para calcular a probabilidade de um e-mail ser ou não spam.:seç. 1–2:seç. 3.1:seç. 13.4

Um filtro de spam naive Bayes pode ser personalizado: é treinado com as mensagens legítimas e indesejadas de cada usuário.:introdução, p. 55 Como os usuários toleram muito mal que mensagens legítimas sejam marcadas como spam, esses filtros costumam ser ajustados para reduzir os falsos positivos.:seç. "Results – Using Domain-Specific Features":seç. 1–2:seç. 4.2 Em avaliações publicadas, filtros bayesianos classificaram como spam cerca de 1% das mensagens legítimas ou menos: 1,16% no SpamCop de Pantel e Lin e 0,08% no Bogofilter.:resumo:tab. III–IV

Algoritmos bayesianos já eram usados na filtragem de e-mail em 1996, quando começou a ser desenvolvido o ifile, programa que organizava mensagens em pastas com o classificador naive Bayes.:seç. 3 O naive Bayes foi proposto para a filtragem de spam em 1998, em dois trabalhos apresentados no workshop Learning for Text Categorization da AAAI: o de Sahami, Dumais, Heckerman e Horvitz e o de Pantel e Lin (programa SpamCop).:seç. 3.2.1:seç. 1 Os filtros bayesianos, porém, só se difundiram depois do ensaio A Plan for Spam, de Paul Graham (2002).:seç. 3.2.1:seç. 5 e 9

Variantes da técnica foram implementadas em diversos trabalhos de pesquisa e em produtos de software comerciais e de código aberto.:seç. 1 e nota 2:seç. 4 e tab. 3 Alguns clientes de e-mail, como o Mozilla Thunderbird, têm um filtro adaptativo baseado em Bayes, treinado com as mensagens que o usuário marca como spam ou não spam. O usuário também pode instalar programas de filtragem à parte, como o SpamBayes, filtro estatístico (comumente chamado de bayesiano) que funciona como complemento do Microsoft Outlook ou como proxy POP3/IMAP.:seç. 4 e tab. 3

Filtros de e-mail do lado do servidor, como o DSPAM, o Rspamd, o SpamAssassin, o Bogofilter e o ASSP, usam técnicas de filtragem bayesiana de spam,:seç. 5 e essa funcionalidade às vezes vem embutida no próprio software do servidor de correio, como no MDaemon.

O CRM114, às vezes descrito como filtro bayesiano, não usa por padrão palavras isoladas como atributos: seus classificadores usam combinações de várias palavras.:seç. 5:seç. 4.1–4.2 A opção unigram, que restringe os atributos a palavras isoladas e transforma o CRM114 num classificador bayesiano convencional, foi incluída para permitir a comparação direta com esses classificadores.

Palavras raras

A probabilidade de uma mensagem que contém uma dada palavra ser spam (a "spamicidade" da palavra) é estimada a partir das frequências observadas na fase de aprendizagem.:seç. "Generating Word Probabilities" Caso uma palavra nunca tenha aparecido nessa fase, o numerador e o denominador são ambos iguais a zero, tanto na fórmula geral quanto na da spamicidade. O programa pode descartar essas palavras, para as quais não há informação disponível, como faz o classificador naive Bayes de texto usual, que só usa os termos do vocabulário extraído do treinamento, ou atribuir a elas uma probabilidade padrão, como faz o Bogofilter.:seç. 13.2:seç. "Dealing with Rare Words"

De modo mais geral, as palavras encontradas poucas vezes na fase de aprendizagem também causam problema, porque seria um erro confiar cegamente na informação que fornecem. Uma solução simples é não levar em conta também essas palavras pouco confiáveis.:seç. "Dealing with Rare Words":seç. 3.2.1, p. 185

Aplicando novamente o teorema de Bayes e supondo que a classificação, como spam ou legítimo, dos e-mails que contêm uma dada palavra seja uma variável aleatória binomial com distribuição a priori beta, alguns programas usam uma probabilidade corrigida: Pr⁡′(S∣W)=s⋅x+n⋅Pr⁡(S∣W)s+n, em que

  • Pr⁡′(S∣W) é a probabilidade corrigida de a mensagem ser spam, sabendo que contém a palavra;
  • s é o peso dado à informação de fundo;
  • x é a probabilidade assumida, com base nessa informação de fundo, de uma palavra ainda sem histórico aparecer em spam;
  • n é o número de mensagens da fase de aprendizagem que contêm a palavra;
  • Pr⁡(S∣W) é a spamicidade da palavra.

Robinson sugere começar com s=1 e x=0,5 e ajustar os valores por testes. A probabilidade corrigida substitui a spamicidade na fórmula de combinação. A fórmula vale também para n=0, quando a spamicidade é indefinida, e nesse caso resulta em x.:seç. "Dealing with Rare Words" e "Combining the Probabilities" O Bogofilter, por exemplo, expõe x e s como os parâmetros robx e robs.

Outras heurísticas

Palavras "neutras", como "the", "a", "some" ou "is" (em inglês), ou suas equivalentes em outras línguas, podem ser ignoradas; elas são conhecidas como palavras vazias (stop words).:seç. 2.2.2:seç. 3.2.1, p. 374 Ainda assim, não está claro que esse tipo de seleção ajude na filtragem de spam.:seç. 3.2.8, p. 379:p. 184 De modo mais geral, alguns filtros bayesianos ignoram as palavras cuja spamicidade fica perto de 0,5, porque contribuem pouco para uma boa decisão; o Bogofilter, por exemplo, só usa as palavras mais afastadas de 0,5 do que um valor mínimo configurável. Contam as palavras com spamicidade próxima de 0,0 (sinais característicos de mensagens legítimas) ou de 1,0 (sinais característicos de spam). Um método possível é manter apenas as N palavras da mensagem examinada com maior valor de |0,5−pi|; o SpamProbe, por exemplo, usa 27 palavras por padrão.:seç. "Variable Sized Terms Array"

Alguns programas levam em conta que uma palavra aparece várias vezes na mensagem examinada, como o SpamProbe;:seç. "Within Document Frequency (Repeats)" outros não. Na literatura, a variante multinomial com frequência de termos conta as repetições, enquanto as variantes booleana e de Bernoulli consideram apenas a presença da palavra.:seç. 4.2–4.5, p. 187–189

Alguns programas usam como unidades sequências de palavras, em vez de palavras isoladas. O SpamProbe usa por padrão pares de palavras e permite frases mais longas, que aumentam a base de dados.:seç. "Word Pairs" O CRM114 introduziu o hashing polinomial binário esparso (SBPH), que desliza uma janela de N palavras sobre o texto e gera, para cada posição, 2N−1 atributos que combinam as palavras da janela.:seç. 4.1 Atributos desse tipo captam informação de contexto que o modelo de saco de palavras não capta, à custa de muito mais atributos.:seç. 3.2.4, p. 376 Com pares esparsos dentro de uma janela de cinco palavras, Siefkes e colaboradores obtiveram resultados significativamente melhores que com palavras isoladas.:seç. 5.5

Desvantagens

Dependendo da implementação, a filtragem bayesiana de spam pode ser vulnerável a ataques em que o spammer acrescenta palavras inócuas à mensagem para baixar sua pontuação de spam. Num experimento, o ataque com palavras comuns do inglês afetou o SpamBayes, mas não o CRM114.:seç. 3.4 e 4 Os ataques mais eficazes usam palavras típicas de mensagens legítimas, como as mais frequentes em textos noticiosos.:seç. 2, p. 1117 Com 150 palavras ou menos, metade do spam antes bloqueado passou pelos filtros testados; palavras aleatórias de dicionário, ao contrário, deixaram as mensagens com mais cara de spam.:resumo e seç. 3.3 Mensagens assim também podem servir para "envenenar" o filtro, comprometendo a detecção de spam no futuro.:seç. 1.2.4, p. 342

Os spammers também podem deformar palavras que costumam aparecer em grande quantidade no spam (por exemplo, "viagra" → "v1@gra" ou "v-i-a-g-r-a"). O destinatário continua lendo as palavras alteradas, mas, como as variantes possíveis são praticamente ilimitadas, é improvável que o filtro veja, e portanto aprenda, todas elas.:seç. 1 Isso pode levar um filtro baseado em palavras a errar.:seç. 7.3, p. 1138 Por outro lado, o filtro aprende as variantes que aparecem no treinamento, e a própria ofuscação deliberada é forte indício de spam.:seç. 1 e 5

Outra técnica para tentar driblar os filtros bayesianos é substituir o texto por imagens. Os filtros que analisam apenas o texto não conseguem ler o conteúdo das imagens, o que pode torná-los ineficazes.:seç. 1–2, p. 2700–2703:seç. 1 Alguns filtros tendem a classificar como spam mensagens compostas sobretudo de imagens, com pouco texto: o SpamAssassin, por exemplo, tem regras que somam pontos a mensagens HTML com imagens e pouco texto ou com pouca área de texto em relação à área de imagens. Uma contramedida proposta é extrair, por reconhecimento ótico de caracteres (OCR), o texto embutido nas imagens e submetê-lo às mesmas técnicas de categorização de texto usadas no corpo da mensagem.:resumo e seç. 1–2

Ver também

Referências

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Hand, David J.; Yu, Keming (2001). «Idiot's Bayes—Not So Stupid After All?». International Statistical Review (em inglês). 69 (3): 385–398. ISSN 0306-7734. doi:10.1111/j.1751-5823.2001.tb00465.x
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Manning, Christopher D.; Raghavan, Prabhakar; Schütze, Hinrich (2008). Introduction to Information Retrieval (em inglês). Cambridge: Cambridge University Press. ISBN 978-0-521-86571-5. doi:10.1017/CBO9780511809071. Cópia arquivada em 19 de agosto de 2026
  3. 1 2 3 4 5 6 7 8 9 Domingos, Pedro; Pazzani, Michael (1997). «On the Optimality of the Simple Bayesian Classifier under Zero-One Loss». Machine Learning (em inglês). 29 (2–3): 103–130. doi:10.1023/A:1007413511361
  4. 1 2 Friedman, Nir; Geiger, Dan; Goldszmidt, Moises (1997). «Bayesian Network Classifiers». Machine Learning (em inglês). 29 (2–3): 131–163. doi:10.1023/A:1007465528199
  5. 1 2 Zhang, Harry (2004). «The Optimality of Naive Bayes» (PDF). Proceedings of the Seventeenth International Florida Artificial Intelligence Research Society Conference (FLAIRS 2004) (em inglês). [S.l.]: AAAI Press. pp. 562–567. ISBN 978-1-57735-201-3
  6. 1 2 Caruana, Rich; Niculescu-Mizil, Alexandru (2006). «An empirical comparison of supervised learning algorithms». Proceedings of the 23rd International Conference on Machine Learning (ICML 2006) (em inglês). [S.l.]: ACM. pp. 161–168. ISBN 1-59593-383-2. doi:10.1145/1143844.1143865
  7. 1 2 Niculescu-Mizil, Alexandru; Caruana, Rich (2005). «Predicting good probabilities with supervised learning». Proceedings of the 22nd International Conference on Machine Learning (ICML 2005) (em inglês). [S.l.]: ACM. pp. 625–632. ISBN 1-59593-180-5. doi:10.1145/1102351.1102430
  8. 1 2 3 4 Roos, Teemu; Wettig, Hannes; Grünwald, Peter; Myllymäki, Petri; Tirri, Henry (2005). «On Discriminative Bayesian Network Classifiers and Logistic Regression». Machine Learning (em inglês). 59: 267–296. doi:10.1007/s10994-005-0471-6
  9. 1 2 3 4 5 6 7 Ng, Andrew Y.; Jordan, Michael I. (2002). «On Discriminative vs. Generative Classifiers: A comparison of logistic regression and naive Bayes». Advances in Neural Information Processing Systems 14 (NIPS 2001) (em inglês). [S.l.]: MIT Press. pp. 841–848
  10. 1 2 3 4 Bishop, Christopher M. (2006). Pattern Recognition and Machine Learning (PDF). Col: Information Science and Statistics (em inglês). Nova Iorque: Springer. ISBN 978-0-387-31073-2. Cópia arquivada (PDF) em 18 de fevereiro de 2025
  11. 1 2 3 4 5 6 Rennie, Jason D. M.; Shih, Lawrence; Teevan, Jaime; Karger, David R. (2003). «Tackling the Poor Assumptions of Naive Bayes Text Classifiers» (PDF). Proceedings of the Twentieth International Conference on Machine Learning (ICML 2003) (em inglês). [S.l.]: AAAI Press. pp. 616–623
  12. 1 2 3 4 5 6 7 John, George H.; Langley, Pat (1995). «Estimating Continuous Distributions in Bayesian Classifiers». Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence (UAI 1995) (em inglês). [S.l.]: Morgan Kaufmann. pp. 338–345. arXiv:1302.4964Acessível livremente
  13. 1 2 3 4 McCallum, Andrew; Nigam, Kamal (1998). «A Comparison of Event Models for Naive Bayes Text Classification» (PDF). Learning for Text Categorization: Papers from the 1998 AAAI Workshop (em inglês). [S.l.]: AAAI Press. AAAI Technical Report WS-98-05
  14. 1 2 3 4 5 6 7 8 9 Metsis, Vangelis; Androutsopoulos, Ion; Paliouras, Georgios (2006). «Spam Filtering with Naive Bayes – Which Naive Bayes?» (PDF). Third Conference on Email and Anti-Spam (CEAS 2006) (em inglês). Mountain View: [s.n.]
  15. ↑ Yang, Ying; Webb, Geoffrey I. (2009). «Discretization for naive-Bayes learning: managing discretization bias and variance». Machine Learning (em inglês). 74 (1): 39–74. doi:10.1007/s10994-008-5083-5
  16. ↑ Chen, Stanley F.; Goodman, Joshua (1996). «An Empirical Study of Smoothing Techniques for Language Modeling». 34th Annual Meeting of the Association for Computational Linguistics (em inglês). [S.l.]: Association for Computational Linguistics. pp. 310–318. doi:10.3115/981863.981904
  17. 1 2 3 Nigam, Kamal; McCallum, Andrew Kachites; Thrun, Sebastian; Mitchell, Tom (2000). «Text Classification from Labeled and Unlabeled Documents using EM». Machine Learning (em inglês). 39 (2–3): 103–134. doi:10.1023/A:1007692713085
  18. ↑ Grinstead, Charles M.; Snell, J. Laurie (1997). Introduction to Probability (em inglês) 2 ed. Providence: American Mathematical Society. ISBN 978-0-8218-0749-1. Cópia arquivada em 26 de novembro de 2025
  19. 1 2 3 4 5 6 Sahami, Mehran; Dumais, Susan; Heckerman, David; Horvitz, Eric (1998). «A Bayesian Approach to Filtering Junk E-Mail» (PDF). Learning for Text Categorization: Papers from the 1998 AAAI Workshop (em inglês). [S.l.]: AAAI Press. pp. 55–62. AAAI Technical Report WS-98-05
  20. 1 2 3 4 5 Blanzieri, Enrico; Bryl, Anton (2008). «A survey of learning-based techniques of email spam filtering». Artificial Intelligence Review (em inglês). 29 (1): 63–92. doi:10.1007/s10462-009-9109-6
  21. ↑ Androutsopoulos, Ion; Koutsias, John; Chandrinos, Konstantinos V.; Spyropoulos, Constantine D. (2000). «An experimental comparison of naive Bayesian and keyword-based anti-spam filtering with personal e-mail messages». Proceedings of the 23rd Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (em inglês). [S.l.]: ACM. pp. 160–167. arXiv:cs/0008019Acessível livremente. doi:10.1145/345508.345569
  22. 1 2 Pantel, Patrick; Lin, Dekang (1998). «SpamCop: A Spam Classification & Organization Program». Learning for Text Categorization: Papers from the 1998 AAAI Workshop (em inglês). [S.l.]: AAAI Press. pp. 95–98. AAAI Technical Report WS-98-05
  23. 1 2 3 4 Cormack, Gordon V.; Lynam, Thomas R. (2007). «Online supervised spam filter evaluation». ACM Transactions on Information Systems (em inglês). 25 (3). 11 páginas. doi:10.1145/1247715.1247717
  24. ↑ Rennie, Jason D. M. (2000). «ifile: An Application of Machine Learning to E-Mail Filtering» (PDF). Proceedings of the KDD-2000 Workshop on Text Mining (em inglês). Boston: [s.n.]
  25. ↑ Mozilla. «Thunderbird and Junk / Spam Messages». Thunderbird Help (em inglês). Mozilla. Consultado em 5 de novembro de 2026. Cópia arquivada em 26 de outubro de 2026
  26. ↑ SpamBayes project. «SpamBayes» (em inglês). Página oficial do projeto. SpamBayes project. Consultado em 5 de novembro de 2026. Cópia arquivada em 19 de outubro de 2026
  27. ↑ The DSPAM Project. «DSPAM – README». SourceForge (em inglês). Repositório oficial do projeto. The DSPAM Project. Consultado em 5 de novembro de 2026
  28. ↑ Rspamd project. «About Rspamd». Rspamd Documentation (em inglês). Rspamd. Consultado em 5 de novembro de 2026. Cópia arquivada em 24 de outubro de 2026
  29. ↑ Rspamd project. «Statistics settings». Rspamd Documentation (em inglês). Rspamd. Consultado em 5 de novembro de 2026
  30. ↑ Apache SpamAssassin Project. «Apache SpamAssassin» (em inglês). Apache Software Foundation. Consultado em 5 de novembro de 2026. Cópia arquivada em 26 de outubro de 2026
  31. ↑ Apache SpamAssassin Project. «sa-learn – train SpamAssassin's Bayesian classifier». Apache SpamAssassin Documentation (em inglês). Apache Software Foundation. Consultado em 5 de novembro de 2026. Cópia arquivada em 8 de setembro de 2004
  32. ↑ Bogofilter project. «Bogofilter» (em inglês). Página oficial do projeto. Bogofilter project. Consultado em 5 de novembro de 2026. Cópia arquivada em 26 de outubro de 2026
  33. ↑ ASSP project. «Anti-Spam SMTP Proxy (ASSP) Server». SourceForge (em inglês). ASSP project. Consultado em 5 de novembro de 2026. Cópia arquivada em 1 de setembro de 2026
  34. ↑ MDaemon Technologies. «Bayesian Classification». MDaemon Email Server Help (em inglês). MDaemon Technologies. Consultado em 5 de novembro de 2026. Cópia arquivada em 13 de maio de 2026
  35. 1 2 CRM114 project. «CRM114 – README». SourceForge (em inglês). Repositório oficial do projeto. CRM114 project. Consultado em 5 de novembro de 2026
  36. 1 2 3 Siefkes, Christian; Assis, Fidelis; Chhabra, Shalendra; Yerazunis, William S. (2004). «Combining Winnow and Orthogonal Sparse Bigrams for Incremental Spam Filtering». Knowledge Discovery in Databases: PKDD 2004. Col: Lecture Notes in Computer Science (em inglês). 3202. [S.l.]: Springer. pp. 410–421. doi:10.1007/978-3-540-30116-5_38
  37. 1 2 3 4 Robinson, Gary (2003). «A Statistical Approach to the Spam Problem». Linux Journal (em inglês) (107). ISSN 1075-3583. Consultado em 5 de novembro de 2026. Cópia arquivada em 22 de setembro de 2026
  38. 1 2 3 Bogofilter project. «bogofilter(1) – Bogofilter Reference Manual» (em inglês). Bogofilter project. Consultado em 5 de novembro de 2026. Cópia arquivada em 2 de junho de 2026
  39. 1 2 3 Almeida, Tiago A.; Almeida, Jurandy; Yamakami, Akebo (2011). «Spam filtering: how the dimensionality reduction affects the accuracy of Naive Bayes classifiers». Journal of Internet Services and Applications (em inglês). 1 (3): 183–200. doi:10.1007/s13174-010-0014-7
  40. 1 2 3 4 Cormack, Gordon V. (2008). «Email Spam Filtering: A Systematic Review». Foundations and Trends in Information Retrieval (em inglês). 1 (4): 335–455. doi:10.1561/1500000006
  41. 1 2 3 Burton, Brian. «SpamProbe – Bayesian Spam Filtering Tweaks» (em inglês). Documento técnico do próprio SpamProbe. Burton Computer Corporation. Consultado em 5 de novembro de 2026. Cópia arquivada em 27 de julho de 2026
  42. ↑ Wittel, Gregory L.; Wu, S. Felix (2004). «On Attacking Statistical Spam Filters». First Conference on Email and Anti-Spam (CEAS 2004) (em inglês). [S.l.: s.n.]
  43. 1 2 Jorgensen, Zach; Zhou, Yan; Inge, Meador (2008). «A Multiple Instance Learning Strategy for Combating Good Word Attacks on Spam Filters» (PDF). Journal of Machine Learning Research (em inglês). 9: 1115–1146. ISSN 1532-4435. Cópia arquivada (PDF) em 7 de novembro de 2025
  44. ↑ Lowd, Daniel; Meek, Christopher (2005). «Good Word Attacks on Statistical Spam Filters». Second Conference on Email and Anti-Spam (CEAS 2005) (em inglês). [S.l.: s.n.]
  45. 1 2 Lee, Honglak; Ng, Andrew Y. (2005). «Spam Deobfuscation using a Hidden Markov Model» (PDF). Second Conference on Email and Anti-Spam (CEAS 2005) (em inglês). [S.l.: s.n.]
  46. 1 2 Fumera, Giorgio; Pillai, Ignazio; Roli, Fabio (2006). «Spam Filtering Based On The Analysis Of Text Information Embedded Into Images» (PDF). Journal of Machine Learning Research (em inglês). 7: 2699–2720. ISSN 1532-4435. Cópia arquivada (PDF) em 6 de agosto de 2026
  47. ↑ Wang, Zhe; Josephson, William; Lv, Qin; Charikar, Moses; Li, Kai (2007). «Filtering Image Spam with Near-Duplicate Detection» (PDF). Fourth Conference on Email and Anti-Spam (CEAS 2007) (em inglês). Mountain View: [s.n.]
  48. ↑ Apache SpamAssassin Project (2013). «rules/20_html_tests.cf» (em inglês). Regras oficiais do SpamAssassin (HTML_IMAGE_ONLY, HTML_IMAGE_RATIO). Apache Software Foundation. Consultado em 5 de novembro de 2026

Leitura adicional

Ligações externas