使用Amazon Machine Learning 創建智能應用程式

55
©2015, Amazon Web Services, Inc. 或其附屬公司。保留所有權利。 John Chang ( 張書源 ) Technology Evangelist, Hong Kong & Taiwan, Amazon Web Services 2017 3 2 使用 Amazon Machine Learning 創建智能應用程式

Transcript of 使用Amazon Machine Learning 創建智能應用程式

Page 1: 使用Amazon Machine Learning 創建智能應用程式

©2015, Amazon Web Services, Inc. 或其附屬公司。保留所有權利。

John Chang (張書源 )Technology Evangelist, Hong Kong & Taiwan, Amazon Web Services

2017年 3月 2 日

使用 Amazon Machine Learning 創建智能應用程式

Page 2: 使用Amazon Machine Learning 創建智能應用程式

贊助廠商

Page 3: 使用Amazon Machine Learning 創建智能應用程式

大綱

• 機器學習與資料生態系

• 智慧應用程式範例 ( 以及反例 )

• Amazon Machine Learning (Amazon ML) 特色與好處

• 使用 Amazon ML 開發智慧應用程式

• Q&A

Page 4: 使用Amazon Machine Learning 創建智能應用程式

§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

Page 5: 使用Amazon Machine Learning 創建智能應用程式

以資料為導向的三種開發模式

回顧分析與報表

Amazon Redshift, Amazon RDS Amazon S3

Amazon EMR

Page 6: 使用Amazon Machine Learning 創建智能應用程式

以資料為導向的三種開發模式

回顧分析與報表

現況即時資料分析與儀表版

Amazon Kinesis Amazon EC2 AWS Lambda

Amazon Redshift, Amazon RDS Amazon S3

Amazon EMR

Page 7: 使用Amazon Machine Learning 創建智能應用程式

以資料為導向的三種開發模式

回顧分析與報表

現況即時資料分析與儀表版

預測產生智慧應用程式

Amazon Kinesis Amazon EC2 AWS Lambda

Amazon Redshift, Amazon RDS Amazon S3

Amazon EMR

Page 8: 使用Amazon Machine Learning 創建智能應用程式

機器學習與智能應用程式

機器學習是一種,自動尋找數據模式,並使用它們對可用的新數據進行預測的技術。

Page 9: 使用Amazon Machine Learning 創建智能應用程式

機器學習與智能應用程式

機器學習是一種,自動尋找數據模式,並使用它們對可用的新數據進行預測的技術。

資料 + 機器學習 = 智能應用程式

Page 10: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式範例

根據您對使用者的了解:

他們會購買使用你的產品嗎?

Page 11: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式範例

根據您對使用者的了解:

他們會購買使用你的產品嗎?

根據您對訂單的了解:

這是一張詐欺的交易嗎?

Page 12: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式範例

根據您對使用者的了解:

他們會購買使用你的產品嗎?

根據您對訂單的了解:

這是一張詐欺的交易嗎?

根據您對於新聞文章的了解:

其他的文章有趣嗎?

Page 13: 使用Amazon Machine Learning 創建智能應用程式

其他應用範例 …

詐欺檢測 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,…

Page 14: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

張先生您好,

這一個超讚的四軸飛行器正在促銷,只要台幣1500元就可以買到喔!

Page 15: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

SELECT c.IDFROM customers c

LEFT JOIN orders oON c.ID = o.customer

GROUP BY c.IDHAVING o.date > GETDATE() – 30

我們可以先向所有在過去30天內下過訂單的客戶發送優惠

Page 16: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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

...讓我們把它縮小到只有購買玩具的客戶

Page 17: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

...並將查詢擴展到最近購買其他玩具直升機,或者買了幾次昂貴的玩具的客戶

Page 18: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

…但關於四軸飛行器呢?

Page 19: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

或許我們應該放寬一點時間 …

Page 20: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

…調整更多的查詢

Page 21: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

…再一次

Page 22: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

…一再的調整查詢

Page 23: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的反例

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)

)

應該使用機器學習從資料學習你所需要的商業規則!

Page 24: 使用Amazon Machine Learning 創建智能應用程式

為何沒有更多的智能應用程式?

1. 不容易找到機器學習專家.

2. 建置與展延機器學習技術很困難.

3. 縮短建置的模型與應用程式的差異是費時且高成本的事.

Page 25: 使用Amazon Machine Learning 創建智能應用程式

建置智能應用程式的現狀

專家 技術 操作面

資料科學家提供有限的支援

許多選擇,但缺乏主流 複雜和容易出錯的數據工作流

招聘或是外包都所費不貲

使用與展延困難 客製化平台與應用程式介面

每次做些改動就會導致修改解決方案

重塑模型生命週期管理循環

Page 26: 使用Amazon Machine Learning 創建智能應用程式

是否有更好的方法?

Page 27: 使用Amazon Machine Learning 創建智能應用程式

Amazon Machine Learning 一覽

• 簡單好用的受管機器學習服務,專為開發人員打造

• 健全、強大的機器學習技術,建置於Amazon 的內部系統上

• 利用您已儲存於 AWS 雲端中的資料來建立模型

• 在即短時間內即可從部署模型到完成上線

Page 28: 使用Amazon Machine Learning 創建智能應用程式

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

Page 29: 使用Amazon Machine Learning 創建智能應用程式

易於使用以及對開發者友善

• 使用直觀,強大的服務主控台構建和探索您的初始模型• 數據檢索• 訓練模型,評估模型質量與微調模型• 佈署與管理

• 使用功能齊全的API和SDK自動執行模型生命週期• Java, Python, .NET, JavaScript, Ruby, PHP

• 使用AWS Mobile SDK輕鬆創建智能 iOS和Android應用程式

Page 30: 使用Amazon Machine Learning 創建智能應用程式

強大的機器學習技術

• 基於 Amazon 實務驗證的內部系統

• 不只是演算法:• 智能數據轉換• 輸入數據和模型質量警示• 內置行業最佳實踐

• 根據您的需求成長• 可訓練高達100 GB的數據• 生成數十億預測• 批量或即時獲取預測

Page 31: 使用Amazon Machine Learning 創建智能應用程式

與 AWS 數據生態系整合

• 存取儲存在Amazon S3,Amazon Redshift或Amazon RDS中MySQL數據庫的數據

• 輸出預測到Amazon S3,以方便與您的數據流整合

• 使用AWS身份和存取管理(IAM)實現細粒度數據存取權限策略

Page 32: 使用Amazon Machine Learning 創建智能應用程式

全受管的塑模與預測服務

• 端到端服務,不需要設置和管理伺服器

• 一鍵部署上線模型

• 以程式設計方式查詢模型中繼資料 (metadata) 啟用自動重新訓練工作流

• 使用Amazon CloudWatch指標監控預測使用模式

Page 33: 使用Amazon Machine Learning 創建智能應用程式

隨用即付而且價格便宜

資料分析, 訓練模型與評估: $0.42/instance hour

批次預測: $0.10/1000

即時預測: $0.10/1000+ hourly capacity reservation charge

Page 34: 使用Amazon Machine Learning 創建智能應用程式

支援三種預測類型

• Binary classification-- 預測是/否類型問題的答案

• Multiclass classification-- 從清單中預測正確的分類項目

• Regression-- 預測數值變數的值

Page 35: 使用Amazon Machine Learning 創建智能應用程式

訓練模型 評估與最佳化 取得預測結果

1 2 3

使用Amazon ML建立智能應用程式

Page 36: 使用Amazon Machine Learning 創建智能應用程式

訓練模型 評估與最佳化 取得預測結果

1 2 3

使用Amazon ML建立智能應用程式

- 建立指向您的數據的資料來源物件- 檢視並了解您的數據- 轉換數據並訓練您的模型

Page 37: 使用Amazon Machine Learning 創建智能應用程式

建立資料來源物件

>>> 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 } )

Page 38: 使用Amazon Machine Learning 創建智能應用程式

探索並了解您的數據

Page 39: 使用Amazon Machine Learning 創建智能應用程式

訓練您的模型

>>> 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')

Page 40: 使用Amazon Machine Learning 創建智能應用程式

訓練模型 評估與最佳化 取得預測結果

1 2 3

機器學習與智能應用程式

- 測量並了解模型質量- 調整模特演繹

Page 41: 使用Amazon Machine Learning 創建智能應用程式

探索模型質量

Page 42: 使用Amazon Machine Learning 創建智能應用程式

微調模型演繹

Page 43: 使用Amazon Machine Learning 創建智能應用程式

微調模型演繹

Page 44: 使用Amazon Machine Learning 創建智能應用程式

訓練模型 評估與最佳化 取得預測結果

1 2 3

機器學習與智能應用程式

- 批次預測- 即時預測

Page 45: 使用Amazon Machine Learning 創建智能應用程式

批次預測

• 非同步產生大量預測結果

• 可以透過服務主控台或是 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/’)

Page 46: 使用Amazon Machine Learning 創建智能應用程式

即時預測

• 產生同步,低延遲,高吞吐量預測結果

• 可以通過服務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’

}

}

}

Page 47: 使用Amazon Machine Learning 創建智能應用程式

智能應用程式的架構模式

Page 48: 使用Amazon Machine Learning 創建智能應用程式

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做批次預測

Page 49: 使用Amazon Machine Learning 創建智能應用程式

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 做批次預測

Page 50: 使用Amazon Machine Learning 創建智能應用程式

Your application

Get predictions with Amazon ML real-time API

Amazon ML service

針對互動式應用程式做即時的預測

Page 51: 使用Amazon Machine Learning 創建智能應用程式

Your application AmazonDynamoDB

+

Trigger events with Lambda+

Get predictions with Amazon ML real-time API

針對既有的資料流加入預測

Page 52: 使用Amazon Machine Learning 創建智能應用程式

推薦引擎

Amazon S3 Amazon Redshift

Amazon ML

Data Cleansing

Raw Data

Train model

Build Models

S3 Static Website

Predictions

Page 53: 使用Amazon Machine Learning 創建智能應用程式

AWS Facebook Taiwan Page

Page 54: 使用Amazon Machine Learning 創建智能應用程式

Q&A

http://aws.amazon.com/machine-learning

Page 55: 使用Amazon Machine Learning 創建智能應用程式

Remember to complete your evaluations!