SlideShare uma empresa Scribd logo
1 de 24
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 
jl@hunch.net 
jcl@microsoft.com
A ideia
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
Features
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
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
Treinando o modelo 
VW -D DATA.TRAIN -L10 -C -K --PASSES 80 --holdout_off –F TREINO.VW 
vw -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

Mais conteúdo relacionado

Semelhante a Machine Learning com Vowpal Wabbit

Mineração com sql server 2008 r2
Mineração com sql server 2008 r2Mineração com sql server 2008 r2
Mineração com sql server 2008 r2
Rodrigo Dornel
 
18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa
itgfiles
 

Semelhante a Machine Learning com Vowpal Wabbit (20)

Sino
SinoSino
Sino
 
TDC2016SP - SparkMLlib Machine Learning na Prática
TDC2016SP -  SparkMLlib Machine Learning na PráticaTDC2016SP -  SparkMLlib Machine Learning na Prática
TDC2016SP - SparkMLlib Machine Learning na Prática
 
[DTC21] Raphael Castilho - Começando com Inteligência Artificial e Machine Le...
[DTC21] Raphael Castilho - Começando com Inteligência Artificial e Machine Le...[DTC21] Raphael Castilho - Começando com Inteligência Artificial e Machine Le...
[DTC21] Raphael Castilho - Começando com Inteligência Artificial e Machine Le...
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 
Automated Machine Learning
Automated Machine LearningAutomated Machine Learning
Automated Machine Learning
 
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e PlanificaçõesGestão de Projectos de SW OO Métricas Estimações e Planificações
Gestão de Projectos de SW OO Métricas Estimações e Planificações
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
 
Mineração com sql server 2008 r2
Mineração com sql server 2008 r2Mineração com sql server 2008 r2
Mineração com sql server 2008 r2
 
PowerBI na Pártica com Indicadores Elicitados com MindMap e Canvas consumidos...
PowerBI na Pártica com Indicadores Elicitados com MindMap e Canvas consumidos...PowerBI na Pártica com Indicadores Elicitados com MindMap e Canvas consumidos...
PowerBI na Pártica com Indicadores Elicitados com MindMap e Canvas consumidos...
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa18.ago topázio 14.30_389_aeselpa
18.ago topázio 14.30_389_aeselpa
 
01- Introdução a programação e modelo RAD v1.0
01- Introdução a programação e modelo RAD v1.001- Introdução a programação e modelo RAD v1.0
01- Introdução a programação e modelo RAD v1.0
 
DataTechDay4 - Carlos Oeiras
DataTechDay4 - Carlos OeirasDataTechDay4 - Carlos Oeiras
DataTechDay4 - Carlos Oeiras
 
TDC2016SP - Colocando modelos de Machine Learning em produção.
TDC2016SP - Colocando modelos de Machine Learning em produção.TDC2016SP - Colocando modelos de Machine Learning em produção.
TDC2016SP - Colocando modelos de Machine Learning em produção.
 
Ferramentas informáticas para a Gestão: Excel
Ferramentas informáticas para a Gestão: ExcelFerramentas informáticas para a Gestão: Excel
Ferramentas informáticas para a Gestão: Excel
 
Revista programar 20
Revista programar 20Revista programar 20
Revista programar 20
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
Machine Learning Canvas: Da coleta de dados à geração de valor
Machine Learning Canvas: Da coleta de dados à geração de valorMachine Learning Canvas: Da coleta de dados à geração de valor
Machine Learning Canvas: Da coleta de dados à geração de valor
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
 
Webinar Magento Commerce
Webinar Magento Commerce Webinar Magento Commerce
Webinar Magento Commerce
 

Machine Learning com Vowpal Wabbit

  • 1. Machine Learning com Vowpal Wabbit
  • 2. 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.
  • 3. Principal developer of VW http://research.yahoo.com http://research.microsoft.com John Langford jl@hunch.net jcl@microsoft.com
  • 5. 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, ...
  • 8. Modelos Modelos são simplificações da Realidade Dados Brutos -> Features, Label F(features) = Label
  • 9. 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
  • 10.
  • 11. 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.
  • 12. Stochastic Gradient Descent Aprendizagem Não Supervisionada O VW implementa apenas 1 algoritmo não supervisionado, mas não exploraremos neste momento.
  • 13. 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
  • 14. 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])*
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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!
  • 19. 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
  • 20. Treinando o modelo VW -D DATA.TRAIN -L10 -C -K --PASSES 80 --holdout_off –F TREINO.VW vw -d DBCompleta.txt -l 10 -c -k --passes 100 --holdout_off -f treino.vw [DEMO]
  • 21. 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 ]
  • 22. 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
  • 23. Overfiting Overfiting ocorre quando um algoritmo de modelo estatístico ou de aprendizagem de máquina torna-se “perfeito” ao treino.
  • 24. MeetUp Café com Dados Até a próxima http://www.alfaconcursos.com.br/cafe-com-dados Inscreva-se e participe

Notas do Editor

  1. No modo Apresentação de Slides, clique na seta para entrar no PowerPoint Getting Started Center.