Upload
labs-alfacon
View
180
Download
0
Embed Size (px)
DESCRIPTION
Analise de dados com Vowpal Wabbit - Meetup Café com Dados (Labs Alfacon)
Citation preview
Machine Learning
com Vowpal Wabbit
Definição
O Vowpal Wabbit (VW) é uma ferramenta para criação de modelos de Machine
Learning capazes de extrair informações e padrões de grandes volumes de dados.
O VW pode ser usado para resolver problemas de Big Data rapidamente através de cases reais
através de problemas que envolvem classificação de dados, modelos de regressão e descoberta de padrões.
Principal developer of VW
http://research.yahoo.com http://research.microsoft.com
John Langford
[email protected]@microsoft.com
A ideia
Vorpal Sword Rabbit+
O que é
Implementação de diversos algoritmos de machine learning.
• FEATURES – Subconjunto de dados com características relevantes.
• LABEL – Resultado esperado (o que se deseja prever)
• Job Description – Dado um conjunto de features, calcule (com certa precisão) o label
correspondente.
• Entrada do VW – Textual (qualquer palavra pode ser utilizada como feature)
• Exemplo – nota, curso, professor, ...
Features
ValorInvestido:149.7
nome
valor
(Sempre numérico)
Features
CompraEfetuada
1semestre:749.9
Tempo_Cadastro:63.0
:1.0
Modelos
Modelos são simplificações da
Realidade
Dados Brutos -> Features, Label
F(features) = Label
Aprendendo modelos
VW aproxima F da forma linear
F = C1*FEATURE1+C2*FEATURE2+C3*FEATURE3+...+Cn*FEATUREn
É basicamente um somatório
dos pesos multiplicados pelos valores
das features
O VW é capaz de trabalhar com modelos muito grande de features (terafeatures) e isso faz com que o
processo linear possa ser muito mais preciso que sistemas não
lineares.
Stochastic Gradient Descent
É um algoritmo que busca aprender dado um conjunto de exemplos baseado no valor dos pesos correspondentes
para as features.
Para isso, necessita de um “modelo de treino” (Aprendizagem Supervisionada).
Dentro da inteligência artificial, programas estocásticos* trabalham usando métodos
probabilísticos para solucionar problemas.
*Padrões estocásticos são aqueles que têm origem em processos não determinísticos, com origem
em eventos aleatórios. Por exemplo, o lançar de dados resulta num processo estocástico, pois qualquer uma das
6 faces do dado tem iguais probabilidades de ficar para cima quando de seu arremesso.
Stochastic Gradient Descent
Aprendizagem Não Supervisionada O VW implementa apenas 1 algoritmo não supervisionado, mas não
exploraremos neste momento.
O treinamento
Partindo do modelo SUPERVISIONADO, criamos um modelo de treino com
exemplos de features e labels para que o sistema possa identificá-los.
Para isso precisamos definir uma pergunta para o vw prever a resposta:
Job Description: qual o tempo de compra para novos cadastros?
Features: Estado, DiaCadastro, MesCadastro, Idade, ...
Label: QtdeDiasAtéCompra
Modelo Preditivo
Modelagem:
O VW possui um modelo de entrada bastante flexível
[Label] [Importance [Tag]]|Namespace Features |Namespace
Feature ....
Onde:
Namespace = String[:Value] (Pacotes de Features relacionadas)
Features = (String[:Value])*
Distribuição dos dados de entrada
2.025305865 |dados_cliente data_cadastro=30-09-2013
dia_cadastro:30.0 mes_cadastro=Setembro idade:24
cidade=passo_fundo estado=rs data_nascimento=1990-07-02
recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=14-
01-2014 quantidade_free_ate_agora:4.0
http://hunch.net/~vw/validate.html
Distribuição dos dados de entrada (exemplo)
1.146128036 |dados_cliente data_cadastro=06-02-2013 dia_cadastro:6.0 mes_cadastro=Fevereiro idade:37 cidade=umuarama
estado=pr data_nascimento=1977-06-20 recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=20-02-2013
quantidade_free_ate_agora:2.0
2.225309282 |dados_cliente data_cadastro=30-07-2012 dia_cadastro:30.0 mes_cadastro=Julho idade:31 data_nascimento=1983-10-11
recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=14-01-2013 quantidade_free_ate_agora:0.0
1.414973348 |dados_cliente data_cadastro=15-11-2013 dia_cadastro:15.0 mes_cadastro=Novembro idade:23 cidade=rincao estado=sp
data_nascimento=1992-02-24 recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=11-12-2013 quantidade_free_ate_agora:1.0
1.491361694 |dados_cliente data_cadastro=10-02-2014 dia_cadastro:10.0 mes_cadastro=Fevereiro idade:23 cidade=maceio estado=al
data_nascimento=1991-08-30 recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=13-03-2014 quantidade_free_ate_agora:6.0
0.301029996 |dados_cliente data_cadastro=10-06-2013 dia_cadastro:10.0 mes_cadastro=Junho idade:26 cidade=manaus estado=am
data_nascimento=1988-05-11 recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=12-06-2013 quantidade_free_ate_agora:0.0
1.755874856 |dados_cliente data_cadastro=16-05-2013 dia_cadastro:16.0 mes_cadastro=Maio idade:25 cidade=vera_cruz estado=rs
data_nascimento=1990-02-07 recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=12-07-2013 quantidade_free_ate_agora:2.0
0 |dados_cliente data_cadastro=19-03-2013 dia_cadastro:19.0 mes_cadastro=Marco idade:27 cidade=joao_pessoa estado=pb data_nascimento=1987-
04-28 recebe_mail_mkt:1.0 |dados_compras data_primeira_compra=20-03-2013 quantidade_free_ate_agora:0.0
Distribuição dos dados de entrada
2.025305865 |dados_cliente data_cadastro=30-09-2013
dia_cadastro:30.0 mes_cadastro=Setembro idade:24
cidade=passo_fundo estado=rs data_nascimento=1990-07-02
recebe_mail_mkt:1.0 |dados_compras
data_primeira_compra=14-01-2014
quantidade_free_ate_agora:4.0
http://hunch.net/~vw/validate.html
Como otimizar essa grande quantidade de parâmetros?
Em geral os algoritmos de predição trabalham com números, e para converter as features em
números eles traduzem usando tabelas
1 | dia_cadastro:1.0
2 | dia_cadastro:2.0
3 | dia_cadastro:3.0
...
999 | mes_cadastro=Fevereiro
...
651468 | idade:37
* Isso acaba consumindo muito tempo e memória.
* Isso não acontece no VW pois ele utiliza HASHING TRICK!
Como otimizar essa grande quantidade de parâmetros?
Como converter esses números em palavras?
O VW, através da função hash, pega a String e faz um hash dela, e a utiliza como
entrada na função de otimização.
Isso é particularmente útil para os algoritmos de aprendizagem que consomem
grandes quantidades de dados. Assim aumenta a ESCALABILIDADE
HASHING TRICK
Treinando o modelo
VW -D DATA.TRAIN -L10 -C -K --PASSES 80 --holdout_off –F TREINO.VWvw -d DBCompleta.txt -l 10 -c -k --passes 100 --holdout_off -f treino.vw
[DEMO]
Predição do tempo entre cadastro e compra
HEAD –3L DATA.TEST
HEAD –3L DATA.TEST | VW –i TREINO.VW –T –QUIET –P /DEV/STDOUT
[ WolframAlpha ]
Feature Extration
VW –VARINFO
Identifica as features mais relevantes
perl ../../vw/utl/vw-varinfo -c -k --passes 13 base.vw > varinfo.txt perl ../../vw/utl/vw-varinfo -c -k --passes 13 DBCompleta.vw > treino_varinfo.txt
Overfiting
Overfiting ocorre quando um algoritmo
de modelo estatístico ou de
aprendizagem de máquina torna-se
“perfeito” ao treino.
MeetUp
Café com Dados
Até a próxima
http://www.alfaconcursos.com.br/cafe-com-
dados
Inscreva-se e participe