Como criar uma startup de tecnologia inovadora?

Quando eu estava terminando minha graduação (sem datas, OK? ;-)) havia muitos amigos meus com excelentes idéias para produtos inovadores que só precisavam de um empurrãozinho para decolarem e se tornarem um grande sucesso. Pelo menos isso é o que pensávamos à época. Na verdade criar um produto de sucesso a partir de uma idéia brilhante exige “um pouco mais” que um simples empurrãozinho.

O empurrão inicial é a parte fácil, na verdade. Com ele você resolve metade do problema que é transformar sua idéia brilhante em um produto. A outra metade do problema consiste em transformar o produto em um produto de sucesso. Essa é a parte difícil. Mas vamos por partes. Eu quero discutir cada um dos pontos em posts separados, para o texto não ficar muito grande.

Felizmente a cultura tanto do governo quanto do empresariado brasileiro mudou muito nos últimos anos. Hoje há inúmeras maneiras de se conseguir dinheiro do governo e do setor privado para o desenvolvimento de projetos de Pesquisa e Desenvolvimento (P&D). Se você tem uma idéia inovadora e precisa de dinheiro para transformar essa idéia em um produto (nem que seja apenas para se pagar enquanto você gasta seu tempo em seu projeto ao invés de procurar um emprego), a receita é, na verdade, muito simples.

  1. Certifique-se que sua idéia é realmente uma inovação. Parece ridículo mas o fato é que a maioria das pessoas têm uma idéia totalmente errada sobre o que é inovação. inovação não é uma novidade científica com cara de produto. Para se tornar uma inovação, a novidade tem de criar ou transformar um produto para o qual há demanda de mercado. Não existe inovação sem mercado. Um produto só é inovador se ele tem potencial para modificar o mercado em que está inserido. Desta forma um software capaz de resolver o problema do caixeiro viajante em tempo polinomial não seria uma inovação, mesmo sendo uma tremenda novidade científica.
  2. Para conseguir dinheiro do governo ou do setor privado, você precisará provar não apenas a viabilidade técnica da sua idéia mas também (e até mais importante) a sua viabilidade comercial. Minha sugestão é que você gaste um tempo escrevendo um relatório para você mesmo sobre sua idéia. Isso ajuda a pensar sistematicamente em todos os pontos e ainda te dá a base do que você vai precisar para entrar com um pedido de verba em um edital público ou para elaborar um plano de negócio para um investidor capitalista.
  3. Se após concluir o passo anterior você ainda acredita que seu produto é uma inovação e quer buscar dinheiro para financiar seu desenvolvimento, você precisa decidir de onde você vai buscar dinheiro. Há 3 opções mais comuns: (1) Contratar empréstimo junto ao BNDES, FINEP ou outro órgão de fomento (você vai precisar devolver o dinheiro em algum momento); (2) Levantar investimento do setor privado junto a fundos de “capital semente” ou investidores pessoa física e (3) Entrar em editais públicos de entidades de fomento a pesquisa e inovação como CNPq, FINEP e FAPEMIG.

Quanto ao relatório, você tem de ser capaz de descrever sua idéia em 4 parágrafos. Cada um respondendo a cada uma das seguintes perguntas: (1) “O quê é o seu produto?” (2) “Para quê ele serve?” (3) “Por quê o mercado precisa dele?” (4) “Como você vai conseguir implementá-lo?”. Em seguida você precisa explicitar a forma como o mercado será afetado por seu produto: quais são seus possíveis clientes, quais são seus potenciais concorrentes (diretos e indiretos), como seus concorrentes vão responder ao lançamento do seu produto e qual é sua vantagem competitiva para enfrentá-los. Na minha opinião, ter pensado em todas essas questões é o mínimo para você ao menos pleitear recursos em um edital público ou de um investidor capitalista.

    O BNDES tem uma série de linhas de empréstimos com juros subsidiados pelo governo apropriados para a criação de novos produtos. É relativamente fácil conseguir um empréstimo desses mas há o risco do produto acabar sendo um fiasco e você terminar o processo com uma bela dívida. A FINEP tem um programa de financiamento a juro zero (http://www.jurozero.finep.gov.br/jurozero_prod), bem mais interessante porque eles cobram apenas a correção monetária do valor emprestado mas mesmo assim o risco do endividamento em caso de fracasso continua. Para fugir desse risco (ou transferí-lo para outra pessoa ;-) você pode buscar um sócio capitalista para seu novo negócio ou dinheiro público através de editais.

    Os fundos de capital semente estão se tornando cada vez mais comuns. A grande vantagem de ir por esse caminho, na minha opinião é que o dinheiro vem acompanhado de duas coisas muito importantes para o sucesso do seu produto (que eu espero discutir em maiores detalhes no próximo post): (1) consultoria em gestão empresarial feita pelos próprios investidores, que em geral são empresários experimentados que têm todo o interesse em ver seu produto virar um sucesso dado que eles serão seus sócios e (2) uma lista de contatos a que você dificilmente teria acesso se trabalhasse sozinho. O principal ponto negativo é óbvio: sua participação nos lucros fica diluída. A pergunta neste caso passa a ser se sua expectativa para o crescimento do “tamanho do bolo” compensa ou não a “fatia menor” do bolo que você terá no final das contas.

    Quanto aos editais, esses estão também cada vez mais populares e mais pródigos. A FINEP, por exemplo, tem um edital de subvenção econômica que financia projetos da ordem de 1 a 3 milhões de reais. CNPq e FAPEMIG também têm uma série de editais interessantes para projetos menores. A vantagem dessas agências é que elas publicam vários editais diferentes ao longo do ano de forma que se você for persistente e tiver de fato um bom projeto em mãos as chances de conseguir algum dinheiro é muito grande. Note que você não precisa estar associado a nenhuma instituição de ensino ou pesquisa para participar da maioria desses editais. De fato, uma boa parte desses é direcionada exatamente para pequenas empresas ou pesquisadores individuais.

    Continuo a discussão no próximo post.

    Inovação 4 Comentários

    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

    « Previous Entries