自動建立機器學習模型

入門指南

概觀

在本教學中,您將了解如何使用 Amazon SageMaker Autopilot 自動建立、訓練、調整機器學習 (ML) 模型,並部署該模型以產生預測。
 

Amazon SageMaker Autopilot 能消除建置 ML 模型的繁瑣作業,協助您根據資料來自動建置、培訓和調整最佳 ML 模型。藉助 SageMaker Autopilot,您只需提供一個表格資料集,並選取要預測的目標欄。SageMaker Autopilot 會探索您的資料,選取與您的問題類型相關的演算法,準備用於訓練的資料,測試各種模型,並選取效能最佳的模型。然後,您可以部署其中一個候選模型,或進一步對它們進行迭代,以最佳化預測的品質。

您將學到的內容

在本指南中,您將:

  • 使用 SageMaker Autopilot 建立訓練實驗
  • 探索訓練實驗的不同階段
  • 從訓練實驗找出效能最佳的模型並進行部署
  • 使用部署的模型進行預測

先決條件

在開始本指南之前,您需要具備:

  • AWS 帳戶:如果您還沒有,請按照設定您的環境快速入門指南進行操作。

 AWS 經驗

初階

 完成時間

45 分鐘

 完成成本

請參閱 SageMaker 定價以估算本教學的成本。

 要求

您必須登入 AWS 帳戶。

 使用的服務

Amazon SageMaker Autopilot

 上次更新日期

2022 年 7 月 12 日

使用案例

針對此工作流程,您將使用綜合產生的汽車保險索賠資料集。原始輸入是兩個保險資料表:一個索賠表和一個客戶表。索賠表有一個 fraud (詐騙) 欄,表明索賠是否為詐騙性。在本教學中,我們僅選取資料集的一小部分。不過,您可以使用本教學中的步驟來處理大型資料集。

 

步驟 1:設定 Amazon SageMaker Studio 網域

每個 AWS 帳戶在每個 AWS 區域只能擁有一個 SageMaker Studio 網域。如果您在美國東部 (維吉尼亞北部) 區域已有 SageMaker Studio 網域,請按照 SageMaker Studio 設定指南將所需的 AWS IAM 政策連接到您的 SageMaker Studio 帳戶,然後略過步驟 1,並直接進行步驟 2。 

如果您沒有現有的 SageMaker Studio 網域,請繼續進行步驟 1 以執行 AWS CloudFormation 範本,該範本將建立 SageMaker Studio 網域,並新增本教學其餘部分所需的許可。

選擇 AWS CloudFormation 堆疊連結。此連結將開啟 AWS CloudFormation 主控台,並建立您的 SageMaker Studio 網域和名為 studio-user 的使用者。它還會向您的 SageMaker Studio 帳戶新增所需的許可。在 CloudFormation 主控台中,確認右上角顯示的 Region (區域) 是 US East (N. Virginia) (美國東部 (維吉尼亞北部))。Stack name (堆疊名稱) 應為 CFN-SM-IM-Lambda-Catalog,且不應變更。此堆疊大約需要 10 分鐘來建立所有資源。

此堆疊假定您已經在您的帳戶中設定了公有 VPC。如果您沒有公有 VPC,請參閱具有單一公有子網路的 VPC,了解如何建立公有 VPC。

選取 I acknowledge that AWS CloudFormation might create IAM resources (我認知 AWS CloudFormation 可能會建立 IAM 資源),然後選擇 Create stack (建立堆疊)。

CloudFormation 窗格中,選擇 Stacks (堆疊)。建立該堆疊後,堆疊的狀態應從 CREATE_IN_PROGRESS 變更為 CREATE_COMPLETE

在 CloudFormation 主控台搜尋列中輸入 SageMaker Studio,然後選擇 SageMaker Studio

從 SageMaker 主控台右上角的 Region (區域) 下拉式清單中選擇 US East (N. Virginia) (美國東部 (維吉尼亞北部))。對於 Launch app (啟動應用程式),選取 Studio 以開啟 SageMaker Studio 並使用 studio-user 設定檔。
 

步驟 2:開始新的 SageMaker Autopilot 實驗

開發與測試大量候選模型是機器學習 (ML) 專案的關鍵。Amazon SageMaker Autopilot 透過提供不同的候選模型並根據您的資料自動選擇最佳模型,為您提供協助。在此步驟中,您將設定 SageMaker Autopilot 實驗以預測某金融服務行銷活動是否成功。此資料集代表的是,某大型金融服務機構為推廣定期存單而開展的一次行銷活動。

若要開始新的 SageMaker Autopilot 實驗,按一下 + 圖示以存取新的啟動器視窗。在啟動器視窗中,向下捲動到 ML tasks and components (ML 任務和元件)。按一下 + 圖示,以新增 Autopilot 實驗

接下來,對實驗進行命名。按一下 Experiment name (實驗名稱) 方塊並輸入名稱 autopilot-experiment

 

然後,將實驗與暫存在 S3 中的資料關聯起來。按一下 Enter S3 bucket location (輸入 S3 儲存貯體位置) 方塊。在 S3 bucket address (S3 儲存貯體地址) 方塊中,貼上以下 S3 路徑:s3://sagemaker-sample-files/datasets/tabular/uci_bank_marketing/bank-additional-full.csv

保留清單檔案選項設定為 Off (關)。在 Target (目標) 下拉式清單中,選取 y 作為目標特徵,我們的模型嘗試預測的便是該特徵。

Output data location (S3 bucket) (輸出資料位置 (S3 儲存貯體)) 資料表中,選擇您自己的 S3 儲存貯體。在 Dataset directory name (資料集目錄名稱) 欄位中,輸入 sagemaker/tutorial-autopilot/output。這是實驗完成後儲存輸出資料的位置。

保持 Auto deploy (自動部署) 選項為開啟,而 Auto deploy endpoint (自動部署端點) 欄位為空。這樣會自動將模型部署為 API 端點,並為它指派名稱。

接下來會有一些選用的進階設定,它們控制著問題類型的詳細資訊、完成實驗、執行時間詳細資訊、IAM 存取、安全性和加密等。按一下 runtime button (執行時間按鈕) 以顯示選用設定。

在本教學中,將 Max candidates (最大候選數量) 從 250 減少到 5。這樣將會以更快速度執行較少模型。完整實驗是真正最佳化模型的最佳方法,但可能需要幾個小時才能完成。本教學將保留原來的選用設定。

按一下 Create Experiment (建立實驗) 按鈕,以開始啟動 SageMaker Autopilot 實驗的第一個階段。SageMaker Autopilot 將開始執行實驗的各個階段。在實驗視窗中,您可以追蹤預處理、候選定義、特徵工程、模型調整、可解釋性和洞察階段的進度。

按一下 Create Experiment (建立實驗) 按鈕,以開始啟動 SageMaker Autopilot 實驗的第一個階段。SageMaker Autopilot 將開始執行實驗的各個階段。在實驗視窗中,您可以追蹤預處理、候選定義、特徵工程、模型調整、可解釋性和洞察階段的進度。如果您看到快顯通知,詢問 "Are you sure you want to deploy the best model?" (您確定想要部署最佳模型嗎?),按一下 yes (是)。

一旦 SageMaker Autopilot 任務完成,您將可以存取報告,其中顯示候選模型、候選模型狀態、目標值、F1 分數和準確率。SageMaker Autopilot 將自動部署端點。

步驟 3:解讀模型效能

現在實驗已完成,並且您得到了一個模型,下一步是解讀其效能。您將了解如何使用 SageMaker Autopilot 來分析模型的效能。

在 SageMaker Autopilot 實驗完成後,您可以開啟排名最高的模型,以取得有關模型效能和中繼資料的更多詳細資訊。在模型清單中,突出顯示第一個,然後以滑鼠右鍵按一下以開啟模型選項。按一下 Open in model details (在模型詳細資訊中開啟),檢視模型的效能統計資料。

在新視窗中,按一下 Explainability (可解釋性)。您看到的第一個檢視名稱為 Feature Importance (特徵重要性),它表示資料集中每個實例每項特徵的彙總 SHAP 值。特徵重要性分數是模型可解釋性的重要組成部分,因為它顯示資料集中的哪些特徵有可能對預測產生重大影響。在此使用案例中,客戶時長或存續時間和就業變化率是最佳化模型結果的兩個最重要的欄位。

現在,按一下 Performance (效能) 標籤。您將看到有關模型效能的詳細資訊,包括準確率、精確率和召回率。您還可以解讀模型效能,確定是否應進一步調整模型。

接下來,會有視覺化進一步說明模型效能。首先,觀察混淆矩陣。混淆矩陣常被用於理解模型標籤在預測和真實分類中的分佈。在此例中,對角元素顯示正確預測標籤的數量,非對角元素則表示誤分類記錄。混淆矩陣適用於分析因假正例和假負例而導致的誤分類。

然後,查看精確率和召回率曲線。該曲線將標籤解釋為機率閾值,並將權衡顯示為模型精確率和召回率的不同機率閾值。SageMaker Autopilot 會自動最佳化這兩項參數,以提供最佳的模型。

接下來,查看被標記為接受者操作特徵 (ROC) 的曲線。該曲線顯示各種潛在機率閾值的真正率和假正率之間的關係。對角線表示以隨機猜測為基礎的假設模型。曲線越趨向圖表的左上角,則該模型的效能越出色。

虛線則表示預測值為 0 的模型,它常被稱作虛無模型。虛無模型會隨機指派 0/1 標籤,其位於 ROC 曲線下方的面積為 0.5,代表它在 50% 的時間裏是準確的。

然後,按一下 Artifacts (成品) 標籤。您可以找到支援 SageMaker Autopilot 實驗的資產,包括特徵工程程式碼、輸入資料位置,以及可解釋性成品等。

最後,按一下 Network (網路) 標籤。您將看到有關網路隔離和容器流量加密的資訊。

步驟 4:測試 SageMaker 模型端點

在檢視模型的詳細資訊後,現在對端點進行測試。

按一下 + 圖示以顯示新的 Python 筆記本。選取 Python3 作為核心。在第一個儲存格中,複製並貼上以下程式碼。此程式碼將建立承載,提交請求到模型端點,並解析回應。

為了解將請求傳送到的位置,您需要查詢模型端點的名稱。在左側窗格中,按一下 SageMaker Resources (SageMaker 資源) 圖示。在 SageMaker Resources (SageMaker 資源) 窗格中,選取 Endpoints (端點)。按一下與您在開始本教學時所建立的實驗名稱關聯的端點。此時將顯示 Endpoint Details (端點詳細資訊) 視窗。記錄端點名稱並導覽返回至 Python 3 筆記本。

複製並貼上以下程式碼片段到筆記本的儲存格中,然後按 Shift+Enter 以執行當前儲存格。此程式碼將設定環境變數 ENDPOINT_NAME 並執行推論。在程式碼執行完畢後,您將看到由模型標籤和關聯機率分數組成的結果。
import os
import io
import boto3
import json
import csv

#: Define the endpoint's name.
ENDPOINT_NAME = 'autopilot-experiment-6d00f17b55464fc49c45d74362f284ce'
runtime = boto3.client('runtime.sagemaker')

#: Define a test payload to send to your endpoint.
payload = {
    "data":{
        "features": {
            "values": [45,"blue-collar","married","basic.9y",'unknown',"yes","no","telephone","may","mon",461,1,999,0,"nonexistent",1.1,93.994,-36.4,4.857,5191.0]
        }
    }
}

#: Submit an API request and capture the response object.
response = runtime.invoke_endpoint(
    EndpointName=ENDPOINT_NAME,
    ContentType='text/csv',
    Body=str(payload)
)

#: Print the model endpoint's output.
print(response['Body'].read().decode())

恭喜您! 您已了解如何使用 SageMaker Autopilot 來自動訓練與部署機器學習模型。

步驟 5:清除您的 AWS 資源

最佳實務是刪除不再使用的資源,以免產生意外費用。

如果您在步驟 1 中執行 CloudFormation 範本來建立新的 SageMaker Studio 網域,請繼續執行下列步驟以刪除由 CloudFormation 範本建立的網域、使用者和資源。

若要開啟 CloudFormation 主控台,請在 AWS Console 搜尋列中輸入 CloudFormation,然後從搜尋結果中選擇 CloudFormation

在 CloudFormation 窗格中,選擇 Stacks (堆疊)。從狀態下拉式清單中,選取 Active (作用中)。在 Stack name (堆疊名稱) 下,選擇 CFN-SM-IM-Lambda-Catalog 開啟堆疊詳細資訊頁面。

CFN-SM-IM-Lambda-Catalog 堆疊詳細資訊頁面上,選擇 Delete (刪除) 以刪除在步驟 1 中建立的堆疊及資源。

結論

恭喜您! 您已完成自動建立機器學習模型教學。

您成功利用 SageMaker Autopilot 自動建置、訓練與調整了模型,然後部署了最佳候選模型以產生預測。

本頁對您是否有幫助?

後續步驟

進一步了解 Amazon SageMaker Autopilot

造訪網頁
進一步了解 »

瀏覽 SageMaker Autopilot 文件

了解如何開始使用 Amazon SageMaker Autopilot
閱讀詳細內容 »
尋找更多實作教學
尋找更多實作教學以了解如何利用 ML
開始使用 »