Aprendizagem de Máquina ao Alcance de Todos - (2)

Voltando sem muitas delongas ao exemplo da primeira parte desse artigo, vamos considerar novamente o nosso banco de dados de pessoas caracterizadas cada uma por um “registro” seguindo o mesmo formato, com campos de peso, altura, idade, sexo, etc. Agora, vamos supor que além dessa caracterização por dados biométricos sabemos que essas pessoas estão classificadas em dois grupos, digamos que com e sem histórico de problemas cardíacos. Em jargão de biologia, as pessoas com histórico cardíaco são “Casos”, as sem são “Controles”.

Em Aprendizagem de Máquina, a chamada Aprendizagem Supervisionada consiste em treinar um “modelo” (uma função ou algoritmo de classificação) a reconhecer casos e controles automaticamente. É o tipo de problema aplicável exatamente a massas de dados com informação de categoria, como a do exemplo acima. Essa massa de dados é chamada de “conjunto de treinamento”, justamente porque sua função é servir como uma coleção de exemplos que são usados para “dizer” ao classificador onde ele está errando e onde ele deve melhorar - daí o “supervisionado” no nome desse tipo de aprendizagem.

Exatamente como um método de classificação pode conseguir resultados melhores ou piores dado um conjunto de exemplos? Bom, existem inumeráveis algoritmos de aprendizagem supervisionada - redes neurais, métodos evolutivos, árvores de decisão, todos eles podem ser usados para classificação. Para fins didáticos, porém, vou focar aqui em um método bem geométrico, as SVMs (do Inglês Support Vector Machines).

Como já disse na Parte 1, cada “campo” do banco de dados descrevendo as coisas sendo classificadas (no exemplo pessoas) é visto como uma dimensão (no sentido espacial da coisa mesmo) em aprendizagem de máquina. Se os registros tiverem só três campos - digamos, peso, altura e idade - temos três dimensões, e as pessoas são “vistas” por um algoritmo de ML como pontos num espaço tridimensional com eixos de idade, peso e altura. Assim Fulano pode ocupar o ponto em 1,80 metros, 75 quilos e 36 anos, enquanto Beltrano está no ponto 1,72m, 60Kg, 28a. Esse é um exemplo não tão difícil de visualizar porque usa um espaço tridimensional como aquele de largura, comprimento e altura onde vivemos, mas na prática os problemas de ML lidam quase sempre com “hiperespaços” multidimensionais. Em problemas de Bioinformática são comuns espaços com milhares de dimensões, por exemplo.

De qualquer forma, voltando às SVMs, o que elas fazem é (supersimplificando a coisa) encontrar uma “hipersuperfície” que divide esse “espaço” do problema em dois lados. Uma divisão boa é aquela que deixa os pontos representando Casos de um lado da superfície e os pontos representando Controles do outro lado. No nosso exemplo das pessoas com e sem problemas cardíacos ocupando um espaço tridimensional, vamos enxergar o espaço 3D como um cubo e supor que a maioria dos casos ocupa a metade do cubo correspondendo a pessoas com mais peso e mais idade, enquanto os controles se concentram nas pessoas mais novas e magras. Um plano cortando o cubo em dois na diagonal, paralelo ao eixo de altura, já dá uma divisão razoável então. Talvez essa divisão razoável deixe muitos pontos ainda nos lados errados, então podemos experimentar outras coisas como inclinar o plano (talvez em relação ao eixo de altura, para fatorar pessoas que são pesadas porque são grandes), ou mesmo experimentar uma superfície que não seja plana, mas sim curva, correndo em uma forma meio ondulada que divida os dois conjuntos de pontos quase perfeitamente. (No caso de SVMs, o tipo de superfície é determinado pela chamada “função de kernel” - que no caso do plano é uma função linear.)

Finalmente, é interessante também computar a superfície de forma a que, além de separar o mais corretamente possível os pontos, ela também mantenha uma certa distância desses pontos, sem “passar raspando” em nenhum deles. Isso tem a ver com o que talvez seja a mais desejada e mais difícil de obter das características de um bom classificador: a capacidade de generalização. Isto é, a capacidade de corretamente classificar elementos novos, desconhecidos, que não estavam no conjunto de treinamento. No caso das SVMs, podemos visualizar que uma superfície correndo muito “rente” pelos pontos limítrofes da, digamos, Categoria Caso, pode erroneamente classificar um monte de pontos como Controle, mesmo eles caindo perto dos pontos de Caso, simplesmente porque a superfície está rente demais e não inclui pontos próximos que provavelmente também são Casos. Em casos assim, podemos “antropomorfizar” o que aconteceu dizendo que o classificador na verdade não aprendeu nada, apenas “decorou” os pontos que foram mostrados a ele…

No fim das contas, todo classificador gerado por aprendizagem supervisionada faz essencialmente a mesma coisa que a SVM - seccionar o espaço do problema em regiões correspondentes a categorias. Só que eles trabalham sob princípios que não são tão obviamente geométricos (e didáticos) como no caso da SVM, daí não vou falar sobre eles aqui. Finalmente, aprendizagem supervisionada não é categorização - coisas como regressão simbólica também caem nessa subdivisão de ML. Mas acho que isso já fugiria um pouquinho do nível “feijão com arroz” implicado pelo título. :)

Inteligência Artificial 0 Comentários

“Serve o vinho celeste, Ganymede”

Jupiter: …”Pour forth heaven’s wine, Idaean Ganymede, And let it fill the Daedal cups like fire.” Percy Bysshe Shelley, Prometheus Unbound

Na mitologia grega, Ganimedes era um príncipe troiano, filho de Tros, cuja beleza arrebatou Zeus (ou Júpiter na mitologia romana) de tal forma que ele mandou uma águia (ou se transformou em uma, dependendo da versão) para raptá-lo e levá-lo para o Olimpo. Lá, tornou-se um dos amantes de Zeus e copeiro dos deuses. Ganimedes também é a maior lua de Júpiter e a maior do sistema solar e foi a terceira descoberta por Galileu Galilei.

Agora, além desses significados, Ganymede (Ganimedes em inglês) também denomina a nova versão anual dos projetos da Eclipse Foundation lançada ontem, dia 25 de junho. Precedida por Europa e Callisto, ela é uma coleção de 23 projetos distintos, cujas novas versões são lançadas de forma coordenada, para evitar incompatibilidades entre eles e facilitar a vida dos usuários.

Apesar do Eclipse poder ser usado para o desenvolvimento em C, C++, Ruby e Python, o lançamento dessa nova versão é particularmente relevante para a comunidade de desenvolvimento Java, posto que o Eclipse tornou-se uma das IDEs mais utilizadas pelos desenvolvedores dessa linguagem. Algumas mudanças mais visíveis estão na IDE, como melhorias na área de assistência de contexto (as teclas Ctrl+Espaço), novos tipos de refactoring, uma nova interface para atualização de plugins, dentre outras novidades além de correções de bugs da versão anterior. Porém, há atualizações igualmente interessantes em outras áreas, como as novas versões da ferramenta de relatório BIRT e do Mylyn, um plugin de interface focada em tarefas (task-focused interface) e que faz integração entre a IDE e ferramentas de rastreamento de issues como o Bugzilla e o Trac, e novas adições como o Rich Ajax Platform (RAP), que permite a construção de aplicações Web baseadas em AJAX usando o mesmo modelo de desenvolvimento de aplicações RCP. Porém, nem tudo são flores: o suporte nativo ao sistema de controle de versão Subversion, outra adição bastante esperada, não está totalmente “transparente” como o do CVS. Para ativá-lo, é necessário que o usuário faça o download de componentes localizados em servidores fora da Eclipse Foundation, sendo que um deles possui versão compilada apenas para Win32 (no caso o conector JavaHL).

Para aqueles que querem instalar a nova versão, basta visitar o site do Eclipse Ganymede, onde também se encontra a lista com as mudanças ocorridas. E “deixa-o encher as taças como fogo”. :-D

Paulo Ferreira de Moura Junior, é arquiteto de sistemas com passagem em empresas como a Borland do Brasil e Vetta Technologies. Bacharel em Ciência da Computação pela UFMG, trabalha atualmente na Geolabs.

Desenvolvimento 0 Comentários

Aplicações móveis baseadas em localização

(nota do editor: para comemorar o centésimo post do blog, nossa primeira contribuição feminina para o blog, de Thais Braga Silva, doutoranda em Ciência da Computação pela UFMG)

Há alguns dias atrás li uma notícia sobre um software chamado Loopt

veja aqui um vídeo sobre o lançamento

O Loopt é utilizado para estabelecimento de redes sociais móveis baseadas em localização, lançado para o IPhone 3G. Como o assunto está relacionado de alguma forma à minha tese de doutorado em desenvolvimento, resolvi pesquisar um pouco sobre ele e descobri que foi desenvolvido por uma pequena empresa do vale do silício que sobrevive ainda de financiamento de risco, podendo ser utilizado não só pelo IPhone, mas em diversos modelos de celulares e smartphones.

O Loopt é um aplicativo muito interessante que explora a noção de posicionamento global do usuário para encontrar e contactar amigos que estejam em um certo círculo de proximidade. Aplicativos desse tipo são chamados de Location-based (baseados em localização) e têm se tornado cada dia mais comuns, principalmente com a popularização do uso de dispositivos GPS em equipamentos móveis.

Esses aplicativos representam uma primeira geração de serviços baseados em contexto e utilizam apenas a informação de localização como dado contextual para oferecer serviços personalizados ao usuário. A tendência é que muitos outros dados desse tipo possam ser incluídos como entradas para os aplicativos, sendo utilizados para aumentar a noção desses sobre as necessidades, preferências, desejos, condições físicas e psicológicas do usuário.

Em linhas gerais, o Loopt é capaz de:

  • mostrar para o usuário seu posicionamento global em um mapa;
  • permitir que o usuário interaja com o mapa, arrastando-o em todas as direções;
  • mostrar o posicionamento de amigos no mapa;
  • compartilhamento entre amigos de suas posições globais e atividades realizadas;
  • criação e compartilhamento de perfis de usuários de acordo com o gosto e a necessidade de cada um;
  • troca de mensagens dentro de uma determinada faixa de proximidade (as mensagens podem conter inclusive fotos tiradas pelos usuários, as quais já são enviadas com a localização do usuário anexada);
  • aviso de alerta quando algum amigo estiver se aproximando;
  • compartilhamento de comentários e fotos sobre lugares visitados.

O Loopt foi desenvolvido por uma empresa do mesmo nome do produto, a qual é ainda considerada uma startup. A história dessa empresa está ligada a outros dois posts que apareceram recentemente por aqui, falando sobre a miniaturização do capital de risco e desenvolvimento de software para o IPhone.

Em 2005 os sócios-fundadores, então alunos de graduação em ciência da computação da universidade de Stanford, conseguiram fundos da empresa Y Combinator (mencionada no post do Cassio como uma das empresas de capital de risco que oferecem investimentos pequenos e de curta duração) e passaram suas férias de verão em laboratórios da mesma, desenvolvendo a idéia do produto.

Ainda em 2005, motivados e inspirados com suas idéias, os sócios largaram a universidade, convidaram mais alguns amigos para fazerem parte da empresa e conseguiram finalizar uma versão estável da ferramenta. Em outubro de 2005 a empresa conseguiu levantar um capital de risco de U$5M de duas empresas: a Sequoia Capital e a New Enterprise Associates. Essas são duas grandes empresas de capital de risco, que foram investidores de empresas como Google, Yahoo!, PayPal, dentre outras.

Em 2006, contando com uma equipe formada, um bom capital financeiro, e a versão inicial do Loopt pronta para entrar em ação, a empresa lança seu software em conjunto com empresas de telefonia celular dos Estados Unidos. Atualmente a empresa possui parceria com as principais operadoras americanas e o Loopt pode ser instalado em mais de 65 modelos de aparelhos celulares, dentre eles o IPhone.

Thais Braga Silva é bacharel e mestre em computação pela UFMG. Atualmente cursa o doutorado na mesma instituição, na área de computação móvel ciente de contexto.

Inovação, Mobile, Redes Sociais 0 Comentários

Alan Turing

Antes de chegarmos ao centésimo post deste blog (será o próximo), não podíamos deixar passar em branco que exatamente ontem, véspera de dia de São João, também foi o aniversário de uma das pessoas mais importantes da ciência da computação, o matemático britânico Alan Turing.

Graças ao Turing, temos o conceito de algoritmo e construções lógico-matemáticas como a máquina de Turing (uma abstração que descreve o funcionamento de uma máquina lógica determinística, exatamente como nossos computadores) e o teste de Turing, que descreve um procedimento que diferenciaria uma pessoa de um programa, com base na inteligência do interlocutor, ou em sua capacidade de mimetizar a inteligência de um ser humano real.

Assim, Alan Turing não só teorizou sobre o funcionamento dos computadores muito antes deles existirem, mas também lançou sementes de discussão sobre a Inteligência Artificial.

Alan Turing também passou maus bocados desde o início da guerra fria por conta de seu homossexualismo que era condenado (mais ainda) na época. Em 1954, Alan Turing morreu por suicídio, comendo uma maçã envenenada, uma referência à Branca de Neve (que alguns atribuem erroneamente à logo colorida da maçã da apple). Um triste fim para um gênio: morrer por causa do preconceito e da intolerância da “moral” do pós-guerra.

A vida de Alan Turing também rendeu um filme feito para a TV em 96 chamado “Breaking the code” (não sei se chegou a sair no Brasil). E no site oficial do Turing, há também uma “oração“, um texto muito legal e crítico do Andrew Hodges, que escreveu o livro “Enigma“, talvez a mais bem conhecida biografia de Turing.

Mas este post não é apenas para homenagear o Alan Turing, mas também para anunciar a parceria do Instituto Turing, o braço de pesquisa e educação do Vetta Labs, com a ETEG, uma empresa que dentre outras atividades, é referência em treinamento de TI em Belo Horizonte. A ETEG disponibiliza, junto com seu rol de cursos (a grande maioria relacionada a JAVA), os cursos de Eclipse RCP e BIRT, AJAX Básico, Toolkits AJAX e Ruby On Rails. Fica a dica.

Biografia, Desenvolvimento, Inteligência Artificial, Teoria da Computação 0 Comentários

Aprendizagem de Máquina ao Alcance de Todos - (1)

Volta e meia surge algum artigo aqui no blog falando de aplicações de inteligência artificial e frequentemente usando termos que podem soar meio misteriosos para muitos, como o críptico “aprendizagem de máquina”, às vezes também usado em sua forma original em Inglês, “machine learning”. Penso que talvez esse termo pode ainda evocar na cabeça de muitos uma imagem de coisa scifi incompreensível, então decidi escrever este artigo (em dois “capítulos”) sobre o beabá da aprendizagem de máquina para mostrar que, uma vez explicado, o tal Machine Learning (ou ML) pode até parecer meio prosaico…

A definição vaga e por alto (e não sei se existe uma definição exata e profunda, a propósito :) de ML como um todo é: um método ou algoritmo para descobrir de forma automatizada padrões em uma massa de dados. Acho que essa definição não diz muito coisa sem exemplos, então vamos dar alguns nomes a alguns bois.

Vamos supor que você tenha um banco de dados com características de várias pessoas. As características podem ser qualquer coisa (digamos, peso, altura, idade, etc), desde que possam ser comparadas de forma quantitativa ou lógica. Esse conjunto de valores de características descrevendo cada pessoa é chamado vetor de características, em jargão de ML.

Já que o valor da altura de uma pessoa é comparável com o valor da altura de outra, o mesmo acontecendo com peso, idade e demais dimensões (=outro jargão de ML - bem, na verdade de ciências exatas em geral, nesse caso :) do vetor de características, então acaba que dois vetores inteiros podem ser comparados um com o outro, levando em conta todas as suas dimensões ao mesmo tempo. É possível criar o que chamamos de medida de similaridade, que é simplesmente uma conta envolvendo todas as dimensões de dois vetores que no final solta um número - quanto mais alto esse valor, mais similares são esses vetores.

De posse dessa medida, já é possivel fazer coisas divertidas em ML - por exemplo juntar as pessoas parecidas umas com as outras, dividindo o conjunto original em vários subconjuntos de pessoas parecidas. Esse tipo de processo é o chamado clustering - ou aglomeração, traduzindo - e é a base da vertente de ML chamada de aprendizado não-supervisionado.

A parte do “aprendizado” nesse nome vem do fato de que antes os elementos do conjunto de dados sendo analisado eram completamente amorfos, não-estruturados, “farinha do mesmo saco” por assim dizer; após o clustering, porém, temos grupos separados nos quais veremos padrões. No exemplo do clustering de pessoas, talvez se forme um aglomerado de pessoas baixas e gordas, outro de pessoas altas, um de pessoas velhas de peso médio, e por aí vai.

Já a parte do “não supervisionado” vem do fato de que não é preciso dizer ao algoritmo de clustering sendo usado (existe uma infinidade deles) se os resultados que ele está produzindo são bons ou ruins, ele mesmo toma suas próprias “decisões” de como fazer melhor a aglomeração. Aliás, é difícil dizer quantitativamente e de forma geral, irrestrita, se um clustering é bom ou ruim, no sentido de que é algo um tanto subjetivo - existe uma multiplicidade de métricas de qualidade de clustering, com aplicações apropriadas caindo em vários casos diferentes.

Existe também, é claro, a aprendizagem supervisionada, o outro grande campo da Aprendizagem de Máquina. Mas isso é assunto para a Parte 2 deste artigo…

Data Mining, Inteligência Artificial 0 Comentários

Gnuplot e a complexidade de algoritmos

Esta semana, me peguei usando pela primeira vez o gnuplot. E o mais curioso disto, para analisar, a grosso modo, o comportamento de um programa que recebe como entrada uma matriz de dados, no caso, o haploview.

Não vamos entrar em detalhes aqui, mas o haploview é um aplicativo JAVA usado para estudar haplótipos, e a pergunta que eu tinha que responder era “qual o tamanho máximo de um dataset que eu posso usar dado um heap de tamanho X?”. Lógico que a resposta correta inclui “e se seu cliente te perguntar o que muda se você puder usar isso + X?”.

É interessante porque não é o tipo de pergunta que a gente se faz normalmente. Geralmente, você assume que o tamanho da entrada nunca vai ser grande demais, ou se você alocar um heap grande o suficiente, ainda que ao custo de alguma lentidão por conta do trabalho extra do garbage collector, as coisas funcionarão.

O mais comum são as pessoas fazerem o profiling em busca de gargalos, mas eu não ouço falar muito de gente que tenta descobrir até onde o sistema aguenta.

Bem, não é este exatamente o caso do haploview. É um software de terceiros e nem quem fez o software tem idéia de qual a ordem de complexidade (o big “O”) do sistema, muito menos da capacidade máxima.

E se tratando de dados “bioinformáticos”, sempre é fácil que as coisas se tornem rapidamente grandes demais. E a última coisa que se quer é morrer com um doloroso “OutOfMemory”. Você tem que saber os limites.

Basicamente, um dataset é uma grande matriz de dados, e como o haploview é uma caixa preta, podemos considerar que o número de linhas da entrada (no caso, o número de indivíduos) é uma dimensão e o número de colunas (o número de marcadores) é outra dimensão.

Vamos plotar no gráfico valores em 3 direções: [a] variando apenas o número de indivíduos, [b] variando apenas o número de marcadores e [c] variando ambos, proporcionalmente (diagonalmente). Assim podemos ter uma idéia, ainda que não muito refinada, do comportamento do sistema.

De posse destes pontos, você pode observar uma tendência na relação entre o consumo de memória e a entrada de dados. Conforme a “cara” do gráfico, você pode achar mais adequado tentar interpolar com algum tipo de superfície. No meu caso, uma superfície levemente abaulada ficou bem interpolada com uma superfície polinomial do tipo ax^2 + by^2 + cxy + d. Deu complexidade quadrática na veia.

Nesta hora, o gnuplot se revelou de uma simplicidade franciscana, já que você pode passar para ele uma função e mandar ele fazer o “fit” e achar os valores de a, b, c e d, passando como entrada um arquivo tabular (”data.txt”) com os valores de cada eixo em cada coluna.

set title “Haploview memory usage”
set xlabel “Individuals”
set ylabel “Markers”
set zlabel “Used Memory”
g(x,y) = a*x**2 + b*y**2 + c*x*y + d
fit g(x,y) ‘data.txt’ using 1:2:3:(1) via a, b, c, d
splot ‘data.txt’ using 1:2:3, g(x,y)

Você pode achar útil esta apostila em português sobre o gnuplot, pelo menos até que saia o livro.

Claro que existem uma série de outras boas ferramentas como matlab, R, octave, scilab e etc, mas se você quer algo rápido, gnuplot pode ser uma boa saída. E se for prá gerar coisas bem coloridas e visualmente atrativas prá colocar naquele seu paper, você pode tentar estas opções aqui também, prá ficar com aquela cara de Scientific American ;-) .

Biotecnologia, Desenvolvimento, Visualização Cientifica 2 Comentários

Interfaces telepáticas: quando o Mundo do Amanhã chega hoje mesmo

Recentemente, surgiu aqui no Labs um anteprojeto de um projeto para talvez, quem sabe, trabalharmos com a identificação automática de fases do sono em “polissonografias”, que são dados neurofisiológicos e cardio-respiratórios coletados de pessoas dormindo. A parte neurofisiológica da coisa serviu de inspiração para eu escrever este artigo acerca das “interfaces telepáticas”, como as chamo. Alguns diriam que “interfaces neurais” talvez seja um termo melhor, mas gosto das imagens de pulp scifi que “telepáticas” evoca. :)

Aliás, o tema de interfaces capazes de ler diretamente a mente do usuário é recorrente na ficção científica. A mais antiga referência _scifi_ sobre interfaces telepáticas de que me lembro está no clássico inesquecível O Planeta Proibido. Numa das cenas desse filme de 1956, um dos personagens usa um aparelho que é capaz de ler e interpretar sua mente, inclusive mostrando as imagens em que ele está pensando. No filme, essa tecnologia é alienígena e apresentada como algo centenas de milhares de anos à frente da ciência humana - o que é bastante curioso, considerando-se que o filme se passa séculos no futuro, em uma época onde os humanos viajam pelo espaço em discos voadores antigravitacionais e cruzam anos-luz em tempos razoáveis passando pelo “hiperespaço”.

Ou seja, esse parece ser mais um dos casos muito freqüentes em que a ficção científica acerta acerca de uma previsão sobre o futuro, mas erra feio a ordem do que virará realidade primeiro. Alguns experimentos com resultados inesperados e algumas teorias exóticas até dão alguma esperança de que um dia teremos antigravidade de disco voador ou saltos hiperespaciais como no filme, mas na melhor das hipóteses isso está num futuro imprevisivelmente distante. Já as interfaces telepáticas estão bem próximas. Mais precisamente, elas já estão aqui!

Lembro de pesquisas sobre leitura e interpretação de sinais cerebrais desde os anos 90. Inicialmente, essas pesquisas visavam ajudar pessoas com deficiências físicas, possibilitando a sinais de seus cérebros “contornar” paralisias e outras condições. A pesquisa de anos atrás sobre a movimentação do ponteiro de um mouse usando a mente é emblemática dessa era. Porém, como era de se esperar, essas pesquisas começam aos poucos a ser aplicadas ao mercado muito mais vasto de consumidores em geral…

Assim, há alguns meses surgiu a demonstração de uma interface de “subvocalização” para celulares, que capta os impulsos nervosos que o cérebro envia para a garganta e interpreta as palavras sem que a pessoa tenha de efetivamente verbalizá-las - ideal para ter conversas telefônicas privadas mesmo em ambientes cheios de gente. Também apareceu recentemente, e já está disponível comercialmente, um controle telepático para videogames.

Essas aplicações envolvem análise de sinais eletroencefalográficos ou atividade de conjuntos de nervos superficiais específicos - o que certamente já rende um bom número de aplicações divertidas, como exemplificado. Porém, esse meio de aquisição de certa forma capta apenas comandos que o cérebro emite “propositalmente”. Mas a verdadeira fronteira final das interfaces telepáticas, que vai além da captação de comandos diretos do cérebro, envolve a observação direta da atividade cerebral, que potencialmente poderia levar à possibilidade de saber o que uma pessoa está realmente pensando. Uma pesquisa divulgada poucas semanas atrás por exemplo descobriu que as mesmas áreas cerebrais tendem a se ativar quando pessoas diferentes estão pensando na mesma palavra, um princípio que se bem desenvolvido poderia levar a um “leitor universal de pensamentos”. Outra aplicação relativamente recente é o detetor de mentiras com 90% de acerto. Esta última, a propósito, cai no que muitos vêem como o “lado negro” das tecnologias de telepatia artificial, já que levanta uma série de questões éticas e legais.

É claro que, ao contrário do que acontece com as interfaces “eletroencefalográficas”, que no fim das contas usam simples eletrodos, essas aplicações bem mais ousadas observam a atividade cerebral por fMRI (do Inglês para Imagem por Ressonância Magnética Funcional), ou seja, usam máquinas enormes e caras, tornando difícil imaginar uma popularização desses métodos. Porém, avanços também recentes em magnetômetros atômicos acenam com a possibilidade de máquinas de fMRI portáteis e baratas em um futuro não muito distante. Mais espantosamente, magnetômetros atômicos poderiam em tese ser sensíveis o suficiente para monitorar o magnetismo até de neurônios individuais, podendo registrar a atividade cerebral com um nível de detalhe impensável hoje em dia. Talvez, quem sabe, até o suficiente para alcançar o “upload” tão almejado pelo movimento Trans-Humanista. Mas isso já é outra viagem, que talvez um dia eu tenha coragem de encarar em um artigo futuro. :)

Ciências cognitivas, Inovação, Memória, Usabilidade 0 Comentários

Cervejas e fraldas

Um dos causos mais famosos e mais mal-interpretados da história do Data Mining é a famosa correlação entre cervejas e fraldas.

Existe a lenda de uma loja que descobriu que homens que compravam fraldas entre 5 e 7 da tarde das Quintas e Sábados, também compravam cerveja. Os donos então puseram fraldas perto das cervejas e as vendas subiram. Um monte de hipóteses surgiram, desde o cara que ia trocar a fralda alcoolizado (má idéia) até a auto-recompensa, etc.

Bem, a história não é bem assim. Na verdade, ela parece ser BEM DIFERENTE disto.

Um lugar onde há muitos dados é no supermercado. No esforço de entender melhor o comportamento do consumidor, especialmente a partir do início da década de 90, começou-se a estudar o chamado Market Basket (Cesta de compras), que nada mais é que a lista de produtos que o cliente levou numa compra.

Tentar encontrar padrões, computacionalmente, nestes dados, muitas vezes se dá na forma de regras de associação. A forma mais comum de expressar uma regra destas é “SE [CONDIÇÃO] ENTÃO [CONCLUSÃO]“. Por exemplo: SE leite E açúcar ENTÃO café (muita gente que compra leite e açúcar compra também café).

Algoritmos automáticos para obter estas regras vão encontrar, em sua grande maioria, as regras óbvias e as regras inúteis. Eventualmente, surgem regras que podem resultar em insights bacanas que levarão ao lucro. Mas como o nome diz, em Data Mining, a gente escava toneladas de terra prá achar uns gramas de ouro.

A geração destas regras é um processo demorado, então os supermercados acabam trabalhando com categorias de produtos (ao invés de produtos individuais) e restringem o campo de busca a assuntos mais específicos. Há várias maneiras de obter estas regras como esta bem didática que eu encontrei usando excel.

Voltando à cerveja e às fraldas, a verdade sobre esta história parece ser bem menos glamourosa. Talvez, ninguém tenha realmente ganhado rios de dinheiro vendendo cerveja e fraldas juntas.

Errou a wikipédia. Tsc Tsc. [UPDATE: o Girino diz que corrigiu]

Mas o Data Mining, muitas vezes, traz mais perguntas que respostas.

Dado que cerveja e fraldas estão correlacionados, o que é melhor? Deixar um perto do outro prá facilitar a compra impulsiva ou deixar um longe do outro prá forçar o sujeito a andar pela loja e possivelmente comprar algo mais no caminho?

Outro aspecto dos Market Baskets é que à medida em que sabemos quem é o cliente (geralmente via cartão de crédito ou de fidelidade), abre-se margem para analisar o Market Basket ao longo do tempo. O supermercado sabe que se você comprou um cortador de grama, provavelmente vai comprar um regador, etc.

Data Mining 2 Comentários

Miniaturizando o Capital de Risco

Há algum tempo que essa história de “Web 2.0″ tem levado a um renascimento das startups web. Há até quem diga que estamos vivendo uma nova bolha especulativa, repetição daquela dos anos 90. Bobagem. O volume de dinheiro envolvido nessa nova onda de criação de startups é uma fração do volume de 10 anos atrás e ainda não tem ninguém lançando ações em bolsa antes de conquistar o primeiro cliente.

A verdade é que está cada vez mais barato criar uma startup, especialmente se ela for voltada para a web. Todo o software necessário é gratuito. Hospedagem e banda são muito mais baratas que há 10 anos atrás, e com serviços de cloud computing como os Amazon Web Services e o Google App Engine, ninguém precisa mais construir um data center enorme e caríssimo. Você escala na exata medida da sua necessidade e, assume-se, do seu bolso. O custo para levar sua grande idéia que vai revolucionar o mundo para o mercado nunca foi tão baixo. Se você além de ter idéias revolucionárias souber programar, o custo principal é o seu tempo.

Isso é um enorme problema para os venture capitalists, que administram fundos de capital de risco, porque as startups precisam de muito menos investimento que antes. À primeira vista isso pode parecer uma vantagem para os financiadores, mas não é. VCs não escalam “para baixo” facilmente. Eles têm fundos enormes para investir, e uma capacidade limitada de aprovar e monitorar investimentos. Então, para um VC típico, simplesmente não faz sentido investir, digamos, R$100.000,00 em 100 empresas ao invés de investir R$10.000.000,00 em uma única empresa.

VCs continuam operando um um regime de poucos negócios com um montante alto por negócio, mas a indústria de TI não se encaixa mais tão bem nesse modelo. Isso é especialmente crítico no caso de web, que sempre foi onde a maioria dos investimentos e grandes sucessos ocorrem. Alguns fundos simplesmente mudaram de indústria, e estão agora investindo em coisas mais futuristas e que ainda exigem muito dinheiro de pesquisa e desenvolvimento, como nanotecnologia e energia renovável.

Mas algumas pessoas viram nisso uma oportunidade. A Y Combinator, fundada pelo pioneiro de web applications Paul Graham e amigos, é uma firma de investimento bem peculiar. Eles só investem em empresas nascentes (o chamado capital semente). Os investimentos seguem sempre um template. Ao contrário da maioria dos VCs, você não precisa conhecer um amigo do VC para receber investimento. Eles fazem seleções abertas duas vezes por ano e só investem nos melhores projetos submetidos nessas seleções. Os contemplados recebem o suficiente para viver por três meses. E os felizardos são obrigados a se mudarem para a mesma cidade onde os investidores estão (Cambridge, MA no verão Vale do Silício no inverno) durante esses três meses.

A idéia é que a Y Combinator oferece mais que o dinheiro (que não é grande coisa, mas por outro lado não custa muito em termos de participação acionária). Eles oferecem experiência (o Paul Graham vendeu a ViaWeb, sua startup, pro Yahoo por US$50 milhões anos antes da bolha estourar), contatos, séries de palestras com empreendedores famosos, e um dia de demo em que todo mundo apresenta suas idéias para outros investidores que podem, então, financiar a vida das novas empresas depois dos três meses.

Esse modelo diferente, embora novo, já levou a vários casos de sucesso. A Reddit foi adquirida pela Condé Nast, dona da Wired. A Auctomatic foi adquirida por US$5 milhões menos de um ano após seu lançamento. A Zenter foi comprada pelo Google há mais ou menos um ano. A estimativa dos sócios da Y Combinator é que as startups que eles financiam têm uma taxa de sucesso de 50%, o que é impressionante. O típico na indústria de capital de risco é 20%, no máximo 30% para os melhores fundos.

A visibilidade e os resultados obtidos pela Y Combinator inspiraram diversos grupos a criar firmas nos seus moldes na Europa, Canadá e outras partes dos Estados Unidos. São os Y Imitators ;-). Até agora, nenhum chegou a lugar algum. Eu acho difícil reproduzir o que a Y Combinator tem, e agora eles estão criando uma massa crítica de empresas investidas que estão amadurecendo e formando suas redes de contatos, ex-fundadores ricos que podem investir nas próximas gerações de startups, e experiência em como determinar, o mais cedo possível, quais projetos vão vingar.

Uma forma ainda mais peculiar de investimento é a da Prototype Invest. Eles não te dão dinheiro, dão software. Se você se empolgou com a possibilidade de criar uma startup revolucionária sem precisar levantar rios de dinheiro, mas não sabe nada de tecnologia para transformar sua idéia em produto, eles fazem isso pra você em troca de participação acionária. Aí nem o custo de desenvolvimento você tem. Não conheço os caras e não tenho a menor idéia da capacidade (ou seriedade) deles. Mas se funcionar é um redutor de barreira de entrada interessante.

Inovação 0 Comentários

Perfume em cápsulas

Outro dia, eu ouvi pela Band News (normalmente eu ouço CBN, mas neste dia a CBN estava passando jogo de futebol…) uma notícia sobre uma pílula que, ingerida, levava a pessoa a exalar perfume. Se me lembro bem, me parece que a descoberta foi meio por acaso, como um efeito colateral de outra pesquisa, ou pelo menos me lembro de ter ouvido a notícia assim.

Além da curiosidade, claro, existe um forte aspecto prático. Muitas pessoas têm alergia a álcool ou a outros componentes dos desodorantes tradicionais, e como você pode imaginar, isso é um problema bastante desagradável.

Mas o fato é que a chamada “pílula perfume”, segundo o ótimo portal sobre inovação da UNICAMP, foi desenvolvido pela PADETEC, o parque de desenvolvimento tecnológico do Ceará, utiliza o coentro, que ao contrário do senso comum, não te deixa cheirando a um prato do “Comida di Boteco”, mas a um odor parecido com lavanda.

Outras aplicações para essa tecnologia estavam sendo consideradas para repelir o mosquito da dengue, mas eu não tenho informações sobre a efetividade desta estratégia. O fato é que, diante do sério problema da dengue, toda proposta de solução ganha muita visibilidade na mídia.

Mas o que me levou a postar aqui foi ter visto, neste interessante portal de fomento à inovação, um prêmio de US$ 20.000 para quem propuser compostos por via oral que façam seu corpo exalar algum perfume (6379605). Não é muito, se for pensar em termos de custos de pesquisa, mas…

Apesar do pessoal da PADETEC já ter patenteado a tecnologia deles (só o pesquisador que desenvolveu este perfume já tem cerca de 20 patentes depositadas no INPI), não pude evitar mandar um email pros caras com a dica. Quem sabe não rende um extra prá eles?

Inovação 0 Comentários

« Previous Entries