24
Machine Learning com Vowpal Wabbit

Machine Learning com Vowpal Wabbit

Embed Size (px)

DESCRIPTION

Analise de dados com Vowpal Wabbit - Meetup Café com Dados (Labs Alfacon)

Citation preview

Page 1: Machine Learning com Vowpal Wabbit

Machine Learning

com Vowpal Wabbit

Page 2: 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.

Page 3: Machine Learning com Vowpal Wabbit

Principal developer of VW

http://research.yahoo.com http://research.microsoft.com

John Langford

[email protected]@microsoft.com

Page 4: Machine Learning com Vowpal Wabbit

A ideia

Vorpal Sword Rabbit+

Page 5: Machine Learning com Vowpal Wabbit

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, ...

Page 6: Machine Learning com Vowpal Wabbit

Features

ValorInvestido:149.7

nome

valor

(Sempre numérico)

Page 7: Machine Learning com Vowpal Wabbit

Features

CompraEfetuada

1semestre:749.9

Tempo_Cadastro:63.0

:1.0

Page 8: Machine Learning com Vowpal Wabbit

Modelos

Modelos são simplificações da

Realidade

Dados Brutos -> Features, Label

F(features) = Label

Page 9: Machine Learning com Vowpal Wabbit

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

Page 10: Machine Learning com Vowpal Wabbit

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.

Page 11: Machine Learning com Vowpal Wabbit

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.

Page 12: Machine Learning com Vowpal Wabbit

Stochastic Gradient Descent

Aprendizagem Não Supervisionada O VW implementa apenas 1 algoritmo não supervisionado, mas não

exploraremos neste momento.

Page 13: Machine Learning com Vowpal Wabbit

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

Page 14: Machine Learning com Vowpal Wabbit

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])*

Page 15: Machine Learning com Vowpal Wabbit

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

Page 16: Machine Learning com Vowpal Wabbit

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

Page 17: Machine Learning com Vowpal Wabbit

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

Page 18: Machine Learning com Vowpal Wabbit

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!

Page 19: Machine Learning com Vowpal Wabbit

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

Page 20: Machine Learning com Vowpal Wabbit

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]

Page 21: Machine Learning com Vowpal Wabbit

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 ]

Page 22: Machine Learning com Vowpal Wabbit

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

Page 23: Machine Learning com Vowpal Wabbit

Overfiting

Overfiting ocorre quando um algoritmo

de modelo estatístico ou de

aprendizagem de máquina torna-se

“perfeito” ao treino.

Page 24: Machine Learning com Vowpal Wabbit

MeetUp

Café com Dados

Até a próxima

http://www.alfaconcursos.com.br/cafe-com-

dados

Inscreva-se e participe