TDC2016SP - SparkMLlib Machine Learning na Prática

38
Globalcode – Open4education Apache SparkMLlib Machine Learning na Prática Eiti Kimura Trilha: Machine Learning Coordenador de Desenvolvimento Flávio Clésio Core Machine Learning

Transcript of TDC2016SP - SparkMLlib Machine Learning na Prática

Page 1: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Apache SparkMLlib Machine Learning na Prática

Eiti Kimura

Trilha: Machine Learning

Coordenador de Desenvolvimento

Flávio Clésio Core Machine Learning

Page 2: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Quem sou eu?

• Arquiteto de software e Coordenador de TI na Movile• Apache Cassandra Developer 1.1 Certified (2013)• Apache Cassandra MVP (2014/2015 e 2015/2016)• Apache Cassandra Contributor (2015)• Cassandra Summit Speaker (2014 e 2015)• Cassandra Summit Reviewer (2016)

Eiti Kimura

eitikimura

Page 3: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Quem sou eu?

Flávio Clésio

• Core Machine Learning na Movile• Coordenador de Revenue Assurance na Movile• Mestre em Inteligência Computacional(Aplicação no Mercado Financeiro) • Especialista em Data Mining e Business Intelligence com mais de 8 anos de experiência• Autor do blog Mineração de Dados (http://mineracaodedados.wordpress.com)

flavioclesio

Page 4: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

A Movile é a empresa por trás das apps que fazem sua vida mais fácil!

Page 5: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

O Melhor conteúdo para Crianças

Page 6: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Líder em delivery de comida no Brasil

Page 7: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Agenda

• O caso do sistema de tarifação da Movile• Apresentando o Watcher-ai• Um pouco de teoria sobre a regressão linear• Utilização de um modelo treinado em uma

aplicação Java

Objetivos

Page 8: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

• Apresentar o uso prático de Machine Learning focado em um caso de uso real usando spark-notebook para processar e testar modelos de ML e então implementar esse modelo em uma plataforma Java.

Objetivos

Page 9: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Problema: MonitoramentoPlataforma de tarifações da Movile

Como podemos checar se a plataforma está funcionando baseado apenas em análise de

dados?

Que tal pedir ajuda a um sistema inteligente?

Page 10: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Clientes assinam um produto ou serviçoA assinatura é persistida em um banco de dadosA assinatura é tarifadaA plataforma gerencia o ciclo de vida da assinatura

Plataforma de tarifação em sua forma mais simples

Page 11: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Trabalhando com Dadosplataforma de tarifação (0-6h)

Últimos 3 dias de análise de cada uma das operadoras

Page 12: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Arquitetura do Watcher-AI

Page 13: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Page 14: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Notificação única

Notificações agrupadas

Page 15: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Natureza dos Dados ou:O que eu quero saber?

Dado um vetor de dadosAmostra de dados de número de tentativas: 2.623.447, [4.0, 17h, 3.0]

Amostra de dados de número de tentativas com sucesso: 61.083, [4.0, 17h, 3.0, 1259.0, 24.751.650 , 2.193.67, 26.314.551]

Número esperado de Tentativas de TarifaçãoNúmero Esperado de Sucessos

características

label

# success carrier_id hour week response_time no_credit errors attempts

carrier_id hour week

APRENDIZADO SUPERVISIONADORegressão Linear

Page 16: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Qual algoritmo selecionar?

Sebastian Raschka - Livro Python Machine Learning

Quando envolvido em problemas de aprendizagem supervisionada, o meu conselho é começar com a mais simples hipótese em primeiro lugar. Isto é, tentar um modelo linear, como regressão logística.

Se não funcionar "bem" (isto é, ele não atende expectativas ou critério de desempenho definido anteriormente), então passe para um próximo experimento.

Page 17: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Spark MLlib

Seu objetivo é fazer com que a aprendizagem máquina seja escalável e fácil.

Consiste de algoritmos comuns de aprendizagem e utilitários, incluindo a classificação, regressão, clusterização, filtragem colaborativa, redução de dimensionalidade, pipelines.

Page 18: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

• Model Linear com Stochastic Gradient Descent (SDG)• Lasso com Modelo SGD (Regularização L1)• Regressão Ridge com Modelo SGD (Regularização L2)• Árvore de Decisão com Regressão

Algoritmos testados Apache MLlib

Page 19: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Um pouco de teoria sobre Regressão...

A Regressão Linear é um método estatístico que investiga o relacionamento e interdependência entre variáveis para obtenção de um resultado numérico.

Page 20: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Um pouco de matemática

y = α + (β1 * x1) + (β2 * x2) + (βn * xn) + ε

y = Valor a ser previsto (variável dependente)

α = Intercepto (onde a reta da regressão atinge o eixo Y e o valor de x = 0) - Fatores Endógenos

β = Coeficientes Regressores

x1...xn = Valores das variáveis independentes (e.g. colunas de um banco de dados)

ε = Erros residuais ou erros não explícitos - Fatores Exógenos

Em que:

Page 21: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Um pouco de matemática (Modelo de uma operadora)

Sucessos = (1.38 * Operadora)

+ (0.70 * Hora do Dia)

+ (1.63 * Semana do Mês)

+ (0.47 * Tempo de Resposta)

+ (0.40 * Tentativas sem crédito)

+ (0.70 * Erros de tentativas)

+ (0.40) * Número de Tentativas)

coeficientes β obtidos do modelo treinado

Page 22: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Vamos falar sobre Regularização

• Um problema comum com os problemas de regressão é a alta dimensionalidade da base de dados (ex: Projeto Genoma em que a base de dados tem mais de 5000 variáveis)

• A equação se torna tão complexa que converge muito rápido para o Overfitting!

Page 23: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Vamos falar sobre Regularização

• Para evitar esse tipo de problema o Spark MLlib incorpora alguns métodos de regularização como o LASSO(L1) e Ridge (L2).

• A regularização LASSO (L1) adiciona a penalização equivalente ao valor absoluto da magnitude dos coeficientes

• Já utilizando a regularização Ridge(L2) a penalização é equivalente à magnitude dos coeficientes elevada ao quadrado.

Page 24: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

É um método em que diversos parâmetros de um modelo são ajustados de maneira iterativa para minimizar a função de erro. Essa abordagem é feita usando aproximação estocástica para minimizar alguma função objetivo.

A função objetivo nesse caso é para reduzir o erro cumulativo nas instâncias de treinamento e teste. A abordagem estocástica é usada devido ao fato de que a base de dados é muito grande, e essa abordagem aleatória acelera a função de minimização.

Gradiente Descendente

Page 25: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Gradiente Descendente EstocásticoFazendo um terno no alfaiate

Exemplo: Stochastic Gradient Descent (Fazendo terno no alfaiate)

1) O alfaiate faz uma estimativa inicial

2) Um cara aleatório (de um pequeno grupo ou do conjunto de completo de pessoas) veste o terno e dá o feedback (e.g. está apertado, folgado, etc)

3) O alfaiate faz um pequeno ajuste de acordo com o feedback passado; e

4) Enquanto o alfaiate tem tempo disponível, ele volta para o passo 2 e refaz o processo.

Page 26: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Regressão usando Árvores de Decisão

Page 27: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

A única métrica que importa ou OMTM (One Metric That Matters)

Verificar DesempenhoModelos de regressão

Mean Squared Error (MSE) É a soma da raiz quadrada da média em relação às diferenças entre os valores previstos (y) e os valores originais de um conjunto de teste (x).

Page 28: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Spark Notebookhttp://spark-notebook.io/

spark-notebook-0.6.2$ ./bin/spark-notebook

Walkthrough

Page 29: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Avaliação de Desempenho Algoritmos de Aprendizado

Particionamento dos dados 70% para treinamento

30% para testes

val labelsAndPredictions = test.map { point => val carrier = point.features.apply(0) val model = mapModel(carrier) val prediction = model.predict(point.features) (point.label, prediction)}

trecho de código em Scala

Page 30: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Watcher-ai Tecnologias

Gradle gestão de dependência, build, deploy

Spring injeção de dependência, setup rápido

Spark MLlib carga de modelos, previsão de dados

Pushbullet API envio de notificações

$ echo "Olá! "$ echo "sou o Watcher-ai!"

https://github.com/eiti-kimura-movile/spark-mllib-sample

Page 31: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Watcher-aiRegistros de Ativação

CARRIER 1CARRIER 2CARRIER 4CARRIER 5

Page 32: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

CARRIER 1CARRIER 2CARRIER 4CARRIER 5

Page 33: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Resultados Preliminares

• Usado como última barreira de monitoramento• Ajudou a diagnosticar problemas nos últimos 2

meses• Detectou problemas nos sistemas de

monitoramento• Detecta discrepância nos números hora-a-hora• Os modelos devem ser treinados

frequentemente

Page 34: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Dicas Práticas

• Defina a medida de desempenho do modelo• Se pergunte: qual o desempenho desejado? que

hardware será necessário? quando o projeto precisa terminar?

• Inicie com o modelo mais simples que conseguir• Se não atingir o objetivo, tente modelos mais

complexos (se possível)

Sebastian Raschka - Livro Python Machine Learning

Page 35: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

É só o começo…

• Usar os próprios dados coletados para alimentar o modelo

• Treinar o modelo automaticamente• Analisar os erros e tempos de resposta para prever

se trata-se de um problema coma operadora• Alertar mais pessoas e times específicos• Muito mais para melhorar...

Page 36: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

MUITO OBRIGADO!

eitikimura eiti-kimura-movile [email protected]

flavioclesio fclesio [email protected]

[email protected]

Page 37: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education

Referências

Basics http://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/

Reference Books http://www.amazon.com/Machine-Learning-Spark-Powerful-Algorithms/dp/1783288515 https://www.packtpub.com/big-data-and-business-intelligence/python-machine-learning

Machine Learning Datasets Repository http://archive.ics.uci.edu/ml/

Page 38: TDC2016SP -  SparkMLlib Machine Learning na Prática

Globalcode – Open4education