Presented with Flavio Clésio at TDCSP2016 showing a Machine Learning solution for tracking and monitoring a critical billing platform.
Code repository:
https://github.com/eiti-kimura-movile/spark-mllib-sample
Gestão de Projectos de SW OO Métricas Estimações e Planificações
Monitoramento de Plataforma de Tarifação com ML
1. Globalcode – Open4education
Apache SparkMLlib
Machine Learning na Prática
Eiti Kimura
Trilha: Machine Learning
Coordenador de Desenvolvimento
Flávio Clésio
Core Machine Learning
2. 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
3. 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
7. 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
8. 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
9. Globalcode – Open4education
Problema: Monitoramento
Plataforma 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?
10. Globalcode – Open4education
Clientes assinam um produto ou serviço
A assinatura é persistida em um banco de dados
A assinatura é tarifada
A plataforma gerencia o ciclo de vida da assinatura
Plataforma de tarifação
em sua forma mais simples
15. Globalcode – Open4education
Natureza dos Dados ou:
O que eu quero saber?
Dado um vetor de dados
Amostra 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ção
Número Esperado de Sucessos
características
label
# success carrier_id hour week response_time no_credit errors attempts
carrier_id hour week
APRENDIZADO SUPERVISIONADO
Regressão Linear
16. 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.
17. 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.
18. 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
19. 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.
20. 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:
21. 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
22. 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!
23. 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.
24. 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
25. Globalcode – Open4education
Gradiente Descendente Estocástico
Fazendo 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.
27. Globalcode – Open4education
A única métrica que importa ou OMTM (One Metric That
Matters)
Verificar Desempenho
Modelos 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).
29. 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
30. 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
33. 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
34. 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
35. 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...