Blog sobre desenvolvimento de software (Java, muito Java!), inovação tecnológica e cotidiano do Universo de TI. Acesse notícias, tutoriais, material de cursos e eventos, código, desafios, soluções, opiniões, pensamentos, divagações, balbuciações e abobrinhas diversas. Deixe seu comentário!

quinta-feira, 25 de setembro de 2014

O que é Data Science? Por onde começar?

Essa é uma era de revoluções: Computação em nuvem; popularização do acesso a Internet com conexões de dezenas (ou mesmo centenas) de megabits; data sets históricos com petabytes (ou mesmo exabytes) de informações; milhões de dados "quentes" sendo produzidos e consumidos por sistemas de sistemas a cada piscar de olhos; computação ubíqua e infinitas possibilidades.

Todos esses avanço vêm alavancando novas tendências de mercado. Estão se popularizando tecnologias e técnicas antes dominadas por poucos, restritas principalmente aos meios acadêmico, governamental, militar e financeiro; utilizadas apenas por instituições que possuíam os recursos e expertise necessários para operar nessa escala.

Buzzwords como Big Data e Fast Data estão na boca dos profissionais de TI, analistas de negócios e empreendedores. Esses tópicos andam sendo discutidos abertamente em todo tipo de conferência de mercado. Livros (inclusive romances) foram escritos sobre o obscuro mundo dos Quants: Nerds com seus PhDs em estatística, física e matemática aplicada. Figuras curiosas que deixaram (ou foram rejeitados) pela academia e ganharam o mercado... Gênios renegados com seus modelos para troca automatizada de títulos, com seus portfólios para gestão de riscos e com suas gordas contas bancárias.

Mas afinal o que é Data Science? De acordo com a Wikipedia, Data Science é o estudo da extração de conhecimento a partir de dados. Uma ciência que incorpora técnicas e teorias das mais diversas áreas de conhecimento (computação, engenharia, matemática, estatística, economia, etc).

A demanda por profissionais especializados em Data Science cresce em ritmo acelerado. Aos poucos isso tudo está despertando o nosso interesse. Nós "programadores comuns", escritores de "Software commodity" que mantém o mundo girando. Assuntos como aprendizado de máquina, inferência estatística e modelos de regressão deixam de ser exclusividade de dissertações e artigos acadêmicos, perdem a aura de superioridade e caem no gosto das abelhas e zangões trabalhadores. Há muito a aprender; um passo de cada vez. A hora de soprar o pó da capa daquele velho livro de estatística básica encostado na prateleira finalmente chegou.

E se você é como eu, há muito a aprender. Já fui um aluno muito orgulhoso do meu desempenho, sempre ostentando meu parco conhecimento sobre estatística com um livro do Bussab em mãos. Fui uma das três ovelhas da minha turma que conseguiu passar direto em estatística na primeira oferta da disciplina da USP Leste (com uma "excelente" nota 7.2, a melhor nota da turma... Considerando a dificuldade da disciplina na época 7 valia mais do que 10). Passei a dar aulas particulares de estatística para alunos com as mais diversas origens (meus colegas, alunos de administração e economia da FGV e Mackenzie, alunos de outros cursos e departamentos da USP, etc). Eis uma época em que eu "conhecia" distribuições como a normal, binomial, hipergeométrica, Poisson, t de Student, etc; também "sabia" fazer testes de hipóteses, calcular erros e taxas de confiança de cabeça e até mesmo ousava me aventurar um pouquinho com inferência e o básico de Estatística Bayesiana.

O problema é que tudo isso está para Data Science como um curso de lógica de programação está para desenvolvimento de software (ou ainda como o Ping Pong está para o Tênis de Mesa) . O que aprendi naquela época é importante, porém esses são apenas fundamentos. O básico do básico em um nível de abstração bem distante daquele que está sendo utilizado para resolver problemas na prática.

Na verdade Data Science possui três grandes pilares muito bem ilustrados nesse Diagrama de Venn do site do Drew Conway:

Diagrama de Venn do Drew Conway

Em resumo, você pode ser um hacker excepcional, aprender sobre ferramentas e técnicas de ponta, conhecer muito sobre determinado assunto, porém não ter conhecimento matemático suficiente para entender o que está fazendo (muito menos interpretar resultados). Essa é a frente "perigosa" que mais comete erros do tipo tomar uma correlação por causa e efeito sem investigar variáveis de confusão.

Na outra ponta não é muito difícil você esbarrar com acadêmicos que possuem grande conhecimento tecnológico e estatístico, porém com pouco conhecimento sobre o assunto no qual estão trabalhando. Geralmente o conhecimento desse grupo sobre o problema que estão tentando resolver é de natureza teórica (e muitas vezes extremamente desatualizado); sabe aquele grupo que faz complexos experimentos de laboratório sem nunca ter realmente vivenciado ou entendido o problema que está tentando resolver? Esse tipo de profissional pode produzir estudos bem interessantes, distorcer categorizar dados e chegar a conclusões insignificantes únicas. Podem até mesmo propor soluções "geniais" para problemas em aberto (que geralmente são inviáveis ou de aplicação muito limitada por esbarrarem em alguma constraint básica desconhecida pelo autor). Enquanto penso que esse grupo é menos perigoso do que o primeiro, a quantidade de estudos do tipo Seinfeld (sobre o nada) gerando ruído na comunidade científica também é bastante preocupante. 

Finalmente a pesquisa tradicional continuará existindo e continuará sendo relevante. Porém, sem o componente hacker pesquisa não é Data Science. Muitos autores criticam Data Science como um termo mercadológico para descrever estatística. Enquanto essa critica não é totalmente injusta, acredito que há uma distinção válida. Conhecer a distribuição normal não me faz um estatístico; saber criar um modelo e rodar uma simulação no MATLAB não faz do estatístico um Data Scientist.

O aspecto hacker da coisa rapidamente me encantou. Tenho que admitir que passei muito tempo engatinhando, brincando com diversas ferramentas e possibilidades, lendo livros e tutorais puramente focados em tecnologia. Eu poderia passar horas falando de HPC e HTC. Poderia falar de BICEP e DW. Poderia falar de soluções analíticas na nuvem como BigQuery e Redshift. Ainda vou escrever um artigo dedicado ao ecossistema Hadoop. Enfim, há muita coisa a ser aprendida nessa frente.

Apesar disso tenho que reconhecer minha pequenez. Quanto mais explorava esse Universo mais me deparava com papers descrevendo soluções altamente sofisticadas para problemas que eu desconhecia (geralmente usando abstrações matemáticas que eu também desconheço). Foi nesse momento que resolvi desmanchar o castelo de cartas que construí e começar do zero. E não é que a vida fica mais fácil quando procuramos conhecimento de base?

Sou um grande fã da Coursera, e acabei me deparando com a especialização gratuita sobre Data Science. Uma verdadeira "pós-graduação" com nove cursos (e um projeto final). A espacialização aborta o básico sobre métodos estatísticos e ferramentas computacionais, passa por técnicas de tratamento e visualização de dados, inferência, modelos de regressão, aprendizado de máquina e finalmente produtos baseados em dados. Essa especialização é um verdadeiro Data Science tour de force elaborado por três professores do Departamento de Bioestatística da Johns Hopkins University.

Achei muito interessante como os primeiros cursos da especialização conseguem ensinar cientistas a utilizarem ferramentas com Git e um IDE enquanto ensinam nerds da computação sobre métodos estatísticos e afins. Apear do material denso, os cursos não são difíceis ou massantes. A abordagem é bastante prática, focada em R e seu enorme ecossistema (incluindo pacotes e tecnologias correlatas). Você vai aprender sim sobre métodos estatísticos, experimentando na prática com data sets reais.

R é uma tecnologia "simples", porém o caminho para se tornar um especialista é longo e pode ser desafiador até para programadores experientes. A linguagem é extremamente expressiva, própria para tratamento estatístico e visualização de dados em memória (ainda que essa não seja toda a verdade, veja minha resposta no Stack Overflow sobre como utilizar R com data sets grandes demais para serem tratados inteiramente em memória), utilizando uma combinação de elementos que podem parecer estranhos para programadores de linguagens C-Like. Para mencionar alguns pontos: A linguagem adota algumas características da programação funcional (o curso de Programação Funcional em Scala me ajudou muito nessa frente), também conta com a expressividade da vetorização, escopo léxico e diversas tentativas de implementar orientação a objetos (que coexistem na linguagem).

100% Open source e parte do Projeto GNU, o ambiente R se tornou a base de um fortíssimo ecossistema para aplicações científicas. Esqueça suas experiências traumatizantes com código da plataforma Weka, esqueça aquelas implementações de LVQ e SOM caseiras feitas em C, Python e Java (sim, eu também fiz isso na faculdade). Tome a pílula vermelha e venha brincar com os pacotes do CRAN (bem como pacotes mais especializados de fontes como o Biocondutor). Use o que há de mais moderno em termos no mercado; use implementações extremamente robustas de algoritmos clássicos; brinque com código instável recém saído do forno (da acadêmia e da indústria). Há soluções para todos os gosto.

Ainda não cheguei na parte mais avançada do curso (atualmente estou cursando o terceiro módulo - Getting and Cleaning Data - pela terceira vez, por pura falta de tempo). Mas o que já aprendi sobre métodos e variáveis estatísticas, tratamento de dados, etc, compensou. Com certeza a especialização já me tornou um programador melhor... Mas o mais importante de toda essa experiência foi que, com os cursos, percebi toda a enormidade teórica e a base matemática sustentando as Buzzwords de mercado. Não há o que temer nessas frentes (com paciência, bons livros e bons instrutores você consegue dominar qualquer assunto).


P.S. Pelo preço simbólico de $49 você pode obter um certificado verificado para o curso (obviamente isso também requer que você passe no curso com um score mínimo). Enquanto o certificado atualmente não tem muito valor (seja no mercado seja na acadêmia), não é de todo ruim possuir um certificado com o logo da Johns Hopkins. Enquanto não coloco esses certificados no meu currículo oficial, já os incluí no meu perfil do LinkedIn (e, contrariando minhas expectativas, isso está chamando a atenção de empresas dentro e fora do país).

12 comentários:

Unknown disse...

Anthony, obrigado pelo post sucinto e muito esclarecedor.
Acabei de sair da academia (mestrado em Ecologia) e estou me aventurando no mundo dos negócios em uma startup que irá trabalhar com modelagem de negócios e desenho de processos. Então comecei a buscar (in) formação para me adaptar com a área, além de precisar passar por uma adaptação linguística para começar a entender o idioma "business", hehe.. Enfim, acabei esbarrando com Data Science, e me interessei muito, porque aparentemente, me possibilita associar conhecimentos que obtive no mestrado (teste de hipóteses, métodos estatísticos, R, e etc) de forma prática. Gostaria de saber sua opinião quanto as dificuldades que uma pessoa com pouca (para não dizer quase nada) formação em programação teria para comecar na área e quais suas sugestões. Ainda, você teria uma bibliografia básica no assunto? Me interessei muito pela especialização no Coursera, e como você disse pode ser um belo ponta pé inicial. A FIAP parece oferecer um MBA também, mas ainda não vi o valor do investimento (que deve ser bem mais salgado!). Mais uma vez, valeu!

Anthony Accioly disse...

Olá Amom, muito obrigado pela participação. Você certamente consegue reaproveitar seus conhecimentos em matemática e estatística da graduação e pós; esse é um dos três pilares de Data Science, e um dos dois pilares para se tornar um excelente Analista de Negócios. Aqui no Brasil ainda existe uma separação um tanto quanto grosseira; o pessoal de negócios que conhece bastante estatística e domina ferramentas como MATLAB, Mathematica e R produzindo "análises" e o pessoal de TI produzindo "soluções de BI e Big Data" (salvo exceções, ainda vai demorar um tempo para esses mundos convergirem, as culturas são muito distintas). Dito isso, muitas startups andaram buscando profissionais com experiência em Big Data e Data Science (posso mencionar a Chaordic e a 99Taxi). Sobre bibliografia de base para os outros dois pilares (Tecnologia e Negócios), o problema é que esse Universo é imenso. Tudo vai depender muito do foco. Tableau, SAS e Hadoop requerem conhecimentos distintos (ainda que exista alguma base comum); trabalhar com controle de epidemias é muito diferente de fazer recomendações de produtos para e-commerce. Dito isso, posso te recomendar alguns livros bem recentes. Eles tratam exatamente sobre os casos práticos de Data Science e Big Data:

* Practical Machine Learning: Innovations in Recommendation
* Practical Machine Learning: A New Look at Anomaly Detection (Ambos livros curtinhos sobre técnicas de recomendação e detecção de anomalias.)
* Developing Analytic Talent: Becoming a Data Scientist
* Thinking with Data How to Turn Information into Insights
* Predictive Analytics: The Power to Predict Who Will Click, Buy, Lie, or Die
* The Quants: How a New Breed of Math Whizzes Conquered Wall Street and Nearly Destroyed It (esse é mais antigo, estilo novelinha com personagens reais; nada muito técnico. Mas foi o livro que me interessou nisso tudo).

Sobre o MBA, duas pessoas que conheço estão fazendo o curso da FIAP (vou ver se consigo a opinião delas). Também conheço alguns dos instrutores. Acredito que o curso seja muito bom. Dito isso se seu inglês é afiado, recomendo investir também em treinamentos curtos e certificações (como os da Cloudera no caso de Hadoop). O MBA te dará uma visão geral sobre a parte técnica bem como algum conhecimento aplicado sobre gestão e governança. As certificações (ainda que sejam de valor discutível) são bem mais específicas.

Unknown disse...

Há um tempinho venho pesquisando sobre o assunto, pois estou pensando em focar a minha carreira. Sou formado em Economia com Mestrado em Economia Internacional e MBA em Mercado Financeiro e queria unir o conhecimento adquirido à análise de dados, entretanto, não queria ficar preso em modelos puramente teóricos, nada contra, mas sou mais voltado para a aplicação. E como já estou mais perto dos quarenta do que dos trinta não estou disposto a perder o meu tempo com cursos que são apenas enrolação. Finalizando a quase dissertação..rs O seu artigo foi de grande valia pois queria saber a opinião de alguém que já havia feito algum curso dessa especialização oferecida pelo Coursera.

Unknown disse...

Olá Anthony, sei que já faz um tempo que escreveu este post mas queria saber se você tem a opinião de algum aluno ou ex aluno do MBA em Big Data da FIAP. Agradeço se puder me enviar ou responder aqui. Meu email: Flavio.albu@gmail.com

Unknown disse...

Olá, Anthony. Não conhecia seu blog, mas gostei bastante do seu artigo. Abraço.

Anthony Accioly disse...

Olá Douglas, obrigado pelo incentivo. Preciso voltar a movimentar o blog, mas está um pouco complicado encontrar tempo :). Grande abraço.

Marcus Lacerda disse...

Ola Anthony,

Muito grato pelo post, muito esclarecedor, fiquei "instigado" sobre este assunto. Você concluir a especialização da "Johns Hopkins"?

Abraço,
Marcus Lacerda

Pedro disse...
Este comentário foi removido pelo autor.
Pedro disse...
Este comentário foi removido pelo autor.
Pedro disse...

Olá, Anthony. Meu nome é Pedro e tenho 23 anos. Minha situação é análoga a de Amom. Acabo de sair da academia, onde fiz graduação e em 1 mês terminarei o mestrado, ambos em Matemática "pura" - exceto por alguns poucos cursos em Estatística (foram 2 de inferência est, 1 de processos estocásticos e outro de métodos computacionais). Diante de alguns fatos de ordem pessoal tomei a decisão de sair da Academia e ir para o mercado no mundo dos negócios. Assim como o Amom, me deparei com Data Science e me identifiquei. Vi nessa especialização em Data Science no Coursera como uma maneira rápida de me inteirar do assunto. A Microsoft oferece também uma especialização em Data Science no edX com possibilidades para certificados. E passados 3 anos da publicação do seu post, pergunto: hoje o mercado dá mais valor a esse tipo de certificado? essa minha iniciativa seria ineficiente na tentativa de entrar no mercado? se não, o que devo fazer para entrar nessa área rapidamente? Agradeço desde já pela sua resposta. Muito obrigado!

Anthony Accioly disse...

Olá Pedro, tudo bem? Eu não acho que o valor esteja no Certificado em si, apesar de alguns recrutadores, principalmente no exterior, já terem entrado em contato comigo devido a isso e algumas respostas no Stack Overflow. Eu acho que o curso é um excelente começo, participar de projetos e se envolver com a comunidade também ajuda muito. Há com certeza espaço para alguém com o seu perfil entre Analise de Negócios e TI. Abraços,

Anthony Accioly disse...

Pessoal, eu peço desculpas pelos comentários que não consegui responder a tempo. Os comentários do Blogger andaram indo para minha caixa de spam e eu deixei de dar manutenção nesse endereço. Estou com planos de migrar para uma nova plataforma e voltar a escrever. De qualquer forma, por enquanto, a melhor maneira de entrar em contato continua sendo o formulário de contato.

Abraços,