[{"@context":"https:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/ivonascimento.com\/2009\/10\/25\/filtros-bayesianos-parte-1\/#BlogPosting","mainEntityOfPage":"https:\/\/ivonascimento.com\/2009\/10\/25\/filtros-bayesianos-parte-1\/","headline":"Filtros Bayesianos &#8211; parte 1","name":"Filtros Bayesianos &#8211; parte 1","description":"Uma das tarefas que os seres humanos mais praticam \u00e9 classificar aquilo com que tem contato. Classificamos livros(romance, fic\u00e7\u00e3o, auto-ajuda...), m\u00fasica(rock, metal, punk, industrial, classica...)e tudo o mais que vemos pela frente, ate algoritmos, atrav\u00e9s dos padr\u00f5es de projeto. Fazemos isso para facilitar nossa vida, afinal, categorizamos nossos gostos e podemos dar aten\u00e7\u00e3o a aquilo que nos interessa, sem nos perder no mar de informa\u00e7\u00e3o que \u00e9 gerado e apresentado diariamente.","datePublished":"2009-10-25","dateModified":"2009-10-25","author":{"@type":"Person","@id":"https:\/\/ivonascimento.com\/author\/ivonascimento\/#Person","name":"Ivo Nascimento","url":"https:\/\/ivonascimento.com\/author\/ivonascimento\/","identifier":10240028,"image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","height":96,"width":96}},"publisher":{"@type":"Person","name":"Ivo Nascimento"},"image":{"@type":"ImageObject","@id":"https:\/\/ivonascimento.com\/wp-content\/uploads\/2025\/11\/1678128251648-e1763258046842.jpeg","url":"https:\/\/ivonascimento.com\/wp-content\/uploads\/2025\/11\/1678128251648-e1763258046842.jpeg","width":100,"height":100},"url":"https:\/\/ivonascimento.com\/2009\/10\/25\/filtros-bayesianos-parte-1\/","about":["Estatistica","Matematica","php","probabilidade"],"wordCount":1288,"articleBody":"Eu perguntei se alguem ia ler, e uns gatos pingados no twitter me disseram que sim, ent\u00e3o vou escrever \ud83d\ude42Vou falar hoje sobre a possiblidade de classifica\u00e7nao de conteudo usando os filtros bayesianos.Primeiramente gostaria de dizer que ele eh facil de implementar, veja definicao dele abaixo: Pr(A |B) =Pr(B|A) x Pr(A)\/Pr(B)Bem, se voce nao fechou o browser apos o que leu acima quer dizer que estamos prontos para ver isso, juntos, ja que tanto quanto voce eu gosto do assunto, mas nao sou expert nele, e essas coisas eu aprendi pelo prazer de ver como funcionam(e saber que realmente funcionam).Quem ja tomou uma cerveja comigo sabe que apos um certo numero de garragas\/latinhas eu come\u00e7o a divagar sempre sobre um assunto recorrente, algoritmos, algoritmos, algoritmos&#8230;(sim eu sou nerd e falo de programacao quando bebo)E aqui temos um exemplo muito bonito de um algoritmo que apesar de simples, cumpre sua miss\u00e3o. Sua dificuldade esta no entendimento da teoria matematima que nele se encerra.Uma das tarefas que os seres humanos mais praticam \u00e9 classificar aquilo com que tem contato. Classificamos livros(romance, fic\u00e7\u00e3o, auto-ajuda&#8230;), m\u00fasica(rock, metal, punk, industrial, classica&#8230;)e tudo o mais que vemos pela frente, ate algoritmos, atrav\u00e9s dos padr\u00f5es de projeto. Fazemos isso para facilitar nossa vida, afinal, categorizamos nossos gostos e podemos dar aten\u00e7\u00e3o a aquilo que nos interessa, sem nos perder no mar de informa\u00e7\u00e3o que \u00e9 gerado e apresentado diariamente.Inicialmente, criamos o habito de classificar de acordo com o feeling, fazendo com que por exemplo, ao olharmos para uma pessoa tenhamos certeza de que ela n\u00e3o \u00e9 uma pessoa legal, baseado numa sensa\u00e7\u00e3o criada por um gesto, uma fala ou alguma outra coisa significante que ja notamos em alguem que pertencia a categoria dos &#8220;n\u00e3o legais&#8221;.Depois, se a gente come\u00e7a a ficar mais interessado em classificar as coisas, e sempre ficamos, passamos a usar um esquema de pontos: O burger King \u00e9 melhor que o Mac Donald&#8217;s por que nele os lanches tem sabor(1 pt), tem o mesmo tamanho apresentado na foto(mais 1 ponto), o atendimento \u00e9 melhor(outro ponto) e assim vai. Quanto mais pontos com rela\u00e7\u00e3o ao outro, melhor.Veja que nos dois apresentados acima temos situa\u00e7\u00f5es onde a intera\u00e7\u00e3o humana com o objeto classificado foi necessaria.Por\u00e9m, existem coisas que podem ser automatizadas e que podem ajudar nos humanos a resolver problema do dia-a-dia que de outra forma tomariam muito do nosso tempo.Uma forma de automatizar essa classifica\u00e7\u00e3o \u00e9 atrav\u00e9s dos filtros bayesianos.Como primeiro exemplo, vamos usar o classico de descobrir se uma mensagem \u00e9 spam ou n\u00e3o.Uma mensagem de e-mail \u00e9 spam a partir do momento que ela \u00e9 indesejada, correto. Ela \u00e9 uma mensagem n\u00e3o solicitada que aparece na nossa caixa de e-mail e faz a gente perder um tempo batendo o olho e sacando que ela \u00e9 spam ou abrindo ela para ver se tem algo importante ali. No final das contas, se fosse uma por dia, v\u00e1 l\u00e1, a gente suportava, mas s\u00e3o muitas e fazem a leitura de e-mail ser uma tarefa penosa&#8230; fazem a gente perder tempo com coisas que n\u00e3o nos interessam de forma alguma.Ai vem a sacada, podemos olhar as mensagem e classifica-las em spam e candidatas a leitura, logo, a gente pode escrever algo que ajude a fazer isso automaticamente.Esse \u00e9 um filtro que precisa ser treinado e para treinar vamos precisar de exemplos.Vamos pegar cem e-mails que s\u00e3o spam, que a gente leu e confirmou que eram, e vamos pegar outros 100 que s\u00e3o bons para leitura.No total temos entao 200 emails com 50% em cada categoria. A boa e a ruin(spam).vejamos algumas palavras que apareceram em cada uma das categoriasruim: venda viagra remedio cirurgia ajuda vagas curso assinatura faculdade promo\u00e7\u00e3obom: venda curso assinatura php evento faculdade promo\u00e7\u00e3oOk, temos algumas palavras que ocorreram em cada uma das categorias que queremos classificar os e-mail que a gente recebe.O proximo passo \u00e9 ver quanto elas aparecem em cada uma das categorias. O quanto elas aparecem em cada categoria \u00e9 a base para a avalia\u00e7\u00e3o da probabilidade de uma mensagem estar em uma categoria ou outra.ruim (100 emails):\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Pr(palavra | ruim) venda\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a040 ocorr\u00eancias\u00a0\u00a0 \u00a00.4 viagra\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 60\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.6 remedio\u00a0\u00a0 \u00a0\u00a0 70\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.7 cirurgia\u00a0\u00a0 \u00a0\u00a0 30\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.3 ajuda\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 20\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.2 vagas\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 40\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.4 curso\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 30\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.3 assinatura 10\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 0.1 faculdade\u00a0\u00a0 5\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 0.05 promo\u00e7\u00e3o\u00a0 50\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 0.5bom(100 ocorr\u00eancias):\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Pr(palavra | bom) venda\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a030 ocorr\u00eancias\u00a0\u00a0 \u00a00.3 curso\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 40\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.4 assinatura\u00a0\u00a0 \u00a0\u00a0 10\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.1 php\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 50\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.5 evento\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 40\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.4 faculdade\u00a0\u00a0 \u00a0\u00a0 30\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.3 promo\u00e7\u00e3o\u00a0\u00a0 \u00a0\u00a0 15\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.15A terceira coluna representa uma porcentagem de ocorr\u00eancias das palavras em cada categoria.Logo, podemos dizer que a palavras venda tem 40% de chance de estar num e-mail ruim(spam) e 30% de chance de estar em um e-mail bom. E isso ja nos diz algumas coisas. Diz que s\u00f3 a palavra venda, nessa amostragem de e-mail, n\u00e3o \u00e9 uma boa candidata a indicar em que categoria o e-mail esta.A avalia\u00e7\u00e3o que fizemos at\u00e9 aqui diz qual a probabilidade de uma palavra estar em uma categoria, logo, ela nos diz uma parte da equa\u00e7\u00e3o, que \u00e9 Pr(B|A). Probablidade de B(palavra) em A(categoria). Isso se chama probabilidade condicional. A probabilidade da palavra viagra na categoria ruim \u00e9 de 60% e de php na categoria bom \u00e9 de 50%.Relembrando que:Pr(A |B) =Pr(B|A) x Pr(A)\/Pr(B)resolvendo uma parte:Sendo 100 a probabilidade da categoria (100 emails na categoria ruim, por exemplo)e 200 a probabilidade do documento(total de email&#8217;s)Pr(A | B) = pr(B|A) X 100 \/ 200Digamos que chegou um e-mail na conta e dentro dele tinha somente uma palavra: viagraCalculando a chance de ser um e-mail ruimPr(ruim | viagra) = 0.6 X 100 \/ 200Pr(ruim | viagra) = 0.3Calculando a chance de ser um bom e-mail, digno de leitura \ud83d\ude42Viagra n\u00e3o aparece na categoria &#8220;bom&#8221;, logo, temos 0% de change desse e-mail ser bom.Ent\u00e3o, que tal tirar esse e-mail da sua caixa de entrada, automaticamente, por que ele n\u00e3o vale seu tempo de aten\u00e7\u00e3o?!Vamos avaliar outro caso: Outro e-mail, algum que tenha chegado com mais palavras, digamos: faculdade, curso, promo\u00e7\u00e3o e php. Aqui vai.Pr(ruim| faculdade &amp; curso &amp; promo\u00e7\u00e3o &amp; php) = 0.05 * 0.3 * 0.5\u00a0 * 100 \/ 200=\u00a0 0.00375Pr(bom | faculdade &amp; curso &amp; promo\u00e7\u00e3o &amp; php) = 0.3 * 0.4 * 0.15 * 0.5 * 100 \/ 200 = 0.0045Pois \u00e9, esse e-mail pode aparecer na sua caixa de entrada, se olharmos o resultado ele esta mais para bom do que ruim.Algumas observa\u00e7\u00f5es devem ser feita nesse ponto.Esta \u00e9 uma demonstra\u00e7\u00e3o do teorema de Bayes, mas na implementa\u00e7\u00e3o existem outras considera\u00e7\u00f5es que devemos fazer que n\u00e3o foram incluidas aqui, como o fato de uma palavra, no inicio do treinamento do algoritmo poder ter ocorrido somente uma vez na categoria ruim e isso n\u00e3o poder indicar, de forma alguma, que ela representa somente mensagens ruins. Outro fato seria que o ideal \u00e9 que um resultado da avalia\u00e7\u00e3o de uma categoria para outra tenham uma certa &#8220;dist\u00e2ncia&#8221; entre si, para poder garantir que realmente pertence a uma categoria, caso contrario, ainda pode haver d\u00favidas quanto a classifica\u00e7\u00e3o. Mais um fato \u00e9 que esse algoritmo tem se mostrado eficiente para qualifica\u00e7\u00f5es, mas nao numa amostra t\u00e3o pequena quanto a usada aqui.Esse artigo tem continua\u00e7\u00e3o, na qual irei codificar o algoritmo na linguagem php, com cobertura das observa\u00e7\u00f5es feitas acima. O artigo ja esta sendo escrito e vai ser postado, com certeza ate o fim dessa mesma semana p\u00f3s Latinoware.Algumas refer\u00eancias usadas aqui:Livro Intelig\u00eancia coletiva &#8211; toby Segaran (Alta Books)Matematico Thomas BayesTeoremaProbablidadeProbabilidade CondicionalShare this:\t\t\t\tPrint (Opens in new window)\t\t\t\tPrint\t\t\tTweet\t\t\t\tShare on WhatsApp (Opens in new window)\t\t\t\tWhatsApp\t\t\t"},{"@context":"https:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"2009","item":"https:\/\/ivonascimento.com\/2009\/#breadcrumbitem"},{"@type":"ListItem","position":2,"name":"10","item":"https:\/\/ivonascimento.com\/2009\/\/10\/#breadcrumbitem"},{"@type":"ListItem","position":3,"name":"25","item":"https:\/\/ivonascimento.com\/2009\/\/10\/\/25\/#breadcrumbitem"},{"@type":"ListItem","position":4,"name":"Filtros Bayesianos &#8211; parte 1","item":"https:\/\/ivonascimento.com\/2009\/10\/25\/filtros-bayesianos-parte-1\/#breadcrumbitem"}]}]