Sie sind auf Seite 1von 67

Utilizando ferramentas open

source para reorganizar seus


dados em informaes concretas

Fernando Meyer
@fmeyer
Friday, August 30, 13

No caminho dos dados.

Friday, August 30, 13

Aquisio
Armazenamento
Vizualizao
Anlise
Deployment

Aquisio

Friday, August 30, 13

Aquisio

De seus prprios servidores:

Friday, August 30, 13

Logs de Acesso
Logs de Busca
Vizualizaes de Pginas.
Histrico de Compra
Favoritos

Aquisio

Facebook Scribe

Friday, August 30, 13

Aquisio

Alternativas ao Scribe
FluentD
Apache Flume + continuo
Apache Chukwa

Friday, August 30, 13

Aquisio

De seu usurio (client-side):

Friday, August 30, 13

Browser Fingerprint
Referal
Cursor/Interao
Buscas/filtros/parmetros
Sadas

Aquisio

Pixel Server (JS)


<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

Aquisio

Pr-existente em alguma API

Tweets
Foursquare
Google Analytics
*
Facebook Likes

* Facebook tende a dificultar as coisas de tempos em tempos. Ento temos que tomar cuidado com features cruciais
dependentes do facebook.
Friday, August 30, 13

Aquisio

Web crawling

Comentrios em sites/portais
Blogs com contedo relevante
Outros servios onde pessoas
expressam opinies mas no
existem APIs
Friday, August 30, 13

Aquisio

Um crawler minimalista
# 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)
Friday, August 30, 13

Aquisio

Crawlers Completos

Friday, August 30, 13

Apache Nutch
Crawler4j
Scrapy (python)
Anemone (ruby)

Aquisio

Seja tico ao usar dados


crawleados. Muitos sites no
permitem essa prtica, se fizer isso
que seja para estudar um modelo,
nunca para redistribuir os dados
de outra empresa.

Friday, August 30, 13

Aquisio

A prxima menina dos olhos


quando falamos em anlise de
dados so dados vindos do mundo
fsico. SCADA systems existem a
dcadas em Usinas, Petroliferas ...

Friday, August 30, 13

Aquisio

Hardware

Sensores
Cmeras
Arduinos/RaspbPy

Friday, August 30, 13

Aquisio

Datasets pr-existentes

Friday, August 30, 13

WineDatabase
Freebase
LinkedData
Google Concept DS

Armazenamento

Friday, August 30, 13

Armazenamento

Storage no to barato quando


falamos de BigData

Friday, August 30, 13

RAW [ d - 30 ]
N dimenses [ d - 365* 1/N ]
Backup
Backup do Backup

Armazenamento

Seu BD principal NUNCA deve ser


utilizado para guardar
informaes de agregadores,
pixeltrackers ou crawlers.

Friday, August 30, 13

Armazenamento

Sua arquitetura de
armazenamento de informaes
nunca deve impactar o usurio
enquanto interage com o site.

Friday, August 30, 13

Armazenamento

Disponibilidade

Consistencia

Friday, August 30, 13

Particionamento

DB Toolset

Friday, August 30, 13

Engines

Onde cada uma se


encaixa

Examples

WideColumn

sparsely distributed multidimensional 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

Armazenamento

Cassandra, Redis e Neo4j modelam


aproximadamente 90% dos
problemas

Friday, August 30, 13

Anlise

Friday, August 30, 13

Anlise

Agora que os dados existem,


temos que transform-los em algo
palpavel.

Friday, August 30, 13

Anlise

Aplicaes

Friday, August 30, 13

Segmentao
Anlise de comportamento
Engine de Recomendao
Deteco de fraude
NLP

Anlise

Identifique seu problema


Categorizao
Classificao
Filtragem Colaborativa

Friday, August 30, 13

Anlise

Leve uma amostra de seus dados


para a prototipao

Friday, August 30, 13

RStudio
Matlab
IPython com scipy e numpy
Julia*

Anlise

Leve uma amostra de seus dados


para a prototipao
awk 'NR % 2 == 0' filename | head -n 1000

Friday, August 30, 13

Anlise

RStudio

Friday, August 30, 13

Anlise

Julia

Friday, August 30, 13

Anlise

Julia Benchmarks

Friday, August 30, 13

Anlise

Escolha o melhor mtodo


Aprend. Supervisionado
Aprend. No Supervisionado

Friday, August 30, 13

Anlise

Aprendizado Supervisionado Classifica informaes a partir de


um modelo de treino

Friday, August 30, 13

SVM
Regresso Linear
Kernels
Random Forest (decision tree)

Anlise

Aprendizado No Supervisionado Agrupa informaes ou Reduz


dimenses de uma fonte de dados.

Friday, August 30, 13

Redes Neurais
Max de Expectativas (distrib)
K-means (centroides)
DBSCAN (densidade)
Graph Based Models

Anlise

Machine learning - 3D plot de uma


distribuio

Friday, August 30, 13

Anlise

Time series

Friday, August 30, 13

Anlise

NLP
Joo comprou 300 aes da OGX
em Agosto de 2013

Friday, August 30, 13

Anlise

NLP
<ENAMEX TYPE="PERSON">Joo</ENAMEX>comprou

<NUMEX TYPE="QUANTITY">300</NUMEX>aes
da <ENAMEX TYPE="ORGANIZATION">OGX</ENAMEX>
em <TIMEX TYPE="DATE">Agosto de 2013</TIMEX>.

Friday, August 30, 13

Anlise

NLP
Apache OpenNLP
Stanford CoreNLP
Python NLTK

Friday, August 30, 13

Anlise

NLP
Dificuldades: Corpus em PT-BR so
raros e evoluem a passos lentos.
Alternativa: Crawling

Friday, August 30, 13

Anlise

Trabalhar com processamento de


linguagem natural em portugus
no to simples quanto parece.
Portanto uma simples anlise de
sentimento pode custar meses de
trabalho.

Friday, August 30, 13

Anlise

Best Case: Matria do Estado


Worst Case: Twitter

Friday, August 30, 13

Anlise

Friday, August 30, 13

Anlise

Friday, August 30, 13

Anlise

Friday, August 30, 13

Anlise

No subestime a matemtica.

Friday, August 30, 13

Probabilidade
Estatstica
Algebra Linear
Matemtica Discreta

Visualizao

Friday, August 30, 13

Visualizao

O que voc gostaria de mostrar?

Friday, August 30, 13

Comparao
Distribuio
Composio
Relao

Analise

Friday, August 30, 13

Analise

Friday, August 30, 13

Deployment

Friday, August 30, 13

Deployment

Quando voc tiver a primeira


verso do seu modelo, est na hora
de coloc-lo em produo.

Friday, August 30, 13

Deployment

Transformar o cdigo do prottipo


em codigo de produo s vezes
envolve trocar de linguagem/
contexto/plataforma

Friday, August 30, 13

Deployment

Env

Friday, August 30, 13

Linux - max open files, sockets


Hadoop - max M/R jobs
Solr - merge factor, memoria
Teste de carga

Deployment

Monitore tudo
Converso
Usurios que esto sob
influencia do algoritmo
Cache

Friday, August 30, 13

Deployment

N verses de um mesmo
algoritmo podem coexistir e
competir pela melhor resposta/
converso

Friday, August 30, 13

Deployment

Avaliao
Mean Absolute Error
Root Mean Squared Error (RMSE)

Friday, August 30, 13

Deployment
Toolset

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

Deployment

Mahout - Hadoop: funcionam


muito bem para batch data. No
aplicveis para processamento em
tempo real.

Friday, August 30, 13

Deployment

Storm - Processamento em Tempo


real
Spout
Bolt
Mgica

Friday, August 30, 13

Deployment

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)
}

Friday, August 30, 13

Deployment

Bolt (Processing Unit)


public static class WordCount extends BaseBasicBolt {
public void execute(Tuple tuple, BasicOutputCollector collector)
public void declareOutputFields(OutputFieldsDeclarer declarer)
}

Friday, August 30, 13

Deployment

Topologia

Friday, August 30, 13

Dicas e consideraes

Comunicao
Demonstre sua hipotese/Teoria
Tente vrias abordagens
Converse com outras pessoas sobre
seus dados/tcnicas
Veja como problemas similares foram
modelados ( kaggle.com)

Friday, August 30, 13

Analise

Friday, August 30, 13

The end!
Fernando Meyer
@fmeyer

Friday, August 30, 13

Das könnte Ihnen auch gefallen