이 Repo는 SOSCON2016 - Machine Learning의 발표자료 Repo임
- SOSCON 2016 : http://www.soscon.net/
- Session 정보 : http://www.soscon.net/session.do
- Short URL : http://aka.ms/soscon2016-ml
- Github URL : https://github.com/CloudBreadPaPa/soscon2016-ml
사용되는 이미지 등은 디에스이트레이드 이성희 박사님, 강희재 소장님의 허락 하에 게시합니다.
Iris 데모 데이터는 붓꽃 Lebel 데이터로 일반적인 분석 시나리오의 설명 등에 사용되는 예제 데이터임
Iris 데이터 link : data 폴더 참조
Iris 데이터에 대해 Multi-class 예측 모델 구축
Azure ML Iris 모델 : https://gallery.cortanaintelligence.com/Experiment/d-party-bot-Iris-prediction-1
채팅봇을 이용해 다양한 채널 제공자와 채팅 가능
https://aka.ms/dpartybot
Jupyter 에서 즉시 실행가능
PyData : https://github.com/wesm/pydata-book
Repo에서 제공하고 있는, r-script.r 파일을 R Studio에서 열고 실행 가능
고객 이탈 예측 및 item 추천 예측 모델 데모로 사용한 링크 정보
game user churn prediction : https://gallery.cortanaintelligence.com/Experiment/CloudBread-game-item-suggestion-prediction-1
game item suggestion prediction : https://gallery.cortanaintelligence.com/Experiment/CloudBread-game-item-suggestion-prediction-1
Machine Learning에서 데이터를 활용해 예측 분석 서비스가 가능하도록 학습시키기 위한 알고리듬 및 Machine Learning workflow 를 구현
고객이탈 예측(Game user churn prediction) real-time prediction & Batch prediction
게임내 아이템 추천(In-game item suggestion) real-time prediction & Batch prediction
위의 모델은 모두 CloudBread 팀이 공개한 CloudBread Machine Learning의 예측 분석 모델
**예측 분석 목표 정의 : **
위의 공개한 분석모델을 활용해 예측모델(Predict model)을 구축하고 API를 통해 실시간 예측을 수행하는 것이 목표.
-
Machine Learning 모델을 생성하거나, 위의 gallery에서 복제
-
모델을 실행하고, 수행된 예측 결과 확인
-
Predictive model로 생성 후 API Web Service로 배포
-
생성된 Web service의 API Key를 이용해 C# 코드에서 real-time predict 수행
public class UserChurnController : ApiController { // POST api/UserChurn public HttpResponseMessage POST(CBChurn p) { // Machine Learning 분석 요청 InvokeRequestResponseService(p).Wait(); ... } // Machine Learning Web Service 호출 static async Task InvokeRequestResponseService(CBChurn p) { ... const string apiKey = "API키-수정"; // Replace this with the API key for the web service client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey); client.BaseAddress = new Uri("Machine-Learning-Web-Service-URL-수정"); HttpResponseMessage response = await client.PostAsJsonAsync("", scoreRequest).ConfigureAwait(false); if (response.IsSuccessStatusCode) { string result = await response.Content.ReadAsStringAsync(); Debug.WriteLine("Result: {0}", result); p.ChurnYN = result; } ... } }
-
Machine Learning API Controller를 publish 하고, Postman에서 테스트 수행해 real-time prediction 수행
-
Batch 작업을 수행하기 위해서 Machine Learning Batch execution이 제공하는 코드 이용이 가능.
-
추가적으로, Functions를 이용해 server-less로 batch 호출 역시 가능
-
Excel을 이용해 Batch 분석도 가능
-
In-game에서 게이머의 패턴과 특성을 취합해 학습 시킨 후 적절한 유료 아이템을 추천하는 시나리오 역시 게임 서비스에서 매우 중요한 매출과 직결되는 예측 분석이며, 관련해 predict model로 in-game item suggestion을 제공
Azure Machine Learning이 노출하는 API를 Python에서 호출하는 예제 수행
Iris 데이터를 호출해 RRE를 수행하는 예제
python 폴더 하위의 ml-Iris.py 파일 참조
import urllib2
# If you are using Python 3+, import urllib instead of urllib2
import json
data = {
"Inputs": {
"input1":
{
"ColumnNames": ["Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species"],
"Values": [ [ "0", "0", "0", "0", "" ], [ "1", "1", "1", "1", "" ], ]
}, },
"GlobalParameters": {
}
}
body = str.encode(json.dumps(data))
url = 'https://asiasoutheast.services.azureml.net/workspaces/<ML-API-URL>'
api_key = '<API-KEY>' # Replace this with the API key for the web service
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}
req = urllib2.Request(url, body, headers)
try:
response = urllib2.urlopen(req)
# If you are using Python 3+, replace urllib2 with urllib.request in the above code:
# req = urllib.request.Request(url, body, headers)
# response = urllib.request.urlopen(req)
result = response.read()
print(result)
except urllib2.HTTPError, error:
print("The request failed with status code: " + str(error.code))
# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(json.loads(error.read()))
User Churn Predition을 수행하는 RRE를 수행하는 예제
python 폴더 하위의 ml-user-churn.py 파일 참조
import urllib2
# If you are using Python 3+, import urllib instead of urllib2
import json
data = {
"Inputs": {
"input1":
{
"ColumnNames": ["MemberID", "LastLoginDT", "Level", "Exps", "Points", "SumItemCount", "SumPurchasePrice", "ChurnYN"],
"Values": [ [ "value", "value", "0", "0", "0", "0", "0", "value" ], [ "value", "value", "0", "0", "0", "0", "0", "value" ], ]
}, },
"GlobalParameters": {
}
}
body = str.encode(json.dumps(data))
url = 'https://asiasoutheast.services.azureml.net/workspaces/<ML-API-URL>'
api_key = '<API-KEY>' # Replace this with the API key for the web service
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}
req = urllib2.Request(url, body, headers)
try:
response = urllib2.urlopen(req)
# If you are using Python 3+, replace urllib2 with urllib.request in the above code:
# req = urllib.request.Request(url, body, headers)
# response = urllib.request.urlopen(req)
result = response.read()
print(result)
except urllib2.HTTPError, error:
print("The request failed with status code: " + str(error.code))
# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(json.loads(error.read()))
EOF