A regra de Pareto e as máquinas de busca

A declaração recente da Marissa Mayer, “Vice President of Search Product and User Experience at Google”, de que o Google já resolveu 90% do problema de busca, mas que os 10% ainda vão dar um bom trabalho, incomodou muita gente na webosfera.

Prá quem não conhece a moça, Marissa é certamente uma das executivas mais importantes da indústria atualmente, e talvez um dos pontos máximos que um profissional de usabilidade almejaria hoje em dia.

O que há por trás dessa declaração? Bem, podemos desfilar vários aspectos interessantes aqui.

Uma delas é que frequentemente, no desenvolvimento de software, fala-se sempre da regra do 80/20 ou a Regra de Pareto, que originalmente falava que 80% das consequências vinham de 20% das causas. Mas claro que a proporção foi ganhando outros usos, como “80% do desenvolvimento leva 20% do tempo e os 20% restantes levam os outros 80% do tempo”.

Em bom e claro Português, “o diabo vive nos detalhes” :-)

De fato, muito da busca na web chegou a um nível de refinamento e desempenho formidáveis, mas o que significa dizer que 80% ou 90% do problema já está resolvido? E é neste pé que os críticos da web resolveram pegar para criticar o argumento da Marissa.

Segundo a techcrunch por exemplo, o que resta das coisas a serem indexadas e buscadas ainda é muito grande. Ainda não temos resultados satisfatórios GENÉRICOS para buscas semânticas, buscas em imagens, buscas em filmes, e muitos et ceteras.

Podemos dizer, certamente, que existe um grande potencial em buscas de imagens, por exemplo, em contextos restritos, e este é um mercado que deve crescer rapida e intensamente nos próximos anos. Mas se você quer buscar pela foto do gato com o cachorro, a menos que vc tenha intervenções humanas de forma inteligente, não se resolveu ainda o problema computacional de definir o que é exatamente um cachorro. Mas se você souber formatos de armas, talvez consiga localizar, com algum bom grau de precisão, armas num recinto por exemplo.

E aí podemos estender para as buscas em linguagem natural e etc, e a conclusão é: ainda tem muito terreno a ser caminhado neste aspecto, e isso significa, em termos de inovação, que há muito o que explorar ainda nesta área. Será que 10% é achar uma agulha numa cena de 1 segundo no youtube?

Enquanto isso, silenciosamente, coisas acontecem no Yahoo.

Ninguém do porte desta moça dá declarações impensadas. Stay tuned.

Update 11/9: 2 dias depois, Marissa escreveu uma declaração, voltando atrás, e concordando basicamente com a opinião das pessoas (eu entre elas) que acham que ainda falta muito chão, inclusive citando nosso bom e velho Pareto ;-)

Ciências cognitivas, Data Mining, Inovação, Inteligência Artificial, Internet, Linguagem Natural, Teoria da Informação, Visão Computacional, Web 2.0 0 Comentários

O Futuro, tal como não o conhecemos

Interessante esta iniciativa do The Washington Post de se aliar ao Predictify e criar um mecanismo onde as pessoas podem ler notícias e dar seus palpites futurísticos. E além das pessoas poderem palpitar, as que acertarem mais podem ser premiadas também. Em dinheiro. Bandeira levantada pelo site Techcrunch.

Por um lado, podemos até pensar que hajam pessoas com informação e capacidade analítica suficientes para fazer boas previsões de muitas coisas. Há inclusive sites de apostas que apostam sobre praticamente qualquer coisa, desde resultados de jogos até oscilações de humor da bolsa. Tentar prever o futuro é um jogo e tanto.

Mas o grande jogo aqui certamente não é prever o futuro, mas envolver os leitores do jornal. Web 2.0 na veia. Afinal, predições também são uma forma de emitir opinião.

Interessante que a ciência também está sempre atrás de predições. Lembrei de um livro que eu comprei mas que, uh… eu não gostei, chamado Chance Discovery, onde o Yukio Ohsawa explica sua teoria que busca basicamente insights nos dados que não se “encaixam” no padrão, com aplicações que vão desde a predição de terremotos (afinal, é um autor japonês, e terremotos são uma coisa séria por lá), oscilações na bolsa, até prospecção de novas oportunidades de negócios, criação de novos produtos, e muitos et ceteras. Isso tudo, claro, incluindo o elemento humano na análise, como fator fundamental na produção do insight.

Apesar de não ter gostado do livro, ainda assim há análises na web que conseguem extrair uma discussão interessante, como este post que mantém um pé atrás no ceticismo, comparando o autor ao Genichi Taguchi, cujo trabalho influenciou por exemplo o Six Sigma, da famigerada Qualidade Total, e ressaltando a importância do fator subjetivo na análise.

Data Mining, Redes Sociais, Teoria da Informação, Web 2.0 2 Comentários

Sobre Navalha de Occam e Mininum Description Lenght (MDL)

Quem assistiu o filme Contato, certamente deve se lembrar da cena na qual a protagonista Eleanor Arroway interpretada por Jodi Foster é inquirida sobre a viagem que ela afirma ter feito utilizando o tal equipamento alienígena construído com recursos terrestres. Durante o interrogatório, Michael Kitz personagem vivido por James Woods pergunta a Eleanor se ela conhecia a Navalha de Occam. Já sem muitos argumentos a heroína se cala e a hipótese que ela não tenha feito a tal viagem é escolhida pelos inquiridores. Mas afinal, o que é essa tal navalha?

William Ockham foi um cara que viveu no século XIV e a ele é atribuído o tal princípio com a peculiar denominação “Navalha de Occam”. Também chamada de “Lei da parcimônia” a Navalha de Occam diz que se você tiver duas ou mais explicações para um determinado fenômeno é melhor você escolher a mais simples, contanto que ela explique o fenômeno tão bem quanto as outras. Era isso que Michael Kitz queria dizer ao perguntar a Eleanor se ela conhecia esse princípio. A pergunta podia ser feito da seguinte forma: tenho duas histórias aqui, uma simples e outra toda complicada e até um pouco absurda. Ambas explicam o que ocorreu satisfatóriamente. O que você, como cientista, escolheria Sra. Arroway?

Vamos a um segundo exemplo. Imagine a seguinte situação: você tem n pontos e quer descobrir qual polinômio se ajusta melhor a esses dados. Bom, sabemos que sempre existe um polinômio de grau igual a (n-1) que se ajustará perfeitamente aos n pontos. Mas, essa é a melhor escolha? A resposta é: depende. Veja a figura abaixo. Vemos claramente que um polinômio com grau 3 já oferece um bom ajuste aos dados. Usar um polinômio de grau maior do que 3 é trabalho demais pra pouca melhora no ajuste. Isso é chamado de Overfitting.

Mininum Description Lenght (MDL) é um método de inferência indutiva que implementa a mesma filosofia presente na Navalha de Occam. Esse método fornece soluções genéricas para o chamado Problema de Seleção de Modelo. Que é o caso dos pontos mencionado anteriormente. Uso uma reta ou uma parábola para descrever meus dados? E o legal mesmo é o insight por trás desse método. Para ele, aprender é encontrar regularidade nos dados. Bom até aí tudo bem. Mas ora, dados regulares têm um coeficiente de compressão alto, certo? Então quanto mais conseguirmos comprimir os dados mais aprenderemos sobre eles! Falando mais formalmente, se tivermos um conjunto de hipóteses H sobre um conjunto de dados D, então o que estamos procurando são hipóteses (uma ou mais) em H que forneçam a maior compressão de D.

Essa é a idéia geral do assunto e apesar de ser uma teoria bem legal é também um bocado cabeluda. Para aqueles que quiserem saber mais, há um material muito bom sobre MDL em Peter Grünwald.

Inteligência Artificial, Teoria da Informação 1 Comentário

essa é que é a “questã”

tem uma música do Carlinhos Vergueiro chamada “Procotolo” que ficou um pouco mais famosa na interpretação de artistas como Ana Carolina e Lúdica Música, cuja letra é assim

É o Procotolo
É a Cardeneta
É a Falculdade
É o Estaltuto
É o Fenonemo
É um Pogresso
E é Sempre um crima
E aí vareia
É a largatixa
Que o pobrema
Essa é que é a Questã
Essa é que é a Questã
Quanto menas vezes falar dela é melhor
Essa é que é a Questã
Essa é que é a Questã
Quanto menas vezes falar dela é melhor
Com sastifação.

Antes de mais nada, deixe-me contar que tive muita dificuldade em achar esta letra no google porque, a cada palavra que eu escrevia errado, ele me corrigia :-)

Essa fantástica letra tem tudo a ver com um probleminha que aconteceu uns dias atrás com a minha namorada (eu gosto de chamar a minha mulher de namorada). No trabalho dela, é comum enviar mala direta para diversas pessoas e instituições.

Muitas vezes, essas malas diretas são fundidas a partir de várias fontes: listas adquiridas de empresas especializadas (você pode comprar por exemplo listas de operadoras de cartão de crédito, do CDL, tudo bem segmentado e nada barato…), nomes e endereços das pessoas que preenchem as fichas de avaliação dos eventos, gente cadastrada no CRM da empresa, etc etc etc.

Como vocês podem imaginar, um monte de informação dos mesmos segmentos de público acabam gerando duplicatas, afinal, poucos conferem ANTES de inserir.

Para listas muito grandes, esse custo começa a se fazer visível. Aí você cai na situação de pedir para a pessoa do suporte técnico localizar para você ONDE E QUAIS são estas duplicatas. Só que a maioria das pessoas do suporte técnico vai tentar resolver isso com queries SQL, e como as queries SQL não são exatamente a coisa mais bem uniformizada do mundo, vai depender do fabricante do seu banco de dados se você tem como fazer busca aproximada em texto ou não.

Uma forma de tentar minimizar este problema é usar algum tipo de medida de similaridade no seu texto. Embora possa parecer para alguns um bicho de sete cabeças, é algo que surpreendentemente se encontra pronto por aí.

Uma das primeiras formas de resolver isso foi através do SOUNDEX, que são técnicas que medem a semelhança entre palavras baseado em sua fonética, ou seja, dos sons dela. Ainda hoje, é possível encontrar bons sistemas onde, se uma pessoa digita uma palavra errada, o sistema sugere palavras com sons aproximados.

Exemplo prático: você vive num país de terceiro mundo onde grande parte da população é semi-analfabeta e sua interface tem que ser boa o suficiente para entender o que uma pessoa de pouca instrução está digitando (isso SE ela estiver digitando). Lembre-se: a boa interface é feita para PESSOAS usarem.

Mas SOUNDEX não foi a solução que eu usei para ajudar a minha namorada. Se você lida com JAVA, então você ama o projeto Jakarta e já usou o Jakarta Commons Lang prá alguma coisa. Não foi diferente. Escondido dentro do StringUtils, você vai encontrar um obscuro método chamado getLevenshteinDistance().

Essa “distância” mede o quão diferente uma palavra difere de outra. E segundo este excelente livro do Berthier e do Baeza-Yates, na seção 6.3.4, você pode ler que esta medida é superior ao SOUNDEX para detectar erros de sintaxe, então não há porque não tentar :-).

Mais especificamente, ele mede quantas modificações são necessárias para se transformar uma palavra na outra. Por exemplo, de “joão” prá “joao”, basta trocar o “ã” pelo “a”, então a distância é 1. Se fosse “joão” para “xoao”, seria 2. Se fossem iguais, a distância seria zero. Então, quanto mais próximo de zero, mais semelhantes.

Só que a distância sozinha não serve porque o impacto de 1 ou 2 letras em palavras menores é maior do que em palavras (vamos assumir que espaços são parte das palavras aqui) grandes, de 20, 30 letras. A chance de 2 letras serem um erro ortográfico numa palavra grande é maior que numa palavra pequena. Não é uma verdade absoluta, é um pressuposto.

Uma forma muito simples de compensar isso (não é a melhor, mas é simples, e simples geralmente é bom) é dividir essa distância pelo tamanho da palavra, o que vai te dar um índice de densidade de diferenças ortográficas entre duas linhas.

Você vai cair em vários problemas típicos destas coisas “inexatas” como por exemplo

- como você sabe QUAL o melhor valor desse “índice de densidade” para separar os erros dos não erros? - no caso, eu tentei o olhômetro mesmo. Os pares selecionados parecem ser os errados mesmo?. Nem sempre é fácil assim.

- você vai ter dois tipos de erro: as duplicatas que o sistema não achou (as piores) e os pares que o sistema achou que eram duplicatas, que eram parecidas, mas que não eram duplicatas (as menos piores). Novamente, eu estava fazendo um favor para a minha namorada, então ela sabe que há uma margem de erro aí.

Porém, diante da situação de ter que triar manualmente uma lista de cerca de 6000 endereços, meu programinha, que gera uma lista de “pares suspeitos”, já facilita um pouquinho a vida dela. E como o conjunto de dados dela tem cerca de 22% de linhas duplicadas, nessa brincadeira, já foi uma economia de impressão e envio de cerca de 1200 folders. Não está ruim(*).

E o melhor de tudo, claro, o programinha, feito em JAVA, tem cerca de 50 linhas, levou 10 minutos para codificar e 15 minutos prá rodar.

Tente você mesmo(a), experimente procurar livros do “Paolo Coelho” nas lojas da web e veja quais lojas querem vender e quais querem te mandar de volta pro seu professor de Português porque você não é digno o suficiente prá comprar na mão deles

* Só este mês, minha namorada deve enviar mala direta para cerca de 40.000 endereços ao custo de R$ 0,80 por folheto enviado. 22% disso corresponde a R$ 7000. Isso já paga pelo menos a cerveja. ;-). Olha como este blog é bom!

Data Mining, Teoria da Informação 3 Comentários

Parece mas não é

A computação tira partido de várias ilusões a seu favor. Uma das mais famosas, são as formas de compactação de dados em MP3 e JPEG.

Estes dois formatos usam o que chamamos de compactação “Lossy”, ou que “perde” informação. Outros formatos, como ZIP e GIF, são o que chamamos de “Lossless”, ou que “não perde” informação.

O formato que “não perde” informação é usado tipicamente em texto, porque a informação contida num texto depende do conteúdo completo dele, isto é, se você pegar um texto, comprimir e depois descomprimir e descobrir que algumas palavras sumiram, isso não vai ser legal. Isso também não seria legal na planilha do seu extrato bancário.

Por outro lado, numa fotografia do seu cachorro de estimação, por mais que você goste dele, se você tiver 3 milhões de tons de vermelho ou 1 milhão de tons de vermelho, pode ser que a maioria das pessoas não perceba a diferença. Não perceba ou não se importe, se a escolha é optar entre 40 MB e 500 KB prá armazenar uma foto que parece a mesma coisa. É mais ou menos o que o formato JPEG faz: se você tem um degradê de preto a vermelho que usa um montão de cores, você pode mostrar algo parecido usando menos cores.

Aliás, é justamente nos degradês que você percebe o JPEG. Como a maioria das fotos não tem muitos degradês, isso acaba passando batido, e a informação nestas fotos - a cara do seu cachorro - não fica comprometida.

Quando for assistir seu próximo DVD, preste atenção nas cenas escuras, em que quase tudo na cena é preto. Você vai ver as “ilhas” ou “camadas” de tons de preto e cinza escuro, que surgem por causa da compactação das imagens.

Com MP3 acontece algo parecido. Como o ouvido humano não percebe tão bem (ou pelo menos não todos eles) as diferenças entre alguns sons, você pode perfeitamente “cortar” ou “aproximar” alguns valores de frequência, descartando informação, porque a maioria das pessoas não vai perceber mesmo. Ou não vão se importar porque a informação - a música - não fica tão comprometida.

Quando algoritmos resolvem “sumir” com parte dos dados, tirando partido das limitações de percepção do ser humano, não deixa de ser uma forma de ilusionismo. O computador está te “enganando”, mostrando algo que transmite a mensagem, mas que não corresponde exatamente à mensagem original. Afinal, o ganho vale a pena.

É provável que a maioria das pessoas já tenha visto as famosas ilusões de ótica do Escher, um artista gráfico holandês do século passado que ilustrou várias ilusões de ótica famosas, mas muitos não conhecem algumas ilusões auditivas…

Um colega meu, de faculdade, me mostrou uma vez um som de queda (que os músicos chamam de glissando) que nunca acabava. Trata-se do Shepard-Risset Glissando, em que se produz duas escalas, uma que sobe e outra que desce, ao mesmo tempo, mas de forma que a pessoa preste atenção apenas em uma delas… e quando uma está acabando, a outra está começando do mesmo lugar.

Estranho né? É como se fosse um parafuso que você gira no mesmo lugar e ele parece “subir”. Imagine um parafuso que “sobe” e “desce”, mas que você só percebe o que “desce”. E que nunca termine.

Ouvir vai explicar melhor. Vá nesta página e clique no botão que há no fim da página para ouvir uma amostra. E cuidado com o que você ouvir do discurso dos políticos este ano. Pode ser uma ilusão auditiva ;-)

Teoria da Informação 1 Comentário