segunda-feira, 8 de dezembro de 2014

Ciência de Dados e o futuro de todos nós

Minha mãe conta que quando era criança, na escola, constantemente pedia ajuda dos colegas para entender o que estava escrito no quadro. Isso se seguiu por anos até que um dia alguém questionou-a se não seria o caso de ela usar óculos, e se algum dia já havia feito exame de vistas.

Ela mesma, minha mãe, com aproximadamente 50 anos, fez uma cirurgia de coluna, para corrigir lesões antigas que com a idade se agravavam. Após o período de recuperação ela percebeu que algo simplesmente não estava mais ali: Uma dor constante e sutil com a qual convivera por décadas.

Hoje já estou casado há quase 4 anos e percebo que minha esposa amorosamente aponta algumas deficiências minhas que eu nunca havia percebido. Ela é capaz de perceber relações com hábitos dos meus pais, com experiências do passado, e chegar a um diagnóstico que eu nunca chegaria sozinho.

Isso tudo me faz perceber que há aspectos fisiológicos e psicológicos com os quais podemos conviver por anos, ou pela vida inteira, sem perceber. Alguém, em algum momento, vai nos conhecer melhor do que nós mesmos nestes aspectos.

Mudando completamente de assunto, mas não exatamente, tenho estado intensamente envolvido com uma área que tem tido estrondosa e acelerada ascensão, Ciência de Dados, uma área com base na "boa e velha" estatística, que consegue extrair o máximo proveito do poder computacional e de armazenamento dos computadores atuais, minerando e aprendendo em cima de dados que estão cada vez mais acessíveis e disponíveis (o famoso Big Data).

Hoje em dia, um cientista de dados pouco experiente, como eu, tem à sua disposição ferramentas simples e intuitivas para minerar e cruzar dados de todas as redes sociais mais utilizadas no mundo (sim, aquela que você usa também). É simples, os dados estão lá! E o dito cientista de dados não precisa nem ser um cientista da computação, ou um desenvolvedor de software, pode ser um sociólogo, um jornalista, um economista, enfim, qualquer um com mínima ousadia em linguagens de programação e um tanto de curiosidade sobre um determinado assunto.

Mais do que isso, a área de Ciência de Dados ainda engloba a área de Aprendizado de Máquina (ou Machine Learning) onde mecanismos já antigos de mineração de dados são agora utilizados em parceria com a computação de alto desempenho (High Performance Computing) para um aprendizado estatístico em cima dos dados e a construção de modelos preditivos que simplesmente indicam que resposta uma determinada pergunta deve ter. Quem vai ganhar a eleição? Determinado paciente possui câncer ou não? O que há de diferente e incomum em uma fotografia de uma determinada galáxia a partir da super lente de um satélite ou em uma imagem de uma grande multidão fazendo um protesto em frente à sede do governo de um determinado país?

Isso tudo já está aí, disponível para usuário comuns, e mais disponível ainda para grandes agências de tecnologia e/ou governamentais. Já existe software para identificar exatamente o que há em uma fotografia, ou para o antigo "onde está o wally?".

De uma forma muito simples tais tecnologias podem ser portadas para processamento de vídeos, de câmeras de vigilância, para indicarem informações em tempo real, como, por exemplo, a presença de um potencial terrorista com uma bagagem suspeita em um aeroporto ou em algum outro lugar com grande fluxo de pessoas.

Um exemplo bastante atual é o vazamento de informações ultra-secretas por parte do ex-analista Edward Snowden sobre um amplo programa de vigilância promovido pela US National Security Agency (NSA), o que levantou um grande debate (e muitos conflitos diplomáticos) em torno do uso de tais tecnologias por parte tanto de governos quanto de grandes empresas de tecnologia.

Agora, o que isso tudo tem a ver com as histórias que contei no início? Bom, ao que tudo indica, todas as comunicações humanas já podem estar sendo registradas em supercomputadores em algum lugar (ou em alguns lugares) por aí. Através de tecnologias de Processamento de Linguagem Natural (Natural Language Processing) é possível interpretar áudio para texto e extrair a semântica do texto, tudo automaticamente. Meu iPhone, mesmo desligado, pode estar transmitindo uma conversa que estou tendo com amigos em minha sala de estar. Tudo, absolutamente tudo, pode estar sendo registrado.

Imagine então um super-computador com um programa altamente sofisticado, que entende tanto de aspectos psicológicos quanto fisiológicos. Tal equipamento poderia ser capaz de identificar em uma inteira população quantos possuem algum problema de visão, ou algum problema de coluna, ou cardiovascular, e por aí em diante. O computador (e a agência que o detém) poderia saber disso antes de a própria pessoa o saber, poderia me conhecer melhor do que eu mesmo.

E não para por aí! Atualmente, 39% da população mundial tem acesso à internet. No entanto, grandes corporações como Google, Facebook e Tesla já estão com projetos bastante adiantados de levar a internet ao planeta inteiro. Quando isso acontecer, provavelmente todos os dispositivos eletrônicos que usamos estarão conectados à rede. É a "Internet das Coisas" (Internet of Things), onde ganham espaço também as tecnologias de Wearable Computing, ou seja, computação que você veste. Grandes nomes como o físico Stephen Hawkins, questionam o perigo de tais avanços.

Evidentemente que tudo isso gera muitos ganhos em termos de segurança, de previsão de atentados terroristas, previsão de catástrofes naturais, previsão até de bolsa de valores. Já vem a muito tempo sendo usado também para direcionamento de marketing, oferecendo aos clientes exatamente aquilo que eles vão querer comprar, com isso o lucro destas grandes instituições aumenta aceleradamente, as pessoas ficam mais felizes com o que compram e todos ficam mais felizes com os riscos dos quais o governo alega as proteger.

É um tópico um tanto quanto interessante. Eu, particularmente, tenho um interesse gigante pelas tecnologias envolvidas em tudo isso. Sempre gostei de matemática, sempre gostei de computação e, recentemente, aprendi a gostar muito de estatística.

Porém, o debate sobre o que nos espera no futuro segue em aberto e vou, por enquanto, guardar um pouco as minhas opiniões pessoais sobre isso.



sexta-feira, 31 de outubro de 2014

Aprendizado de Máquina com Scikit-Learn

Neste post pretendo dar continuidade ao post anterior adentrando dessa vez a área de Aprendizado de Máquina (Machine Learning). Agradeço a essencial contribuição do amigo Jason Brownlee que não hesitou em me conceder autorização para seguir a abordagem de suas publicações nesta área.

Antes de falar um pouco mais sobre os algoritmos de Machine Learning (assunto para próximos posts) escrevo um pouco sobre o Scikit-Learn, uma biblioteca de Machine Learning para Python que tem sido amplamente utilizada, sendo defendida por muitos como sendo atualmente a melhor biblioteca para este tipo de aplicações.

Análise de Dados, Aprendizado de Máquina e Ciência de Dados

Neste post pretendo iniciar uma série de posts sobre Análise de Dados (do inglês, Data Analysis), Aprendizado de Máquina (Machine Learning) e Ciência de Dados (Data Science).

Acredito que a definição destas áreas seja algo ainda em aberto, muito discutido na comunidade acadêmica e na indústria, tendo quase unanimidade sobre o quanto tais termos são recentes e ainda estão em processo de definição.

Por isso, a explicação que dou a seguir leva a um debate em segue em aberto, remete a definições que têm sido construídas por diferentes tipos de profissionais e pesquisadores em diversos ramos, especialmente Estatística, Matemática, Ciência da Computação, Ciências Sociais, etc.

sexta-feira, 21 de março de 2014

2-year retrospective and a glimpse of the future

Dear readers! Now that almost 12 months has passed, I decided to find a way of spending some time for a new post. At least some minutes each day.


First of all, I want to mention my satisfaction with the visits from so many places which I've never imagined would happen, and also apologize for so much time without a single post. But I aim to, through this post, share with readers about many recent changes in this blogger's life who is writing, which also will reflect on future posts in the blog.


The "Informata Brasileiro", myself, has passed whole 2011 and 2012 intensively studying "top of mind" technologies for software development, taking references from technology radars from influent companies of this field.

quinta-feira, 20 de março de 2014

Retrospectiva de 2 anos e um vislumbre do futuro

Caros leitores! Depois de quase 12 meses, resolvi dar um jeito de separar um tempo para uma nova postagem. Nem que fosse um pouquinho de tempo por dia.


Antes de mais nada, quero manifestar minha satisfação com as visitas ao blog que continuam vindo de tantas partes que eu nem imaginava, e também pedir desculpas por tanto tempo parado. Mas pretendo neste post atualizar os leitores sobre as muitas mudanças que aconteceram na vida deste blogueiro que vos escreve e que também refletirão nos futuros posts do blog.


O "Informata Brasileiro" aqui passou os anos 2011 e 2012 estudando intensamente tecnologias "top of mind" para desenvolvimento de software, tomando como referências radares tecnológicos de empresas influentes no ramo.

terça-feira, 2 de abril de 2013

Quebrando a Cifra de Vigenère

A disciplina de Criptografia é outra que tem se revelado bastante interessante. Na última aula ficou como tarefa quebrar um texto criptografado com a cifra de Vigenère, método de criptografia descrito por Giovan Battista Bellaso em um livro de sua autoria datado de 1553.

Para quem possui pouco ou nenhum conhecimento sobre criptoanálise, este método pode parecer inquebrável, ou seja, indecifrável. Mas através de algumas técnicas básicas é possível quebrá-lo facilmente, como vou demonstrar com um programa que escrevi em Ruby para a tarefa da disciplina.


sábado, 23 de março de 2013

Simulando Redes com NS-3 e Python/C++

Recentemente, em uma das aulas do Mestrado na PUCRS, comecei a brincar com simulação de redes de computadores utilizando o software NS-3, um simulador de eventos de redes focado em pesquisas e uso educacional.

Pretendo compartilhar aqui parte do aprendizado e das descobertas feitas com o uso desta ferramenta.

Vou apresentar uma rápida visão do processo de instalação do ns-3 e dar uma passada no primeiro exemplo que acompanha o pacote do simulador.

sábado, 16 de março de 2013

Mais um pouco de ScalaTest

No post anterior, sobre Mockito, falei um pouco sobre ScalaTest, sem, no entanto, entrar em detalhes.
No post atual, pretendo então relatar alguma experiência que tive com a linguagem Scala e com a biblioteca ScalaTest.

quinta-feira, 14 de março de 2013

Testes com Mockito e um pouquinho de ScalaTest

Recentemente, retornando ao TDD com Java, resolvi experimentar o Mockito. Descobri um mocking framework muito interessante, fácil de utilizar e versátil.


A documentação é relativamente ampla, por isso só vou dar um breve relato de como foi minha experiência, com o intuito também de motivá-lo a explorar mais essa biblioteca e testar em seus projetos.


sexta-feira, 1 de março de 2013

Java 7 e suas novidades de sintaxe

Já há rumores sobre Java 9, mas para quem, assim como eu, ainda estava no Java 6 e se atrasou um pouco para conferir as novidades do Java 7, vale a pena dar uma conferida nas novas facilidades introduzidas na linguagem e como elas podem melhorar o código dos seus projetos.
Algumas mudanças entram na categoria chamada de Syntactic Sugar, o que, resumidamente, são novidades introduzidas somente a nível de linguagem para facilitar a vida do programador, sendo em momento de compilação revertidas à sintaxe padrão. Um exemplo anterior de uma melhoria ao estilo Syntactic Sugar introduzida no Java 5 é o autoboxing e unboxing (conversão automática entre valores primitivos e seus respectivos wrapper objects).
Vou apresentar aqui as seguintes novidades: switch com String, novidades nos numéricos, tratamento de múltiplas exceções, try-with-resources e diamond syntax.