3. 데이터 기반 개발의 세 가지 방법
Retrospective
분석 또는 보고
Amazon Redshift,
Amazon RDS
Amazon S3
Amazon EMR
4. 데이터 기반 개발의 세 가지 방법
Retrospective
분석 또는 보고
Here-and-now
실시간 분석/처리
또는 대쉬보드
Amazon Kinesis
Amazon EC2
AWS Lambda
Amazon Redshift,
Amazon RDS
Amazon S3
Amazon EMR
5. 데이터 기반 개발의 세 가지 방법
Retrospective
분석 또는 보고
Here-and-now
실시간 분석/처리
또는 대쉬보드
Predictions
보다 스마트한
서비스 개발
Amazon Kinesis
Amazon EC2
AWS Lambda
Amazon Redshift,
Amazon RDS
Amazon S3
Amazon EMR
6. Machine learning, 보다 스마트한 서비스
Machine Learning 은 데이터에서 새로운
패턴과 의미를 발견하고, 그 예측된 값을 새로운
데이더로 활용할 수 있다.
7. Machine learning, 보다 스마트한 서비스
Machine Learning 은 데이터에서 새로운
패턴과 의미를 발견하고, 그 예측된 값을 새로운
데이더로 활용할 수 있다.
Your data + machine learning = smart applications
9. Machine Learning 를 이용한 예제
Based on what you
know about the user:
이 아이템에 사용자가
정말 매력을 느낄까?
Based on what you
know about an order:
전에 비슷한 아이템을
구매했는가?
Based on what you know
about a news article:
이 사용자는 다른 정보가
아이템 구매와 관련이
있을까?
10. Machine Learning 적용 아이디어
Fraud detection 정상적인 Transaction인가?, 의심가는 사용자 패턴 인식,
위험 사용자 태깅 …
Personalization 유져가 좋아할만한 아이템, 미션 추천…
Targeted marketing 유져마다 각각 다른 이벤트 제안, 다른 형식의 마케팅
진행, 크로스 셀링, 업 셀링…
Content classification 개인에 맞는 스킬 셋, 장비 셋 제안…
Churn prediction 예상 탈퇴 또는 미사용자 검색, 공짜에서 유료 사용자로
전환 타이밍 감지…
Customer support 고객 이메일, 게시판 등에서 예상될 이슈 감지 및 경고…
12. 타겟 유저를 뽑아 봅시다.
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
GROUP BY c.ID
HAVING o.date > GETDATE() – 30
최근 30일 내에 아이템을
구매한 유저분들에게
제안한다.
13. 조금 좁혀서 타겟 유저를 뽑아 봅시다.
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
GROUP BY c.ID
HAVING
AND o.date > GETDATE() – 30
무기 외에 방어구만
구매한 유저만을
뽑아본다.
14. 더 좁혀서 타겟 유저를 뽑아 봅시다.
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
GROUP BY c.ID
HAVING o.category = ‘ARMOR’
AND
(COUNT(*) > 2
AND SUM(o.price) > 200
AND o.date > GETDATE() – 30)
)
방어구 중에 최근 두 달간
갑옷 종류를 구매한
유저만을 뽑아본다….
15. 더 좁혀서 타겟 유저를 뽑아 봅시다.
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
LEFT JOIN products p
ON p.ID = o.product
GROUP BY c.ID
HAVING o.category = ‘toys’
AND ((p.description LIKE ‘% %’
AND o.date > GETDATE() - 60)
OR (COUNT(*) > 2
AND SUM(o.price) > 200
AND o.date > GETDATE() – 30)
)
부츠는? 헬멧은?
쿼리 조건을 다시 추가…?
‘% %’
‘% %’
16. 타겟 유저가 너무 적다. 더 뽑아 봅시다.
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
LEFT JOIN products p
ON p.ID = o.product
GROUP BY c.ID
HAVING o.category = ‘ARMOR’
AND ((p.description LIKE ‘%PLATE%’
AND o.date > GETDATE() - )
OR (COUNT(*) > 2
AND SUM(o.price) > 200
AND o.date > GETDATE() – 30)
)
60일이 아니라 120일전
기록까지 뽑아본다.
17. 타겟 유저가 너무 적다. 더 뽑아 봅시다.
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
LEFT JOIN products p
ON p.ID = o.product
GROUP BY c.ID
HAVING o.category = ‘ARMOR’
AND ((p.description LIKE ‘%PLATE%’
AND o.date > GETDATE() - 120)
OR (COUNT(*) > 2
AND SUM(o.price) > 200
AND o.date > GETDATE() – )
)
$200이상 유저는
30일에서
40일전까지…
18. 타겟 유저가 정말 구입 가능성이 높은 유저인가?
SELECT c.ID
FROM customers c
LEFT JOIN orders o
ON c.ID = o.customer
LEFT JOIN products p
ON p.ID = o.product
GROUP BY c.ID
HAVING o.category = ‘ARMOR’
AND ((p.description LIKE ‘%PLATE%’
AND o.date > GETDATE() - )
OR (COUNT(*) > 2
AND SUM(o.price) > 150
AND o.date > GETDATE() – 40)
)
누군가 의미있는
연관성과 패턴을 찾아
구매 가능성이 가장
높은 유저 리스트를
뽑아주면 정말 좋겠다!
Machine Learning!
19. Machine Learning 적용이 쉬운 문제일까?
1. Machine learning 전문가가 적다.
2. 확장 가능한 Machine learning 아키텍쳐를 구성하기
어렵다
3. 모델링과 서비스를 연동하는게 많은 비용과 시간이
든다.
21. Amazon Machine Learning
• 간단히 생성, 쉬운 사용법
• AWS에서 관리하는 제공하는 Machine Learning 서비스
• API로 개발자도 쉽게 사용
• Amazon 내부의 시스템위에서 빠른 Machine Learning 기술
사용
• 이미 AWS 에 저장된 데이터를 바로 사용하여 데이터 모델링
• 바로 Production으로 사용할 수 있도록 배포(Endpoint)
22. 개발자들이 쉽게 접근하여 사용 가능
쉽게 접근 및 사용할 수 있는 Console로 직접 ML
모델링
• 데이터 소스 지정 및 생성
• ML 모델 생성, 모델 품질 측정, 튜닝
• 배포 및 관리
자동화된 관리와 API, SDK를 이용하여 쉽게 활용
• Java, Python, .NET, JavaScript, Ruby, Javascript
AWS Mobile SDK를 통해 Android, iOS 앱에서도 쉽게
사용 가능
23. 신뢰할 수 있는 machine learning technology
Amazon 내부의 Data Scientist들이 사용한 기술과
동일하고 확장성이 높은 입증된 Machine Learning을
기술을 기반으로 합니다.
알고리즘외의 편리한 기능:
• 간단한 데이터 타입 변환, 스키마 생성
• 원본 데이터와 모델에 대한 품질 평가
확장 가능한 Pay as use 모델
• 100GB 데이터 모델링 가능
• 배치를 통한 예측 지원
• 실시간 예측 지원
24. AWS 의 다른 서비스과 연계
S3에 저장된 데이터를 직접 접근하여 활용하며,
Amazon Redshift에 저장된 데이터를 편리하게
가져와 모델링 가능
예측 결과 파일을 간단히 S3에 저장하여 활용
가능
AWS Identity and Access Management (IAM)를
활용하여 서비스에 접근 권한 제어 가능
25. AWS에서 관리하고 제공하는 서비스
직접 Machine learning을 위한 시스템을
관리하거나 배포할 필요가 없음
클릭 몇 번으로 Production 배포 가능
API를 통해 모델링과 쿼리에 대한 Workflow
자동화 가능
Amazon CloudWatch를 통한 모니터링 제공
30. 데이터 모델 생성
>>> 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')
36. 배치(Batch)방식 예측
비동기적으로 대량의 예측 결과 필요 시 사용
Console, API를 통해 요청 가능
많은 양의 데이터를 한 번에 처리하여 결과를 S3에 저장
>>> 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/’)
37. 실시간(Real-time) 예측
동기적으로 빠르게 예측 결과를 바로 사용 가능
API, SDK를 통해 요청
각각의 데이터를 실시간으로 서비스에서 요청하여 사용
>>> 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’
}
}
}
40. Query for predictions with
Amazon ML batch API
Process data
with EMR
Raw data in S3
Aggregated data
in S3
Predictions
in S3 Your Game
EMR을 같이 이용한 배치방식
41. Query for predictions with
Amazon ML batch API
IDC
Aggregated data
in S3
Predictions
in S3
Your Game
IDC의 데이터를 S3로 저장 후 활용
DashBoard
42. Structured data
In Amazon Redshift
Load predictions into
Amazon Redshift
-or-
Read prediction results
directly from S3
Predictions
in S3
Query for predictions with
Amazon ML batch API
Your Game
Amazon Redshift를 활용한 배치 프로세싱