使用amazon machine learning 創建智能應用程式
TRANSCRIPT
©2015, Amazon Web Services, Inc. 或其附屬公司。保留所有權利。
John Chang (張書源 )Technology Evangelist, Hong Kong & Taiwan, Amazon Web Services
2017年 3月 2 日
使用 Amazon Machine Learning 創建智能應用程式
贊助廠商
大綱
• 機器學習與資料生態系
• 智慧應用程式範例 ( 以及反例 )
• Amazon Machine Learning (Amazon ML) 特色與好處
• 使用 Amazon ML 開發智慧應用程式
• Q&A
§Build an entire analytics application to power your business§Scale Hadoop cluster to thousands of instances in minutes§Leverage powerful AWS compute instances using Intel technology
Big Data Spotlight: Analytics
以資料為導向的三種開發模式
回顧分析與報表
Amazon Redshift, Amazon RDS Amazon S3
Amazon EMR
以資料為導向的三種開發模式
回顧分析與報表
現況即時資料分析與儀表版
Amazon Kinesis Amazon EC2 AWS Lambda
Amazon Redshift, Amazon RDS Amazon S3
Amazon EMR
以資料為導向的三種開發模式
回顧分析與報表
現況即時資料分析與儀表版
預測產生智慧應用程式
Amazon Kinesis Amazon EC2 AWS Lambda
Amazon Redshift, Amazon RDS Amazon S3
Amazon EMR
機器學習與智能應用程式
機器學習是一種,自動尋找數據模式,並使用它們對可用的新數據進行預測的技術。
機器學習與智能應用程式
機器學習是一種,自動尋找數據模式,並使用它們對可用的新數據進行預測的技術。
資料 + 機器學習 = 智能應用程式
智能應用程式範例
根據您對使用者的了解:
他們會購買使用你的產品嗎?
智能應用程式範例
根據您對使用者的了解:
他們會購買使用你的產品嗎?
根據您對訂單的了解:
這是一張詐欺的交易嗎?
智能應用程式範例
根據您對使用者的了解:
他們會購買使用你的產品嗎?
根據您對訂單的了解:
這是一張詐欺的交易嗎?
根據您對於新聞文章的了解:
其他的文章有趣嗎?
其他應用範例 …
詐欺檢測 Detecting fraudulent transactions, filtering spam emails, flagging suspicious reviews,…
個人化 Recommending content, predictive content loading, improving user experience,…
精準行銷 Matching customers and offers, choosing marketing campaigns, cross-selling and up-selling,…
文章分類 Categorizing documents, matching hiring managers and resumes,…
客戶流失預測 Finding customers who are likely to stop using the service, upgrade targeting,…
客戶服務 Predictive routing of customer emails, social media listening,…
智能應用程式的反例
張先生您好,
這一個超讚的四軸飛行器正在促銷,只要台幣1500元就可以買到喔!
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
GROUP BY c.IDHAVING o.date > GETDATE() – 30
我們可以先向所有在過去30天內下過訂單的客戶發送優惠
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
GROUP BY c.IDHAVING O.CATEGORY = ‘TOYS’
AND o.date > GETDATE() – 30
...讓我們把它縮小到只有購買玩具的客戶
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN PRODUCTS PON P.ID = O.PRODUCT
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((P.DESCRIPTION LIKE ‘%HELICOPTER%’AND O.DATE > GETDATE() - 60)
OR (COUNT(*) > 2AND SUM(o.price) > 200AND o.date > GETDATE() – 30)
)
...並將查詢擴展到最近購買其他玩具直升機,或者買了幾次昂貴的玩具的客戶
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN products pON p.ID = o.product
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((p.description LIKE ‘%COPTER%’AND o.date > GETDATE() - 60)
OR (COUNT(*) > 2AND SUM(o.price) > 200AND o.date > GETDATE() – 30)
)
…但關於四軸飛行器呢?
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN products pON p.ID = o.product
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((p.description LIKE ‘%copter%’AND o.date > GETDATE() - 120)
OR (COUNT(*) > 2AND SUM(o.price) > 200AND o.date > GETDATE() – 30)
)
或許我們應該放寬一點時間 …
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN products pON p.ID = o.product
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((p.description LIKE ‘%copter%’AND o.date > GETDATE() - 120)
OR (COUNT(*) > 2AND SUM(o.price) > 200AND o.date > GETDATE() – 40)
)
…調整更多的查詢
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN products pON p.ID = o.product
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((p.description LIKE ‘%copter%’AND o.date > GETDATE() - 120)
OR (COUNT(*) > 2AND SUM(o.price) > 150AND o.date > GETDATE() – 40)
)
…再一次
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN products pON p.ID = o.product
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((p.description LIKE ‘%copter%’AND o.date > GETDATE() - 90)
OR (COUNT(*) > 2AND SUM(o.price) > 150AND o.date > GETDATE() – 40)
)
…一再的調整查詢
智能應用程式的反例
SELECT c.IDFROM customers c
LEFT JOIN orders oON c.ID = o.customer
LEFT JOIN products pON p.ID = o.product
GROUP BY c.IDHAVING o.category = ‘toys’
AND ((p.description LIKE ‘%copter%’AND o.date > GETDATE() - 90)
OR (COUNT(*) > 2AND SUM(o.price) > 150AND o.date > GETDATE() – 40)
)
應該使用機器學習從資料學習你所需要的商業規則!
為何沒有更多的智能應用程式?
1. 不容易找到機器學習專家.
2. 建置與展延機器學習技術很困難.
3. 縮短建置的模型與應用程式的差異是費時且高成本的事.
建置智能應用程式的現狀
專家 技術 操作面
資料科學家提供有限的支援
許多選擇,但缺乏主流 複雜和容易出錯的數據工作流
招聘或是外包都所費不貲
使用與展延困難 客製化平台與應用程式介面
每次做些改動就會導致修改解決方案
重塑模型生命週期管理循環
是否有更好的方法?
Amazon Machine Learning 一覽
• 簡單好用的受管機器學習服務,專為開發人員打造
• 健全、強大的機器學習技術,建置於Amazon 的內部系統上
• 利用您已儲存於 AWS 雲端中的資料來建立模型
• 在即短時間內即可從部署模型到完成上線
Introducing Amazon Machine Learning
Easy-to-use, managed machine learning service built for developers
Robust, powerful machine learning technology based on Amazon’s internal systems
Create models using your data already stored in the AWS cloud
Deploy models to production in seconds
易於使用以及對開發者友善
• 使用直觀,強大的服務主控台構建和探索您的初始模型• 數據檢索• 訓練模型,評估模型質量與微調模型• 佈署與管理
• 使用功能齊全的API和SDK自動執行模型生命週期• Java, Python, .NET, JavaScript, Ruby, PHP
• 使用AWS Mobile SDK輕鬆創建智能 iOS和Android應用程式
強大的機器學習技術
• 基於 Amazon 實務驗證的內部系統
• 不只是演算法:• 智能數據轉換• 輸入數據和模型質量警示• 內置行業最佳實踐
• 根據您的需求成長• 可訓練高達100 GB的數據• 生成數十億預測• 批量或即時獲取預測
與 AWS 數據生態系整合
• 存取儲存在Amazon S3,Amazon Redshift或Amazon RDS中MySQL數據庫的數據
• 輸出預測到Amazon S3,以方便與您的數據流整合
• 使用AWS身份和存取管理(IAM)實現細粒度數據存取權限策略
全受管的塑模與預測服務
• 端到端服務,不需要設置和管理伺服器
• 一鍵部署上線模型
• 以程式設計方式查詢模型中繼資料 (metadata) 啟用自動重新訓練工作流
• 使用Amazon CloudWatch指標監控預測使用模式
隨用即付而且價格便宜
資料分析, 訓練模型與評估: $0.42/instance hour
批次預測: $0.10/1000
即時預測: $0.10/1000+ hourly capacity reservation charge
支援三種預測類型
• Binary classification-- 預測是/否類型問題的答案
• Multiclass classification-- 從清單中預測正確的分類項目
• Regression-- 預測數值變數的值
訓練模型 評估與最佳化 取得預測結果
1 2 3
使用Amazon ML建立智能應用程式
訓練模型 評估與最佳化 取得預測結果
1 2 3
使用Amazon ML建立智能應用程式
- 建立指向您的數據的資料來源物件- 檢視並了解您的數據- 轉換數據並訓練您的模型
建立資料來源物件
>>> import boto
>>> ml = boto.connect_machinelearning()
>>> ds = ml.create_data_source_from_s3(
data_source_id = ’my_datasource',
data_spec = {
'DataLocationS3': 's3://bucket/input/data.csv',
'DataSchemaLocationS3': 's3://bucket/input/data.schema',
’compute_statistics’: True } )
探索並了解您的數據
訓練您的模型
>>> 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')
訓練模型 評估與最佳化 取得預測結果
1 2 3
機器學習與智能應用程式
- 測量並了解模型質量- 調整模特演繹
探索模型質量
微調模型演繹
微調模型演繹
訓練模型 評估與最佳化 取得預測結果
1 2 3
機器學習與智能應用程式
- 批次預測- 即時預測
批次預測
• 非同步產生大量預測結果
• 可以透過服務主控台或是 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/’)
即時預測
• 產生同步,低延遲,高吞吐量預測結果
• 可以通過服務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’
}
}
}
智能應用程式的架構模式
Get predictions with Amazon ML batch API
Process data with EMR
Raw data in S3 Aggregated data in S3
Predictions in S3 Your application
結合EMP做批次預測
Structured dataIn Amazon Redshift
Load predictions into Amazon Redshift
- or -Read prediction results
directly from S3
Predictions in S3
Get predictions with Amazon ML batch API
Your application
結合 Amazon Redshift 做批次預測
Your application
Get predictions with Amazon ML real-time API
Amazon ML service
針對互動式應用程式做即時的預測
Your application AmazonDynamoDB
+
Trigger events with Lambda+
Get predictions with Amazon ML real-time API
針對既有的資料流加入預測
推薦引擎
Amazon S3 Amazon Redshift
Amazon ML
Data Cleansing
Raw Data
Train model
Build Models
S3 Static Website
Predictions
AWS Facebook Taiwan Page
Q&A
http://aws.amazon.com/machine-learning
Remember to complete your evaluations!