SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
FernandoMeyer
@fmeyer
Utilizando ferramentas open
source para reorganizar seus
dados em informações concretas
Friday, August 30, 13
No	
  caminho	
  dos	
  dados.
‣ Aquisição
‣ Armazenamento
‣ Vizualização
‣ Análise
‣ Deployment
Friday, August 30, 13
Aquisição
Friday, August 30, 13
De seus próprios servidores:
‣ Logs de Acesso
‣ Logs de Busca
‣ Vizualizações de Páginas.
‣ Histórico de Compra
‣ Favoritos
Aquisição
Friday, August 30, 13
Facebook Scribe
Aquisição
Friday, August 30, 13
Aquisição
Alternativas ao Scribe
‣ FluentD
‣ Apache Flume + continuo
‣ Apache Chukwa
Friday, August 30, 13
De seu usuário (client-side):
‣ Browser Fingerprint
‣ Referal
‣ Cursor/Interação
‣ Buscas/filtros/parâmetros
‣ Saídas
Aquisição
Friday, August 30, 13
Pixel Server (JS)
Aquisição
<img	
  src="http://tr.pig.com/pixel?
id=X&h={base64encoded(data)}"	
  width="1"	
  
height="1"	
  />
user=byok9ruqi3qcy6dy
new_to_site=1
page_session=nhktmamsobk4ejro
scroll_height=455
inner_height=454
interval=45
idle=1
timestamp=1377850220820
Friday, August 30, 13
Pré-existente em alguma API
‣ Facebook Likes*
‣ Tweets
‣ Foursquare
‣ Google Analytics
Aquisição
* Facebook tende a dificultar as coisas de tempos em tempos. Então temos que tomar cuidado com features cruciais
dependentes do facebook.
Friday, August 30, 13
Web crawling
‣ Comentários em sites/portais
‣ Blogs com conteúdo relevante
‣ Outros serviços onde pessoas
expressam opiniões mas não
existem APIs
Aquisição
Friday, August 30, 13
#	
  cat	
  ~/dev/ds/crawler.py
def	
  crawler(queue):	
  
	
   url	
  =	
  queue.pop()	
  
	
   fd	
  =	
  urlib.urlopen(url)	
  
	
   content	
  =	
  fd.read()
	
   links	
  =	
  parse_links(content)
	
   for	
  link	
  in	
  links:
	
   	
   queue.put(link)
	
  	
  crawler(queue)
Aquisição
Um crawler minimalista
Friday, August 30, 13
Crawlers Completos
‣ Apache Nutch
‣ Crawler4j
‣ Scrapy (python)
‣ Anemone (ruby)
Aquisição
Friday, August 30, 13
Seja ético ao usar dados
crawleados. Muitos sites não
permitem essa prática, se fizer isso
que seja para estudar um modelo,
nunca para redistribuir os dados
de outra empresa.
Aquisição
Friday, August 30, 13
A próxima menina dos olhos
quando falamos em análise de
dados são dados vindos do mundo
físico. SCADA systems existem a
décadas em Usinas, Petroliferas ...
Aquisição
Friday, August 30, 13
Hardware
‣ Sensores
‣ Câmeras
‣ Arduinos/RaspbPy
Aquisição
Friday, August 30, 13
Datasets pré-existentes
‣ WineDatabase
‣ Freebase
‣ LinkedData
‣ Google Concept DS
Aquisição
Friday, August 30, 13
Armazenamento
Friday, August 30, 13
Storage não é tão barato quando
falamos de BigData
‣ RAW [ d - 30 ]
‣ N dimensões [ d - 365* 1/N ]
‣ Backup
‣ Backup do Backup
Armazenamento
Friday, August 30, 13
Seu BD principal NUNCA deve ser
utilizado para guardar
informações de agregadores,
pixeltrackers ou crawlers.
Armazenamento
Friday, August 30, 13
Sua arquitetura de
armazenamento de informações
nunca deve impactar o usuário
enquanto interage com o site.
Armazenamento
Friday, August 30, 13
Armazenamento
Disponibilidade
Consistencia Particionamento
Friday, August 30, 13
Engines
Onde cada uma se
encaixa
Examples
WideColumn sparsely distributed multi-
dimensional data
BigTable, Cassandra,
HBase, Hipertable
Document
KeyValue com dados
estruturados
MongoDB, CouchDB,
Terrastore, Lucene
Key Value/Tuple Hash Table
Memcached, Redis,Voldemort,
Couchbase, LevelDB
Graph DB Graph Node4j
Multivalue/RDF
Conceptual description or
modeling
Virtuoso
DB	
  Toolset
Friday, August 30, 13
Cassandra, Redis e Neo4j modelam
aproximadamente 90% dos
problemas
Armazenamento
Friday, August 30, 13
Análise
Friday, August 30, 13
Agora que os dados existem,
temos que transformá-los em algo
palpavel.
Análise
Friday, August 30, 13
Análise
Aplicações
‣ Segmentação
‣ Análise de comportamento
‣ Engine de Recomendação
‣ Detecção de fraude
‣ NLP
Friday, August 30, 13
Análise
Identifique seu problema
‣ Categorização
‣ Classificação
‣ Filtragem Colaborativa
Friday, August 30, 13
Análise
Leve uma amostra de seus dados
para a prototipação
‣ RStudio
‣ Matlab
‣ IPython com scipy e numpy
‣ Julia*
Friday, August 30, 13
Análise
Leve uma amostra de seus dados
para a prototipação
awk	
  'NR	
  %	
  2	
  ==	
  0'	
  filename	
  |	
  head	
  -­‐n	
  1000
Friday, August 30, 13
Análise
RStudio
Friday, August 30, 13
Análise
Julia
Friday, August 30, 13
Análise
Julia Benchmarks
Friday, August 30, 13
Análise
Escolha o melhor método
‣ Aprend. Supervisionado
‣ Aprend. Não Supervisionado
Friday, August 30, 13
Análise
Aprendizado Supervisionado -
Classifica informações a partir de
um modelo de treino
‣ SVM
‣ Regressão Linear
‣ Kernels
‣ Random Forest (decision tree)
Friday, August 30, 13
Análise
Aprendizado Não Supervisionado -
Agrupa informações ou Reduz
dimensões de uma fonte de dados.
‣ Redes Neurais
‣ Max de Expectativas (distrib)
‣ K-means (centroides)
‣ DBSCAN (densidade)
‣ Graph Based Models
Friday, August 30, 13
Análise
Machine learning - 3D plot de uma
distribuição
Friday, August 30, 13
Análise
Time series
Friday, August 30, 13
Análise
NLP
João comprou 300 ações da OGX
em Agosto de 2013
Friday, August 30, 13
Análise
NLP
<ENAMEX TYPE="PERSON">João</ENAMEX>comprou
<NUMEX TYPE="QUANTITY">300</NUMEX>ações
da <ENAMEX TYPE="ORGANIZATION">OGX</ENAMEX>
em <TIMEX TYPE="DATE">Agosto de 2013</TIMEX>.
Friday, August 30, 13
Análise
NLP
‣ Apache OpenNLP
‣ Stanford CoreNLP
‣ Python NLTK
Friday, August 30, 13
Análise
NLP
Dificuldades: Corpus em PT-BR são
raros e evoluem a passos lentos.
Alternativa: Crawling
Friday, August 30, 13
Trabalhar com processamento de
linguagem natural em português
não é tão simples quanto parece.
Portanto uma simples análise de
sentimento pode custar meses de
trabalho.
Análise
Friday, August 30, 13
Best Case: Matéria do Estadão
Worst Case: Twitter
Análise
Friday, August 30, 13
Análise
Friday, August 30, 13
Análise
Friday, August 30, 13
Análise
Friday, August 30, 13
Análise
Não subestime a matemática.
‣ Probabilidade
‣ Estatística
‣ Algebra Linear
‣ Matemática Discreta
Friday, August 30, 13
Visualização
Friday, August 30, 13
O que você gostaria de mostrar?
‣ Comparação
‣ Distribuição
‣ Composição
‣ Relação
Visualização
Friday, August 30, 13
Analise
Friday, August 30, 13
Analise
Friday, August 30, 13
Deployment
Friday, August 30, 13
Quando você tiver a primeira
versão do seu modelo, está na hora
de colocá-lo em produção.
Deployment
Friday, August 30, 13
Transformar o código do protótipo
em codigo de produção às vezes
envolve trocar de linguagem/
contexto/plataforma
Deployment
Friday, August 30, 13
Env
‣ Linux - max open files, sockets
‣ Hadoop - max M/R jobs
‣ Solr - merge factor, memoria
‣ Teste de carga
Deployment
Friday, August 30, 13
Monitore tudo
‣ Conversão
‣ Usuários que estão sob
influencia do algoritmo
‣ Cache
Deployment
Friday, August 30, 13
N versões de um mesmo
algoritmo podem coexistir e
competir pela melhor resposta/
conversão
Deployment
Friday, August 30, 13
Avaliação
Mean Absolute Error
Root Mean Squared Error (RMSE)
Deployment
Friday, August 30, 13
Ferramentas Onde aplicar
Hadoop
Framework para processar uma grande
quantidade de dados
Mahout Machine Learning
Twitter Storm
Processamento distribuido e tolerante a
falhas
Toolset
Deployment
Friday, August 30, 13
Mahout - Hadoop: funcionam
muito bem para batch data. Não
aplicáveis para processamento em
tempo real.
Deployment
Friday, August 30, 13
Storm - Processamento em Tempo
real
‣ Spout
‣ Bolt
‣ Mágica
Deployment
Friday, August 30, 13
Spout (Data Source)
public	
  class	
  DataSpout	
  extends	
  BaseRichSpout	
  {
	
  	
  public	
  void	
  open
	
  	
  public	
  void	
  nextTuple()
	
  	
  public	
  void	
  ack(Object	
  id)
	
  	
  public	
  void	
  fail(Object	
  id)
	
  	
  public	
  void	
  declareOutputFields(OutputFieldsDeclarer	
  d)
}
Deployment
Friday, August 30, 13
Bolt (Processing Unit)
	
  	
  public	
  static	
  class	
  WordCount	
  extends	
  BaseBasicBolt	
  {
	
  	
  	
  	
  public	
  void	
  execute(Tuple	
  tuple,	
  BasicOutputCollector	
  collector)
	
  	
  	
  	
  public	
  void	
  declareOutputFields(OutputFieldsDeclarer	
  declarer)
}
Deployment
Friday, August 30, 13
Topologia
Deployment
Friday, August 30, 13
Dicas	
  e	
  considerações
‣ Comunicação
‣ Demonstre sua hipotese/Teoria
‣ Tente várias abordagens
‣ Converse com outras pessoas sobre
seus dados/técnicas
‣ Veja como problemas similares foram
modelados ( kaggle.com)
Friday, August 30, 13
Analise
Friday, August 30, 13
FernandoMeyer
@fmeyer
The end!
Friday, August 30, 13

Weitere ähnliche Inhalte

Ähnlich wie Ferramentas open source para análise de dados desde aquisição até deployment

Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...
Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...
Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...Joao Galdino Mello de Souza
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Jose Augusto Carvalho
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesFabiano Weimar
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPElton Minetto
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...Diego Santos
 
Tutorial session
Tutorial sessionTutorial session
Tutorial sessionbcoverston
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Joao Galdino Mello de Souza
 
Palestra p prod foto adobe lightroom ok
Palestra p prod foto adobe lightroom okPalestra p prod foto adobe lightroom ok
Palestra p prod foto adobe lightroom okEdigar Antunes
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
pgDay Campinas 2013 - PostgreSQL XC in Cloud IaaS
pgDay Campinas 2013 - PostgreSQL XC in Cloud IaaSpgDay Campinas 2013 - PostgreSQL XC in Cloud IaaS
pgDay Campinas 2013 - PostgreSQL XC in Cloud IaaSVinícius Schmidt
 
PGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas
 
Análise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLAnálise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLMatheus de Oliveira
 
Armazenamento para uma estratégia híbrida
 Armazenamento para uma estratégia híbrida Armazenamento para uma estratégia híbrida
Armazenamento para uma estratégia híbridaAmazon Web Services LATAM
 

Ähnlich wie Ferramentas open source para análise de dados desde aquisição até deployment (20)

Bigdata gameverse
Bigdata gameverseBigdata gameverse
Bigdata gameverse
 
Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...
Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...
Análise da causa raiz de comportamento anômalo em ambientes de infraestrutura...
 
Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)Oficina de infraestrutura como código (apresentando o Puppet)
Oficina de infraestrutura como código (apresentando o Puppet)
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websites
 
WordPress na Amazon AWS - Cloud36
WordPress na Amazon AWS - Cloud36WordPress na Amazon AWS - Cloud36
WordPress na Amazon AWS - Cloud36
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHP
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 
Tutorial session
Tutorial sessionTutorial session
Tutorial session
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Puppet Cloud IaaS
Puppet Cloud IaaSPuppet Cloud IaaS
Puppet Cloud IaaS
 
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
Otimizando o desempenho de transferência de arquivos e diretórios entre servi...
 
Palestra p prod foto adobe lightroom ok
Palestra p prod foto adobe lightroom okPalestra p prod foto adobe lightroom ok
Palestra p prod foto adobe lightroom ok
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
pgDay Campinas 2013 - PostgreSQL XC in Cloud IaaS
pgDay Campinas 2013 - PostgreSQL XC in Cloud IaaSpgDay Campinas 2013 - PostgreSQL XC in Cloud IaaS
pgDay Campinas 2013 - PostgreSQL XC in Cloud IaaS
 
PGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ Cloud
 
Análise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQLAnálise de performance usando as estatísticas do PostgreSQL
Análise de performance usando as estatísticas do PostgreSQL
 
Armazenamento para uma estratégia híbrida
 Armazenamento para uma estratégia híbrida Armazenamento para uma estratégia híbrida
Armazenamento para uma estratégia híbrida
 

Ferramentas open source para análise de dados desde aquisição até deployment