Date post: | 07-Jan-2017 |
Category: |
Technology |
Upload: | amazon-web-services-latam |
View: | 520 times |
Download: | 0 times |
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Aplicações com Amazon Machine Learning
Alex CoqueiroArquiteto de Soluções para o Setor Público
Dados como parte essencial das aplicações
Front-end e UX Mobile Back-end e operações
Dados transacionais e
análiticos
Três abordagens para o desenvolvimento orientado a dados (data-driven development)
RetrospectivaAnálise e Relatório
Três abordagens para o desenvolvimento orientado a dados (data-driven development)
RetrospectivaAnálise e Relatório
Tempo RealProcessamento em
tempo real e dashboards
Três abordagens para o desenvolvimento orientado a dados (data-driven development)
RetrospectivaAnálise e Relatório
Tempo RealProcessamento em
tempo real e dashboards
PreditivoHabilitar
aplicações inteligentes
Machine Learning
Machine Learning é um método de análise de dados que ajuda na busca de modelos de descoberta de padrões existentes de dados
Ok… entendi ... e na prática?
Identificação de Padrões: Exemplo 1Nome Transação Fraude
Joao R$ 2.342,50 Não
Maria R$ 2.113,00 Sim
Mario R$ 2.222,22 SimCristina R$ 3.423,20 Não
Marcelo R$ 940,34 Sim
Identificação de Padrões: Exemplo 1Nome Transação Fraude
Joao R$ 2.342,50 Não
Maria R$ 2.113,00 Sim
Mario R$ 2.222,22 SimCristina R$ 3.423,20 Não
Marcelo R$ 940,34 Sim
Identificação de Padrões: Exemplo 2Nome Transação Nascimento Local Trans Idade Fraude
Joao R$ 2.342,50 SP SP 21 NãoMaria R$ 5.113,00 SP RJ 22 Sim
Mario R$ 4.222,22 SP RJ 25 SimCristina R$ 5.423,20 AM SC 40 Não
Marcelo R$ 4.940,34 SP RJ 18 Sim
Ronaldo R$ 3.423,20 SP PR 18 Não
Pedro R$ 423,20 PR SP 18 Não
Simone R$ 1.001,20 DF SP 35 Não
Eduardo R$ 1.012,20 SP RJ 40 Não
Sergio R$ 3.300,10 SP BA 43 Não
Alex R$ 4.004,20 SP RJ 22 Sim
Fabio R$ 4.001,99 RJ SP 37 Não
Identificação de Padrões: Exemplo 2Nome Transação Nascimento Local Trans Idade Fraude
Joao R$ 2.342,50 SP SP 21 NãoMaria R$ 5.113,00 SP RJ 22 Sim
Mario R$ 4.222,22 SP RJ 25 SimCristina R$ 5.423,20 AM SC 40 Não
Marcelo R$ 4.940,34 SP RJ 18 Sim
Ronaldo R$ 3.423,20 SP PR 18 Não
Pedro R$ 423,20 PR SP 18 Não
Simone R$ 1.001,20 DF SP 35 Não
Eduardo R$ 1.012,20 SP RJ 40 Não
Sergio R$ 3.300,10 SP BA 43 Não
Alex R$ 4.004,20 SP RJ 22 Sim
Fabio R$ 4.001,99 RJ SP 37 Não
Exemplos de Aplicações Práticas
Baseado no que você sabe do seu cliente:
Ele irá adquirir seu novo produto?
Exemplos de Aplicações Práticas
Baseado no que você sabe a respeito do pedido:
Seria uma transação fraudulenta?
Baseado no que você sabe do seu cliente:
Ele irá adquirir seu novo produto?
Exemplos de Aplicações Práticas
Baseado no que você sabe a respeito do pedido:
Seria uma transação fraudulenta?
Baseado no que você sabe a respeito da manutenção da sua fábrica:
Quais os robôs que irão precisar de manutenção?
Baseado no que você sabe do seu cliente:
Ele irá adquirir seu novo produto?
Humm…mas isso pode ficar complexo …
Tipos de Machine Learning
Machine Learning
Supervisionado Não Supervisionado
Modelos preditivosClassificação/Regressão
Modelos descritivosCluster
Amazon Machine Learning (AML)
Facilidade de uso, serviço gerenciado de machine learning construído para desenvolvedores
Robustes em tecnologia de machine learning
Criação de modelos usando dados armazenados na cloud da AWS
Deploy de modelos em produção em segundos
Amazon Machine LearningAlgoritmos de Aprendizado Supervisionados1. Classificação Binaria - usado para respostas 0/1
- O cliente irá comprar o produto?- O cliente irá migrar para um plano mais sofisticado?
2. Classificação Multiclass - Classificação de documentação baseado em contexto- Organização produtos em categorias
3. Regressão- Remarcação de preço de produtos- Previsão de demanda futura de Produtos
Amazon Elastic MapReduce (EMR)Algoritmos de Aprendizado Não Supervisionados
Quero ver funcionando ?
Construção domodelo
Avaliação e Otimização
Recuperar Previsões
1 2 3
Treinar Modelo
Avaliação e Otimização
Recuperar Previsões
1 2 3
Criar o Datasource
>>> import boto
>>> ml = boto.connect_machinelearning()
>>> ds = ml.create_data_source_from_s3(data_source_id = ’my_datasource', data_spec= { 'DataLocationS3':'s3://bucket/input/', 'DataSchemaLocationS3':'s3://bucket/input/.schema'}, compute_statistics = True)
Explorar e entender os dados
Treinar seu modelo
>>> import boto
>>> ml = boto.connect_machinelearning()
>>> model = ml.create_ml_model( ml_model_id=’my_model', ml_model_type='REGRESSION', training_data_source_id='my_datasource')
Treinar Modelo
Avaliação e Otimização
Recuperar Previsões
1 2 3
Construir aplicações com Amazon ML
- Entender a qualidade do modelo- Ajustes na interpretação
Explorar qualidade do modelo
Refinamento na interpretação do modelo
Refinamento na interpretação do modelo
Treinar Modelo
Avaliação e Otimização
Recuperar Previsões
1 2 3
Construir aplicações com Amazon ML
- Previsões em batch- Previsões em tempo real
Batch Predictions
Assincrono, geração de dados a partir de grande volume de dados
Requisição por meio de console ou API>>> import boto
>>> ml = boto.connect_machinelearning()
>>> model = ml.create_batch_prediction( batch_prediction_id = 'my_batch_prediction’ batch_prediction_data_source_id = ’my_datasource’ ml_model_id = ’my_model', output_uri = 's3://examplebucket/output/’)
Real-time predictions
Sincrono, baixa latência, alto throughput na geração de previsões
Requesição por API ou server ou SDK mobile
Lida com aplicações que necessitam avaliar registros individualmente
>>> import boto
>>> ml = boto.connect_machinelearning()
>>> ml.predict( ml_model_id=’my_model', predict_endpoint=’example_endpoint’, record={’key1':’value1’, ’key2':’value2’})
{ 'Prediction': { 'predictedValue': 13.284348, 'details': { 'Algorithm': 'SGD', 'PredictiveModelType': 'REGRESSION’ } }}
Considerações Finais
Explore arquiteturas a partir da combinação de serviços existentes
Cenário Integrado com BI
Structured Data/PredictionsAmazon Redshift
Generate/Query Predictions
Amazon QuickSight
Application
Amazon Machine Learning
Visualize
Query for predictions with Amazon ML batch API
Process data with EMR
Raw data in S3Aggregated data
in S3Predictions
in S3 Your application
Cenário Integrado com Bigdata
… e o preço …
Pague somente pelo que usa
Análise de dados, treinamento do modelo, e avaliação: $0.42/instance hour
Batch predictions: $0.10/1000
Real-time predictions: $0.10/1000
Muito ObrigadoPor favor, complete a seção de feedbacks
Alex CoqueiroArquiteto de Soluções para o Setor Público
Você esta fazendo a pergunta certa ?
Você tem o dado correto?
Você sabe mensurar o sucesso da análise ?
Agenda
• Machine learning and the data ecosystem• Smart applications by example (and counter-
example)• Amazon Machine Learning features and benefits• Developing with Amazon ML• Q&A
Batch predictions with Amazon Redshift
Structured dataIn Amazon Redshift
Load predictions into Amazon Redshift
-or-Read prediction results
directly from S3Predictions
in S3
Query for predictions with Amazon ML batch API
Your application
Adding predictions to an existing data flow
Your applicationAmazon
DynamoDB
Lambda
+
Trigger event with Lambda+
Query for predictions with Amazon ML real-time API
Data Engineer familiar with Hadoop and Spark
Data EngineerExisting Structured Data
Amazon Redshift
New Structured Data Amazon Redshift
Amazon EMR
spark-redshift
Enrichment /Transformation
ETL
Data SourceAmazon Redshift
Integration
Construindo uma aplicação
Caro Alex,
Compre este quadcoptero R$49.99!
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customerGROUP BY c.IDHAVING o.date > GETDATE() – 30
Vamos iniciar vendendo para quem fez alguma compra nos últimos 30 dias
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customerGROUP BY c.IDHAVING O.CATEGORY = ‘TOYS’ AND o.date > GETDATE() – 30
… Vamos ser mais específicos. Vamos oferecer para quem comprou brinquedos
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN PRODUCTS P ON P.ID = O.PRODUCTGROUP BY c.IDHAVING o.category = ‘toys’ AND ((P.DESCRIPTION LIKE ‘%HELICOPTER%’ AND O.DATE > GETDATE() - 60) OR (COUNT(*) > 2 AND SUM(o.price) > 200 AND o.date > GETDATE() – 30) )
… vamos expandir e colocar quem comprou helicoptero de brinquedo
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN products p ON p.ID = o.productGROUP BY c.IDHAVING o.category = ‘toys’ AND ((p.description LIKE ‘%COPTER%’ AND o.date > GETDATE() - 60) OR (COUNT(*) > 2 AND SUM(o.price) > 200 AND o.date > GETDATE() – 30) )
… mas e os quadcopteros?
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN products p ON p.ID = o.productGROUP BY c.IDHAVING o.category = ‘toys’ AND ((p.description LIKE ‘%copter%’ AND o.date > GETDATE() - 120) OR (COUNT(*) > 2 AND SUM(o.price) > 200 AND o.date > GETDATE() – 30) )
… talvez eu precise pegar um universo temporal maior
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN products p ON p.ID = o.productGROUP BY c.IDHAVING o.category = ‘toys’ AND ((p.description LIKE ‘%copter%’ AND o.date > GETDATE() - 120) OR (COUNT(*) > 2 AND SUM(o.price) > 200 AND o.date > GETDATE() – 40) )
… vamos ajustar os tempos
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN products p ON p.ID = o.productGROUP BY c.IDHAVING o.category = ‘toys’ AND ((p.description LIKE ‘%copter%’ AND o.date > GETDATE() - 120) OR (COUNT(*) > 2 AND SUM(o.price) > 150 AND o.date > GETDATE() – 40) )
… novamente
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN products p ON p.ID = o.productGROUP BY c.IDHAVING o.category = ‘toys’ AND ((p.description LIKE ‘%copter%’ AND o.date > GETDATE() - 90) OR (COUNT(*) > 2 AND SUM(o.price) > 150 AND o.date > GETDATE() – 40) )
… não está fucionando
Construindo uma aplicação
SELECT c.IDFROM customers c LEFT JOIN orders o ON c.ID = o.customer LEFT JOIN products p ON p.ID = o.productGROUP BY c.IDHAVING o.category = ‘toys’ AND ((p.description LIKE ‘%copter%’ AND o.date > GETDATE() - 90) OR (COUNT(*) > 2 AND SUM(o.price) > 150 AND o.date > GETDATE() – 40) )
E se nos delegassemos isso ao machine learning para aprender com as minhas experiências!