O Vowpal Wabbit (VW) é uma ferramenta de machine learning capaz de analisar grandes volumes de dados e extrair padrões para resolver problemas de classificação e regressão. O VW implementa algoritmos como gradiente estocástico para aprender modelos lineares a partir de exemplos de treinamento contendo características e resultados esperados.
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
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