machine learning com vowpal wabbit

21
Machine Learning com Vowpal Wabbit

Upload: labs-alfacon

Post on 15-Jul-2015

739 views

Category:

Technology


0 download

TRANSCRIPT

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]

[email protected]

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óriodos 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.

Nesse caso, necessitamos de um modelo de treino (Aprendizagem Supervisionada). É um

aprendizado de dados interativo.

Dentro da inteligência artificial, programas estocásticos trabalham usando métodos probabilísticos para

solucionar problemas, como em redes neurais estocásticas, otimização estocástica e algoritmos genéticos.

Um problema pode ser estocástico em si mesmo, como no planejamento sob incerteza.

O treinamento

Partindo do modelo SUPERVISIONADO, passasse uma infinidade de exemplos com

features e labels para que o sistema possa identificá-los.

Exemplo:

Job Description: Tempo de compra para novos cadastros

Features: Estado, DiaCadastro, MesCadastro, Idade, Sexo, ...

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_antes_primeira_compra:4.0

http://hunch.net/~vw/validate.html

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_antes_primeira_compra:4.0

http://hunch.net/~vw/validate.html

Como otimizar essa grande quantidade de parâmetros?

Como converter esses números em palavras?

Através da função hash, pega-se 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 –C –K –PASSES 80 –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 ../utl/vw-varinfo -c -k --passes 13 --base.vw > varinfo.txt

Overfitting

Overfiting ocorre quando um algoritmo de

modelo estatístico ou de aprendizagem de

máquina torna-se “perfeito” ao treino.