Quem não gostaria que seu celular automaticamente se programasse para despertar em um determinado horário, considerando a sua agenda do dia e outras variáveis como trânsito e clima? Ou que, ao chegar em casa, o som tocasse uma música de acordo com o seu humor? E que, ao viajar para algum lugar desconhecido com um simples PDA, todo o planejamento turístico fosse feito para você de acordo com seus desejos, preferências, sua quantidade de dinheiro para gastar, dentre outros aspectos, e que esse planejamento ainda fosse dinamicamente adaptado ao longo do dia de acordo com variáveis inesperadas detectadas no ambiente?
Essas aplicações citadas (e muitas outras que poderiam ser mencionadas) estão relacionadas a uma área de pesquisa chamada computação ciente do contexto, ou seja, hardware e software capazes de considerar qualquer informação que possa ser usada para caracterizar a situação de uma pessoa, lugar ou objeto, para prover informações e/ou serviços relevantes para usuários.
Essa área de pesquisa, apesar de não ser recente, ainda apresenta vários desafios técnicos.
Muitos trabalhos científicos da área lidam com a aquisição (ou sensoriamento) e modelagem de contextos físicos (localização, clima, tempo, por exemplo). Porém, ainda é pouco explorado na aquisição e interpretação de contextos lógicos. Por exemplo, como seria possível identificar que o usuário está de bom ou mau humor? Ou que ele está com fome? E que, quando ele está de bom humor, ele prefere escutar músicas de Jazz?
Estive pensando em como abordar o problema dos contextos lógicos e, relacionando com trabalhos desenvolvidos aqui no Labs, vejo que técnicas de aprendizado de máquina e processamento de linguagem natural seriam uma boa opção. Por exemplo, todos os diálogos do usuário poderiam ser categorizados e rankeados para que no final do dia seja possível identificar seu humor. Mais interessante ainda seria se, além do conteúdo dos diálogos, fosse identificado também o tom de voz. Assim uma discussão no trânsito seria percebida e ajudaria na identificação do humor.
Além da questão de identificação de contextos lógicos, pode-se considerar que a automatização de tarefas cientes de contexto é uma tendência forte de pesquisa na área. Dessa forma, haverá uma grande necessidade de se desenvolver técnicas ligadas a inteligência artificial para diversos aspectos dessa área em geral.
Enquanto essas soluções não viram aplicações para usuários finais, continuamos imaginando como seria mais fácil a vida se nossos dispositivos computacionais fossem cientes do nosso ambiente…
March 29, 2008 by Fabrício Aguiar
Inovação, Mobile
0 Comentários

Loading ...
Nos comentários do post do Kenji sobre clusterização, a Adriana mencionou o desafio da NetFlix. Eu acho que merece o seu próprio post.
A NetFlix é uma locadora virtual de DVDs, de enorme sucesso nos EUA. Você se associa, escolhe quais filmes gostaria de ver e põe numa fila. A NetFlix manda os filmes pelo correio à medida que estão disponíveis, com envelope pago para você devolvê-los. Em um plano comum, você pode alugar até 3 DVDs de uma vez e fica quanto tempo quiser com eles, mas só recebe o próximo depois de devolver pelo menos um.
Pois a NetFlix tem um sistema de recomendações chamado Cinematch, que funciona até bem. Querendo melhorar a qualidade das recomendações eles lançaram, em 2006, um desafio. O primeiro a diminuir o erro das recomendações em 10% ganha US$1 milhão. É, um milhão de verdinhas. Os erros podem ser de dois tipos. Falsos positivos são quando o sistema faz recomendações estúpidas. Falsos negativos são quando ele deixa de recomendar algo que você ia gostar.
A idéia é genial: outsourcing da inovação. Gente do mundo inteiro, times acadêmicos e nerds em garagens estão participando e a NetFlix só paga se alguém conseguir os resultados que eles querem. Fora a publicidade gratuita e o incentivo à pesquisa - dezenas de publicações surgiram desse desafio.
Não é fácil. Em menos de um mês, já tinha gente na metade do caminho, com 5% de melhora. Mas depois disso, o progresso foi cada vez mais lento. Depois de um ano, um time da AT&T Labs Research tinha reduzido o erro em 8.43% e ganhou um prêmio de progresso de US$50.000,00 e uma placa horrível de “honra ao mérito”. Eles são os atuais líderes, com 9% de redução.
A grande maioria dos líderes no desafio utiliza métodos similares para gerar novas recomendações: eles se baseiam em filmes que você assistiu e gostou (ou quer assistir) e recomendam outros filmes similares. Isso é outra aplicação de clusterização. O segredo está em definir uma forma de medir essa similaridade que faça sentido para quem está alugando os filmes, o consumidor final da NetFlix.
Recentemente, um outro competidor chamou atenção. Ao contrário dos times de laboratórios e universidades, esse é só um cara em casa. E sua formação original é em psicologia. Ele começou a trabalhar no problema um ano depois de anunciado e seus resultados melhoraram mais rapidamente que os de qualquer time até então. Atualmente, Gavin Potter está em nono lugar. Qual o seu segredo?
A maneira mais comum de medir a “similaridade” entre dois filmes é representar os filmes como um conjunto de números, onde cada número tem um significado específico. Assim, o primeiro número pode ser o gênero do filme e duas comédias tendem a ser mais similares que uma comédia e um épico de guerra, por exemplo. O segundo número pode indicar a linguagem do filme, e assim por diante. Quando se caracteriza um filme dessa maneira, cada número é uma dimensão.
Existem métodos automáticos para determinar quais dimensões são importantes para um problema específico, mas eles são sujeitos a erros e decisões estúpidas, como toda técnica heurística. Pois o segredo do Gavin é exatamente sua formação original. Como psicólogo ele tem uma intuição muito melhor que a dos computeiros a respeito do valor de cada dimensão, e pensa em dimensões importantes que outros times ignoram.
Mesmo que ele não ganhe o prêmio, seu relativo sucesso em pouco tempo me lembra um velho ditado: a inteligência artificial não é páreo para a burrice natural. Ou, de forma menos agressiva, nunca subestime o valor do conhecimento dos especialistas no assunto.
March 27, 2008 by Cassio Pennachin
Data Mining, Inovação
1 Comentário

Loading ...
Eu nunca fui um usuário freqüente do Microsoft Internet Explorer; do Mosaic (no longínquo 1995) eu passei pro Netscape Navigator, depois para o Mozilla (cuja base de código inicialmente era a mesma) e finalmente para o Firebird (que mais tarde seria renomeado Firefox e viraria um tremendo sucesso).
Com isso acompanho de perto o desenvolvimento das novas versões, mas normalmente não uso a mais recente disponível, por uma razão simples: não consigo viver sem umas duas dúzias de extensões (como GreaseMonkey, WebDeveloper, TabMixPlus, AdBlock, e várias outras - depois escrevo sobre isso), e muitas delas não funcionam nas versões beta.
Só que eu ouvi falar tão bem do Firefox 3 Beta 4, que dessa vez não resisti. A promessa era a de um browser muito mais rápido e com consumo de memória bem mais baixo (o que é fundamental quando se mantém 20-30 tabs abertas), e devo admitir que acertaram em cheio - aplicações Javascript pesadas como o GMail estão bem mais ágeis, e os famigerados memory leaks que me obrigavam a reiniciar o Firefox de vez em quando sumiram (ou foram drasticamente reduzidos).

A maioria das extensões funcionou com o Firefox 3; para continuar usando algumas como a TabMixPlus eu precisei de baixar versões alpha do site do desenvolvedor. Algumas poucas (e simples, como a ColorfulTabs) eu forcei o funcionamento usando a excelente NightlyTester (que permite instalar extensões mesmo que as informações de versão indiquem incompatibilidade).
Nem tudo correu bem, entretanto: a caixa de edição de texto do GMail, por exemplo, vai mostrando lixo enquanto eu digito (linhas horizontais finas aparecem misturadas no texto, ao digitar e ao fazer scroll, acho que relacionadas ao verificador ortográfico). Curiosamente isso não acontece, por exemplo, na caixa de entrada de texto do WordPress.
Ainda assim, depois de um dia inteiro usando, decidi que os benefícios do novo Firefox superam os pequenos problemas que ainda existem (ainda se trata de uma versão beta, afinal de contas). O upgrade vale a pena, mesmo para usuários casuais.
March 25, 2008 by Murilo Queiroz
Web 2.0
0 Comentários

Loading ...
Esse é um dos paradoxos mais famosos no estudo de probabilidades. Foi popularizado em uma coluna escrita por Marilyn vos Savant, que aparece no Guiness como a pessoa com o QI mais alto do mundo. Na coluna, um leitor propôs o problema a Marilyn.
Imagine que você está em um show de TV. O apresentador te pede para escolher uma de três portas fechadas. Atrás de uma porta há um carro novo. Atrás das outras duas, bodes velhos e fedorentos.

Suponha que você escolha a porta número 1. O apresentador, que sabe qual porta esconde o carro, abre a porta número 3, mostrando um bode velho e fedorento, que é levando embora por sua assistente de palco sorridente e parcamente vestida. O apresentador então pergunta se você quer trocar para a porta número 2. É vantajoso para você trocar?
Marilyn respondeu que sim, você deve trocar de porta nesse caso. A coluna gerou milhares de cartas de leitores enfurecidos, incluindo muitos que se diziam professores de matemática, que argumentavam que as duas portas têm a mesma probabilidade de esconder o carro. A polêmica foi parar na manchete do New York Times e diversas escolas nos EUA fizeram experimentos onde o problema é simulado.
Quase todos os experimentos confirmaram o que Marilyn já sabia. Como o apresentador já sabe qual porta esconde o carro, ele sempre vai abrir uma porta que esconde um bode velho e fedorento. O que isso quer dizer?
Na sua escolha inicial, você tem 1/3 de chance de escolher a porta correta, já que há uma porta com o carro e duas com bodes. Então, há 2/3 de probabilidade da porta que você escolheu esconder um dos bodes. Nesse caso, o apresentador acabou de lhe mostrar o outro bode, e a terceira porta (que você não escolheu e ainda está fechada) esconde o carro. Portanto, em 2/3 dos casos, você deve trocar de porta para ganhar o carro…
Mais detalhes na Wikipédia.
March 23, 2008 by Cassio Pennachin
Probabilidade, Teoria dos Jogos
3 Comentários

Loading ...
Esta semana, a Vivisimo, uma spin-off da universidade de Carnegie Mellon especializada em clusterização aplicada a mecanismos de busca, andou levantando um bocado de dinheiro em investimento. Ótimo momento, para quem andou acompanhando a tensão do aceita-não-aceita da proposta de compra da Yahoo pela Microsoft.
Para ver a tecnologia da Vivisimo em ação, confira o site Clusty e faça rapidamente uma busca, digamos, por “harmônica” (também conhecido como gaita de boca).
Além dos resultados tradicionais, note do lado esquerdo que algumas respostas estão “categorizadas” em itens como “blues harp” (gaita blues), “harmonica lessons” (aulas de gaita) e etc.
O interessante da tecnologia da Vivísimo, diga-se de passagem que não é nenhuma novidade, é que essa separação em categorias não é manual. Ninguém colocou um monte de estagiários para separar essas categorias. Isso é clusterização.
Clusterização, a grosso modo, é uma forma de, dado um monte de itens e um conjunto de características destes itens, separar o que é diferente e juntar o que é similar. Como você pode imaginar, há um monte de aplicações interessantes para isso.
Aqui no Labs, uma das aplicações disto é nas pesquisas de biotech que fazemos para diversos clientes, especialmente a Biomind. É comum os biólogos terem vários dados sobre como genes se comportam em diversas condições, e é muito interessante que, suponhamos, dentre 40.000 genes, os biólogos possam analisar apenas uns 10 ou 20 genes que, de alguma forma, tenham um comportamento parecido dentro de um determinado processo (por exemplo, quando comparamos tecidos de pessoas saudáveis e pessoas com câncer). Uma das formas de selecionar estes genes é através de algoritmos de clustering.
Outra aplicação famosa de clustering é no e-commerce. Se você já fez compras na Amazon, deve ter se deparado com aquelas sugestões de itens do tipo “pessoas que compraram este livro também compraram estes outros”. E com o dólar baixo, o dedo coça :-).
O algoritmo que a Amazon usa, que não deixa de ser um tipo muito refinado de clustering, é patenteado e é um tipo de Collaborative Filtering (filtro colaborativo). No fim das contas, baseado no perfil de compras de todos os clientes da Amazon, existem vários conjuntos de clientes que se comportam de maneira parecida, que compram parecido, que gostam das mesmas coisas. O sistema, estudando estes grupos, sugere para o cliente os livros que mais parecem agradar aquele segmento.
Naturalmente que um bom vendedor, ou o dono de uma livraria, aprende com o tempo a “clusterizar” seus clientes, e muito bem diga-se de passagem, enquadrando pessoas dentro de “perfis”. Tal cliente é o estudante de matemática que gosta de livros de ficção. Outra cliente é a dona-de-casa sagitariana que gosta de romances água-com-açúcar. Contudo, vale lembrar alguns aspectos aqui.
- A Amazon lida com muito mais gente que o nosso competente dono de livraria.
- A Amazon faz estas contas e indica produtos relacionados o tempo todo, a cada passo que você dá dentro do site deles. O que significa que a NAVEGAÇÃO do site é modificada DINAMICAMENTE, ou seja, o site se ajusta a cada passo do usuário.
- O algoritmo da Amazon pode encontrar padrões nos perfis de usuários que uma pessoa não encontraria.
- Estudar estes padrões encontrados pelo algoritmo ajudam a conhecer melhor o seu próprio negócio.
- Aplicar este tipo de algoritmo aos mais diversos tipos de dados não é uma coisa incrivelmente difícil ou cara.
Fica meu gigante ponto de interrogação: por que a submarino não me sugere outras coisas que eu gostaria de comprar?

March 21, 2008 by Leonardo Kenji
Biotecnologia, Data Mining
1 Comentário

Loading ...
Desde minhas primeiras incursões em Java (em 1996, quando a linguagem ainda estava em beta) eu me vi às voltas com código exigente em termos de memória e capacidade de processamento (principalmente quando lidando com aprendizado de máquina e métodos evolucionários).
A “otimização prematura é a raiz de todo mal”, mas otimização tardia também pode ser difícil e trabalhosa. Identificar os gargalos do seu sistema (performance bottlenecks) é fundamental para melhorar o desempenho do software. Por causa disso, mais cedo ou mais tarde é preciso realizar alguma forma de profiling - identificar quanto tempo seu sistema gasta em cada tarefa, e quanta memória é alocada por quais objetos.
Existem várias técnicas para isso, e acho que já usei quase todas, do mundano println(System.getCurrentTime()…) a Java Virtual Machine Profiling Interface. Nenhuma delas superou um bom programa dedicado especificamente a essa tarefa. Há alguns anos, meu preferido era o JProbe; recentemente, esse título vai para o excelente Yourkit Profiler.

![]()
Disponível para Java e C#, o Yourkit Profiler integra-se facilmente a IDEs como o Eclipse, e realiza praticamente todas as análises que procuro, com baixíssimo overhead e uma interface gráfica completa e agradável. Não entrarei em detalhes sobre todos os recursos disponíveis; o site é bem completo em relação a isso, e oferece uma versão de avaliação válida por 15 dias.
O preço do Yourkit Java Profiler é bastante razoável, e licenças gratuitas para projetos open-source ativos estão disponíveis (obtivemos licenças para o uso no HyperGraphDB e RelEx, dois projetos de software livre em que participo ativamente do desenvolvimento).
A cereja em cima do bolo é a equipe da YourKit: eu fiz um breve comentário sobre o suporte a profiling de métodos nativos e me surpreendi quando os desenvolvedores me procuraram pedindo por informações do que eu precisava, e poucos dias depois disseram que vão incluir esses recursos no programa.
Se seu programa em Java ou C# está lento ou consumindo memória demais, experimente levar o YourKit Profiler para passear!
DISCLAIMER: Esse post foi resultado exclusivamente de experiências pessoais, e foi escrito de forma espontânea; exceto pelas licenças gratuitas fornecidas para os projetos open-source, comentadas acima, não há qualquer associação entre mim ou o Vetta Labs e a YourKit, LLC.

![]()
Disponível para Java e C#, o Yourkit Profiler integra-se facilmente a IDEs como o Eclipse, e realiza praticamente todas as análises que procuro, com baixíssimo overhead e uma interface gráfica completa e agradável. Não entrarei em detalhes sobre todos os recursos disponíveis; o site é bem completo em relação a isso, e oferece uma versão de avaliação válida por 15 dias.
O preço do Yourkit Java Profiler é bastante razoável, e licenças gratuitas para projetos open-source ativos estão disponíveis (obtivemos licenças para o uso no HyperGraphDB e RelEx, dois projetos de software livre em que participo ativamente do desenvolvimento).
A cereja em cima do bolo é a equipe da YourKit: eu fiz um breve comentário sobre o suporte a profiling de métodos nativos e me surpreendi quando os desenvolvedores me procuraram pedindo por informações do que eu precisava, e poucos dias depois disseram que vão incluir esses recursos no programa.
Se seu programa em Java ou C# está lento ou consumindo memória demais, experimente levar o YourKit Profiler para passear!
DISCLAIMER: Esse post foi resultado exclusivamente de experiências pessoais, e foi escrito de forma espontânea; exceto pelas licenças gratuitas fornecidas para os projetos open-source, comentadas acima, não há qualquer associação entre mim ou o Vetta Labs e a YourKit, LLC.
Murilo Saraiva de Queiroz, a.k.a. muriloq, 30, tem graduação em Ciência da Computação e Mestrado em Engenharia Eletrônica, ambos pela UFMG. Atualmente ele desenvolve projetos nas áreas de mercado financeiro, bioinformática e processamento de linguagem natural no Vetta Labs (da qual é sócio) e em projetos open-source do Singularity Institute for Artificial Intelligence. Murilo mora em Belo Horizonte com sua esposa Cyntia, seu filho Max e um amontoado de videogames e gadgets.
-->
March 19, 2008 by Murilo Queiroz
Desenvolvimento
0 Comentários

Loading ...
Microcrédito, de acordo com a Wikipedia, é emprestar quantias bem pequenas para pessoas que não têm como obter crédito no sistema financeiro tradicional. Pobres, desempregados, “empreendedores” de economia informal não têm como dar garantias bancárias e o sistema tradicional de crédito via bancos ou financeiras não os atende.
Microcrédito é uma idéia razoavelmente antiga, que se tornou popular depois de casos de sucesso no Bangladesh na década de 70, principalmente o do Grameen Bank. Em 2006 o banco e seu fundador receberam o Prêmio Nobel da Paz em reconhecimento ao profundo poder de transformação social do microcrédito.
Hoje em dia há milhares de organizações no mundo todo dedicadas ao microcrédito, inclusive no Brasil, embora o país ainda tenha muito a fazer no amadurecimento dessa idéia. A maior parte das organizações se divide em dois grupos: ONGs sem fins lucrativos e que recebem doações de capital para emprestar e bancos especializados, muitas vezes braços de bancos maiores tradicionais. As ONGs de microcrédito enfrentam o problema comum a todas as ONGs: levantar fundos.
Em 2005, um casal do Vale do Silício resolveu criar uma startup de microcrédito. Nascia a Kiva. Sem fins lucrativos, a Kiva permite que qualquer pessoa se registre e empreste pequenas quantias usando seu cartão de crédito ou conta no PayPal. Uma rede de organizações associadas mundo afora cadastra e seleciona as pessoas que receberão os empréstimos. O valor típico de um empréstimo é de algumas centenas de dólares, e cada usuário da Kiva participa com uma cota fixa de US$25. Dessa forma, cada empréstimo é um esforço colaborativo, bem dentro do paradigma Web 2.0.
E funciona? Sim, funciona. A Kiva explodiu e continua crescendo de forma exponencial. Em pouco mais de dois anos, ela emprestou mais de US$25 milhões. Foram mais de 37 mil empréstimos em 42 países, financiados com cotas de mais de 250 mil pessoas.

E isso não é tudo. De todos esses empréstimos, 99.9% foram pagos integralmente. Não existe banco tradicional no mundo que chegue perto disso. Só pra comparar, no Brasil a taxa de inadimplência de empréstimos bancários para pessoa física é de 7%, segundo o Banco Central.
Há quatro meses eu entrei na onda. Fiz dois empréstimos. O primeiro para a Sra. Selina John, que tem uma barraca de vender cerveja e refrigerantes em Dar Es Salaam, Tanzânia. O segundo para o Sr. Angel Peralta, do Equador. Confesso que escolhi pelo nome, mas depois vi que o Sr. Peralta já contraiu e pagou outros empréstimos anteriormente.
Selina já pagou todo o seu empréstimo. Com o dinheiro ela aumentou seu estoque e seus lucros mensais. Quando você empresta dinheiro, só o recebe de volta depois que todas as prestações (em geral mensais) são pagas. O dinheiro é creditado na sua conta da Kiva e você pode sacá-lo ou reemprestar.
A sensação de ajudar diretamente essas pessoas é viciante. A Kiva cria perfis de cada pessoa, com fotos e historinhas, o que cria um vinculo emocional. Ou seja, assim como a grande maioria dos outros usuários, nem pensei em sacar minha grana. Já estou à procura do próximo empréstimo. E torcendo pra que logo alguma organização de microcrédito do Brasil esteja madura o suficiente para atender aos critérios de cadastramento da Kiva
E isso não é tudo. De todos esses empréstimos, 99.9% foram pagos integralmente. Não existe banco tradicional no mundo que chegue perto disso. Só pra comparar, no Brasil a taxa de inadimplência de empréstimos bancários para pessoa física é de 7%, segundo o Banco Central.
Há quatro meses eu entrei na onda. Fiz dois empréstimos. O primeiro para a Sra. Selina John, que tem uma barraca de vender cerveja e refrigerantes em Dar Es Salaam, Tanzânia. O segundo para o Sr. Angel Peralta, do Equador. Confesso que escolhi pelo nome, mas depois vi que o Sr. Peralta já contraiu e pagou outros empréstimos anteriormente.
Selina já pagou todo o seu empréstimo. Com o dinheiro ela aumentou seu estoque e seus lucros mensais. Quando você empresta dinheiro, só o recebe de volta depois que todas as prestações (em geral mensais) são pagas. O dinheiro é creditado na sua conta da Kiva e você pode sacá-lo ou reemprestar.
A sensação de ajudar diretamente essas pessoas é viciante. A Kiva cria perfis de cada pessoa, com fotos e historinhas, o que cria um vinculo emocional. Ou seja, assim como a grande maioria dos outros usuários, nem pensei em sacar minha grana. Já estou à procura do próximo empréstimo. E torcendo pra que logo alguma organização de microcrédito do Brasil esteja madura o suficiente para atender aos critérios de cadastramento da Kiva
-->
March 18, 2008 by Cassio Pennachin
Inovação, Web 2.0
0 Comentários

Loading ...