使用 Amazon Machine Learning 與 Cloud9 建立推薦引擎
前言
機器學習是一種實現人工智能的方法,使用大量數據來訓練計算機學習一套規則,同時使用歷史數據來預測特定的未來數據。機器學習可以分為兩類:監督式學習,非監督式學習 和 強化學習,而監督學習從標記的訓練數據中推斷出一個功能,該訓練數據由一組訓練集組成,如分類和回歸,而無監督學習則從測試數據中學習。非監督式學習則常用於分群和降低維度。構建機器學習模型需要數據清理、特徵提取、模型選擇,而這些步驟往往耗時費力。
Amazon Machine Learning 提供視覺化工具和精靈,引導使用者完成建立機器學習 (ML) 模型的程序,且無須學習複雜的 ML 演算法和技術。模型準備好後,Amazon Machine Learning 就能讓您輕鬆使用簡單的 API 取得應用程式的預測,無須實作自訂的預測產生碼或管理任何基礎設施。
情境
在本實驗中,您將使用 Amazon S3、Amazon Machine Learning和Amazon Cloud9 構建預測租賃自行車數量預測解決方案,以預測 Capital 自行車共享系統的租賃自行車。 該數據集包含 Capital 自行車共享系統中2011年至2012年間每日租賃自行車的數量,以及相應的天氣和季節信息。 您將學習如何使用S3保存數據並預測使用機器學習來創建預測租賃自行車的模型。
步驟
首先,我們會先建立 S3 Bucket 以存放租賃自行車資料集,跟著以下步驟建立 S3 Bucket。
-
在 Service 選單中, 點選 S3, 然後選擇 Create Bucket 建立新的儲存桶.
-
在 Bucket Name 欄位中, 輸入 獨特 的名稱.
-
在 Region 欄位中, 選擇 US East (N. Virginia), 並點選 Create 建立.
-
選擇剛創建的 S3 Bucket, 點選 Upload 上傳檔案, 選擇 Add files 加入檔案.
-
選取 bike.csv 然後選擇 Start Upload 進行上傳.
利用 Amazon Machine Learning 建立模型
在此我們將建立租賃自行車模型,在資料集部分將選擇 S3 作為資料來源,而我們會使用 season,mnth, weekday, workingday, weathersit 作為訓練欄位,而 cnt 則為預測欄位. 最後我們將建立即時預測端點已進行即時預測並取得預測結果。
-
在 Service 選單, 點選 Machine Learning 服務, 選擇 Get Started 並 Launch.
-
在 Where is your data 欄位中, 請選擇 S3 作為資料來源.
-
在 S3 location 欄位, 輸入 s3 的
Bucket name/檔名
. -
在 Datasource name 欄位, 請輸入
ml‐data
, 並點選 Verify.
- 在 S3 permissions 視窗中, 點選 yes 確認 Machine Learning 服務可以存取 S3.
Note: 你將會看到 ‘The validation is successful. To go to the next step, choose Continue’
- 在 Schema 部分:
- 在 Does the first line in your CSV contain the column names? 中選擇 yes 使用第一列作為欄位名稱。
- 在 Datatype 欄位中, 分別在 season/mnth/weekday/workingday/weathersit 選擇 Categorical 作為資料型態,而 cnt 則選擇 Numetric.
-
在 Target 部分,選擇 cnt 作為預測欄位。
-
在 Row ID ,Review ,ML model settings 部分使用預設即可,之後點選 Review.
-
在 Review 部分,
- 選擇 Create ML Model 建立模型.
- 等待 Amazon ML 的 status 變成 Completed 狀態,然後記錄你的 model ID。
-
在 Predictions 部分, 點選 Create endpoint 建立即時預測端點。 當 Create a real-time endpoint 視窗跳出,點選 Create 建立.
-
紀錄即時預測的 Endpoint Url.
在 Cloud9 建立網頁測試自行車租賃模型
我們將使用 AWS Cloud9 服務開發網頁. 網頁將引入 AWS SDK for PHP 使 Amazon Machine Learning 服務整合至應用程式並建立即時預測。
AWS Cloud9 是一種雲端整合開發環境 (IDE),您只需要一個瀏覽器便能撰寫、執行和偵錯程式碼。它包括一個程式碼編輯器、偵錯程序和終端機。Cloud9 已預先封裝常用的程式設計語言 (包括 JavaScript、Python、PHP 等) 基本工具,因此不需要安裝檔案或設定開發機器就能直接開始新的專案。
-
點選 Service 選單, 點選 Cloud9 並選擇 Create environment 建立環境.
-
在對話視窗中,輸入以下資訊:
- Name :
test-ml-model
- Describe :
use to test AWS ML
- Name :
-
在 Environment settings 部分:
- Environment type : 選擇 Create a new instance for environment (EC2).
- Instance type : 選擇 t2.micro (1 GiB RAM + 1 vCPU).
-
在 Review 頁面,選擇 Create environment 建立環境.
Note : 請下載此教學中的 Web 資料夾.
-
在導覽列中選擇 File 並點選 Select folder 上傳 Web 資料夾.
-
複製以下指令以進行套件更新。
sudo yum -y update
-
輸入以下指令切換目錄至 Web 資料夾.
cd Web
-
輸入以下指令安裝 Composer 套件。
curl -sS https://getcomposer.org/installer | php
-
在 Terminal 輸入以下指令已安裝 AWS 的 PHP SDK。
php composer.phar require aws/aws-sdk-php
-
Open the regression.php in console。
-
在 118 與 119 行, 貼上你所建立模型的 id 與即時預測的 endpoint 。
-
在 164 行, 貼上你所建立模型的 id 。
-
在導覽列點選 Run 並選擇 Run Configurations 設定運行配置。
-
選擇 New Run Configuration 建立新的配置。
-
在 Command 欄位輸入以下資訊 :
Web/regression.php
-
在 Runner 部分選擇 PHP (built-in web server) 並選擇綠色按鈕的 Run。
-
在導覽列選擇 Review 並點選 Preview Running Application 預覽應用程式,你將會看到以下頁面。
-
在 / 後加入以下路徑,你將會看到以下頁面。
Web/regression.php
-
選擇 Predict,你將會看到以下預測結果。
結論
現在,您已經使用AWS Machine Learning創建了自行車租賃數量的預測模型,並使用Cloud9進行了測試,同時創建即時端點以將其添加到php頁面以進行即時預測。
AWS Machine Learning還可以用於其他場景,例如垃圾郵件分類,文本情感分析,新聞分類,電影推薦引擎等。它確實減少了人工成本和構建時間,培訓模型。
機器學習是現今趨勢,如果您沒有任何機器學習經驗,可以從AWS Machine Learning 開始你的機器學習之路。