Amazon Web Service

資料分析 Machine Learning (5)

教學目標

初步了解如何透過 Amazon Machine Learning 線上服務建立第一個機器學習實驗,此篇主要為學習筆記。

重點概念

機器學習主為為自動從我們的資料中找出模式和使用它們對於新的資料進行可用預測的技術,因此我們的資料搭配機器學習理應能夠建立智慧的應用程式,此外在企業實務應用中有許多商業邏輯與規則,此外使用機器學習的技術將可以自動從資料中學習商業邏輯與規則。但是若我們已經有資料和應用程式,要如何以現有的資料整合機器學習的技術,將應用程式轉變為智慧的應用程式,此時就能夠使用 Amazon Machine Learning 雲端服務,簡單三個階段就能夠建立智慧的應用程式,分別為:

  1. 訓練模型。
  2. 評估和優化。
  3. 取得預測結果。

所謂 Amazon Machine Learning 雲端服務主要是讓開發人員輕鬆使用機器學習技術,主要透過視覺化工具和精靈,引導我們完成機器學習模型的建立流程,並且無須學習複雜的機器學習演算法和技術,Amazon Machine Learning 雲端服務採用的機器學習技術經過驗證並且能夠高度擴展,透過從現有資料的模式建立機器學習模型,然後再使用機器學習模型處理新的資料,以利為應用程式產生預測結果,目前常見的機器學習實用案例,只要藉由二元或多元分類機器學習演算法就能達到貫務應用,主要有六項,分別為:

  1. 詐騙偵測: 協助客戶識別出潛在的詐騙交易,或者偵測詐騙行為。
  2. 客戶流失率預測: 協助客戶找出可能流失的高風險客戶,透過促銷的方式積極與客戶接觸,或者擴展客戶的服務範圍。
  3. 文件分類: 協助客戶處理非結構化的文字,並且根據內容採取相關的行動。
  4. 內容個人化: 協助客戶根據過往使用者的行為推薦產品,或者優化網站流程,以利網提供更完善的個人化客戶體驗。
  5. 改善客戶支援: 協助客戶處理任何形式的意見回饋,然後安排合適的客戶支援專家聯繫溝通。
  6. 目標性的行銷活動: 協助客戶根據過往使用者的活動,為目標客戶選擇最具相關性的行銷活動。

接著在開始使用 Amazon Machine Learning 雲端服務之前,要先了解下述五個關鍵概念,分別為:

  1. 資料來源: 主要包括輸入資料相關的中繼資料。
  2. 機器學習模型: 主要從輸入資料。
  3. 評估: 主要是評測機器學習模型的品質。
  4. 批次非同步預測: 主要是預測多個輸入的觀察資料。
  5. 即時同步預測: 主要是預測單獨輸入的觀察資料。

事實上五個關鍵概念對應至建立智慧的應用程式的三個階段,分別為

  1. 訓練模型: 建立資料來源物件指向我們的資料,接著探索和了解我們的資料,以及轉換資料和訓練機器學習模型。
  2. 評估和優化: 了解模型品質,以及調整對於模型的解釋。
  3. 取得預測結果: 可以分為批次非同步預測和即時同步預測。

再來我們試著使用 Amazon Machine Learning 雲端服務建立第一個機器學習實驗,主要應用為識別目標性行銷活動的潛在客戶,資料內容來自於 University of California at Irvine (UCI) 機器學習儲存庫有關銀行與行銷的資料集,主要內容包括客戶基本資訊和之前與行動活動的互動情況。

首先請下載相關檔案的兩個檔案 banking.csvbanking-batch.csv ,並且上傳兩個檔案至 Amazon S3 雲端儲存空間中機器學習專屬的 Bucket 中。


檔案上傳完成之後,點選 banking.csv 檔案查看相關路徑。

開啟 Amazon Machine Learning 雲端服務主控台,按下「Get started」,再按下「Launch」鈕。


在「S3 location」輸入 banking.csv 檔案的路徑 ,並且按下「Verify」鈕驗證資料。

若 banking.csv 檔案未授權,請按下「Yes」鈕允許 banking.csv 檔案授權存取。

確認資料無誤之後,請按下「Continue」鈕。

針對「Does the first line in your CSV contain the column names?」請勾選「Yes」。

點選「Name」欄位進行排序,確認欄位類型無誤之後,按下「Continue」鈕。

勾選「y」欄位設定為目標。

按下「Review」鈕,再按下「Continue」鈕。


選擇「Default (Recommended)」預設為二元分類演算法,再按下「Review」鈕。

按下「Create ML model」鈕。

此時將會開始建立機器學習模型,狀態為「Pending」。

當建立機器學習模型完成時,則狀態為「Completed」。

點選摘要報告下方「Latest evaluation result」中的 AUC 評分結果。

點選「Adjust score threshold」鈕調整門檻值,以利修正機器學習模型,例如: 當預設門檻值為 0.5 時,則機器學習模型準確率為 0.9111,但是將門檻值為 0.58 時,則機器學習模型準確率提高為 0.9122,接著按下「Save score threshold at 0.58」鈕。


點選左上方的「Amazon Machine Learning」下拉選單中的「Batch Preditions」項目。

按下「Create new batch predictions」鈕。

點選剛建立完成的機器學習模型「ML model: Banking.csv」。

按下「Continue」鈕。

勾選「My data is in S3, and I need to create a datasource」選項,接著輸入「Datasource name」為「Banking Data Batch Predictions」,再來在「S3 location」輸入 banking-batch.csv 檔案的路徑,以及針對「Does the first line in your CSV contain the column names?」勾選「Yes」,最後按下「Verify」鈕,若 banking-batch.csv 檔案未授權,請按下「Yes」鈕允許 banking-batch.csv 檔案授權存取。

按下「Continue」鈕。

在「S3 location」輸入儲存機器學習模型預測結果的路徑,按下「Review」鈕,若儲存機器學習模型預測結果的路徑未授權,請按下「Yes」鈕允許儲存機器學習模型預測結果的路徑授權存取。

按下「Create batch prediction」鈕。

此時將會開始透過機器學習模型建立批次預測,狀態為「Pending」。

當建立批次預測完成時,則狀態為「Completed」。

此時切換至 Amazon S3 主控台中儲存機器學習模型預測結果的路徑下的資料夾「batch-prediction」->「result」,即可找到壓縮的結果檔案。

解壓縮之後開啟該 csv 結果檔案即可查看預測的結果。

此外我們也可以嘗試即時預測的功能。

點選「Paste a record」鈕,接著輸入下述資料記錄,再按下「Submit」鈕。

1
32,services,divorced,basic.9y,no,unknown,yes,cellular,dec,mon,110,1,11,0,nonexistent,-1.8,94.465,-36.1,0.883,5228.1

按下「Create prediction」鈕。

此時概據資料記錄即時預測的結果就會以 JSON 資料格式返回,其中預測分數為 0.042389288544654846。

最後按下「Create endpoint」鈕,再按下「Create」鈕。

當即時端點建立完成之後,就能透過 API 的方式進行即時預測的請求。

最後結論是我們只要透過 Amazon Machine Learning 線上服務搭配 Amazon S3 儲存空間線上服務,就能直接進行機器學習的實驗,並且產生評分與驗證模型的結果,主要預設為 AUC 評估分類演算法成效如何,若成效不理想時則我們直接針對分類演算法的機器學習模組進行門檻值等參數調整,以利改善模型,此外還能夠透過設定的方式直接處理批次和即時資料的預測結果,更進一步建立即時端點能夠讓應用程式透過 API 的方式存取預測的結果進行更智慧的應用解決企業所面臨的問題。

相關資源

雲端服務 Push Notification (1)

基本介紹

教學目標

了解各家雲端公司所提供推播服務的功能與費率,以及自建推播通知的服務需要處理的項目。

重點概念

免費方案

雲端公司 Facebook IBM Microsoft Amazon
推播服務 Parse Push Push for Bluemix Azure Notification Hubs Simple Notification Service
每月推播則數 100 萬 100 萬 100 萬 100 萬
每次推播則數 N/A N/A 10 萬 N/A

管理功能

雲端公司 Facebook IBM Microsoft Amazon
推播服務 Parse Push Push for Bluemix Azure Notification Hubs Simple Notification Service
群組功能 有 ( 頻道 ) 有 ( 標籤 ) 有 ( 標籤 ) 有 ( 主題 )
進階條件 N/A N/A N/A
排程推播管理 N/A 有 ( $200 / 月 ) N/A
註冊查詢 N/A 有 ( $200 / 月 )
A/B 測試 N/A N/A 有 ( A/B 測試服務 )

超額付費

雲端公司 Facebook IBM Microsoft Amazon
推播服務 Parse Push Push for Bluemix Azure Notification Hubs Simple Notification Service
萬則推播計價 $0.5 $0.2 $0.01 $0.005

(註: 以上相關資料截至 2014 年 10 月。)

自建服務

自建推播通知的服務需要處理的項目。

  1. 儲存裝置推播識別碼的服務。
  2. 排程推播條件篩選管理的服務。
  3. 提供推播訊息至對應推播伺服器的服務。
    (註: 篩選目標裝置進行即時推播將會是效能處理最主要的瓶頸。)

至於推播服務架構規劃可以參考 「Orchestrating iOS Push Notifications on Google Cloud Platform」 文章。

相關資源

雲端服務 Amazon Web Service (2)

基本介紹

教學目標

學會如何根據大數據處理階段,選擇最適合的 Amazon 雲端服務。

重點概念

Big Data Portfolio of Services

在大數據處理的階段根據下表,就能在篩選出最適合的 Amazon 雲端服務。

處理階段 雲端服務
收集 AWS Direct Connect、AWS Import/Export、Amazon Kinesis
儲存 Amazon S3、Amazon DynamoDB、Amazon Glacier
處理 & 分析 Amazon Redshift 、Amazon EMR、Amazon EC2

(參考資源: AWS re:Invent 2014 | (BDT303) Construct ETL Pipeline w/ AWS Data Pipeline, Amazon EMR & Redshift )

Batch Processing

Amazon EMR 雲端服務搭配 Apache Mahout 開源專案進行資料分析處理。

Amazon EMR 雲端服務搭配 Apache Spark 開源專案進行資料分析處理。

Real-time Processing

Amazon Kinesis 雲端服務搭配 Amazon Redshift 雲端服務進行資料分析處理。

Amazon Kinesis 雲端服務搭配 Storm 開源專案進行資料分析處理。

相關資源

雲端服務 Amazon Web Service (1)

基本介紹

教學目標

學會如何根據不同的需求選擇 Amazon Web Service 中最適合的資料儲存服務。

重點概念

針對需求根據下表的不同項目進行評估,就能在初期篩選出最適合的資料儲存服務。

DynamoDB RDS Redshift EMR S3 Elasitc Cahche Glacier
平均延遲 毫秒 毫秒、秒 秒、分鐘 秒、分鐘、小時 毫秒、秒、分鐘 毫秒 小時
資料大小 GB ~ TBs GB ~ TB (3TB) TB ~ PB (1.6PB) GB ~ PB GB ~ PB GB GB ~ PB
項目大小 KB (64KB) KB KB (64KB) KB ~ MB KB ~ GB B ~ KB GB
結構
請求率 低 ~ 高
持久性 低 ~ 中
儲存成本

(參考資源: AWS re:Invent 2014 | (BDT310) Big Data Architectural Patterns and Best Practices on AWS )

相關資源