Vertex AI:使用 AutoML 建構詐欺偵測模型

1. 總覽

在這個研究室中,您將使用 Vertex AI 來訓練及提供表格資料模型。這是 Google Cloud 最新推出的 AI 產品服務,目前為預先發布版。

課程內容

學習重點:

  • 將受管理的資料集上傳至 Vertex AI
  • 使用 AutoML 訓練模型
  • 將經過訓練的 AutoML 模型部署至端點,並使用該端點取得預測結果

在 Google Cloud 上執行本實驗室的總費用約為 $22 美元。

2. Vertex AI 簡介

這個研究室使用 Google Cloud 最新的 AI 產品服務。Vertex AI 整合了 Google Cloud 中的機器學習產品,提供流暢的開發體驗。先前,使用 AutoML 訓練的模型和自訂模型必須透過不同的服務存取。新產品將這兩項功能與其他新產品整合至單一 API。您也可以將現有專案遷移至 Vertex AI。如有任何意見,請參閱支援頁面

Vertex AI 包含許多不同產品,可支援端對端機器學習工作流程。本實驗室將著重於下列產品:表格型資料 AutoML、預測和 Workbench。

Vertex 產品總覽

3. 設定環境

您需要已啟用計費功能的 Google Cloud Platform 專案,才能執行這個程式碼研究室。如要建立專案,請按照這裡的操作說明進行。

步驟 1:啟用 Compute Engine API

前往「Compute Engine」,然後選取「啟用」 (如果尚未啟用)。您需要這項資訊才能建立 Notebook 執行個體。

步驟 2:啟用 Vertex AI API

前往 Cloud 控制台的 Vertex AI 專區,然後點選「啟用 Vertex AI API」

Vertex 資訊主頁

步驟 3:建立 Vertex AI Workbench 執行個體

在 Cloud 控制台的 Vertex AI 專區中,按一下「Workbench」:

Vertex AI 選單

接著在「使用者自行管理的 Notebooks」中,按一下「New Notebook」

建立新的筆記本

接著,選取最新版本的「TensorFlow 企業版 (含 LTS)」執行個體類型,且不加入任何 GPU

TFE 執行個體

使用預設選項,然後按一下「建立」

步驟 5:開啟 Notebook

執行個體建立完成後,請選取「Open JupyterLab」

開啟筆記本

我們會使用這份信用卡詐欺偵測資料集的資料來訓練模型。我們會使用 BigQuery 公開提供的這個資料集版本。

4. 建立受管理的資料集

在 Vertex AI 中,您可以為各種資料類型建立受管理的資料集。然後產生這些資料集的統計資料,並用於以 AutoML 或您自己的自訂模型程式碼訓練模型。

步驟 1:建立資料集

在控制台的 Vertex 選單中,選取「資料集」

選取資料集

在本實驗室中,我們將建構詐欺偵測模型,判斷特定信用卡交易是否應歸類為詐欺。

在「資料集」頁面中為資料集命名,然後選取「表格」和「迴歸/分類」。接著建立資料集:

建立資料集

您可以透過以下幾種方式,將資料匯入 Vertex 中的受管理資料集:

  • 從電腦上傳本機檔案
  • 從 Cloud Storage 選取檔案
  • 從 BigQuery 選取資料

我們會從公開的 BigQuery 資料表上傳資料。

步驟 2:從 BigQuery 匯入資料

選擇「選取 BigQuery 中的資料表或檢視表」做為匯入方法,然後將以下內容複製到「BigQuery 資料表」方塊中:bigquery-public-data.ml_datasets.ulb_fraud_detection。然後選取「繼續」

匯入 BQ 資料

匯入資料集後,畫面應會顯示類似下列的畫面:

已匯入的資料

您可以按一下「產生統計資料」查看這個資料集的其他資訊,但這不是必要步驟,您可以直接繼續下一個步驟。這個資料集包含真實的信用卡交易。大部分的欄名稱都已模糊處理,因此會稱為 V1V2 等。

5. 使用 AutoML 訓練模型

上傳代管資料集之後,就可以開始使用這些資料訓練模型。我們將訓練分類模型,預測特定交易是否屬於詐欺。Vertex AI 提供兩種訓練模型的選項:

  • AutoML:只需要最基本的機器學習專業知識,就能輕鬆訓練出高品質模型。
  • 自訂訓練:使用 Google Cloud 其中一個預先建構的容器,或使用自己的容器,在雲端環境中執行自訂訓練應用程式。

在本研究室中,我們將使用 AutoML 進行訓練。

步驟 1:啟動訓練工作

在資料集詳細資料頁面中,選取右上方的「訓練新模型」,選取「分類」做為目標,並保留「AutoML」做為模型訓練方法,然後按一下「繼續」

模型訓練步驟 1

為模型命名,或使用預設名稱。在「目標欄」下方,選取「Class」。這個整數表示特定交易是否為詐欺交易 (0 代表非詐欺,1 代表詐欺)。

然後選取「繼續」

模型訓練步驟 2

在這個步驟中,請向下捲動並點選展開「進階選項」。由於這個資料集極度失衡 (只有不到 1% 的資料含有詐欺交易),請選擇 AUC PRC 選項,盡可能提高較不常見類別的精確度和喚回率

進階訓練選項

選取「繼續」,然後繼續執行最後一個步驟 (運算和定價)。在此輸入 1 做為預算的節點時數,並啟用提早中止訓練功能。1 個運算時數的 AutoML 模型訓練通常是不錯的起點,有助於瞭解所選的特徵和標籤是否有關聯性。您可以據此修改特徵,並增加訓練時間來改善模型效能。接著選取「開始訓練」

訓練工作完成後,您會收到電子郵件通知。訓練作業需要的時間會比 1 小時稍長,因為系統需要時間啟動及拆除資源。

6. 探索模型評估指標

在這個步驟中,我們會查看模型的表現。

模型訓練工作完成後,請前往 Vertex 中的「Models」分頁。按一下剛剛訓練的模型,然後查看「Evaluate」分頁。這裡有許多評估指標,我們將著重於兩項:混淆矩陣特徵重要性

步驟 1:瞭解混淆矩陣

混淆矩陣會指出模型在測試集的「各個類別」中,模型正確預測結果的樣本百分比。如果出現類似於我們處理的資料集等不平衡的資料集,則相較於整體準確率資料集,這個指標較適合用來評估模型成效。

請記住,資料集中只有不到 1% 是詐欺性交易,所以如果模型準確率為 99%,我們就有機會隨機猜測非詐欺類別 99% 的機率。因此,我們認為觀察模型對各類別的準確度,會是更適當的指標。

如果您向下捲動「評估」分頁,應該會看到類似下方的混淆矩陣 (百分比可能不同):

混淆矩陣

混淆矩陣顯示我們的初始模型,能將測試集中 85% 的詐欺範例正確分類。這項結果相當不錯,尤其是考量到資料集的嚴重不平衡問題。接下來,我們可以嘗試訓練模型,增加運算時數,看看是否能改善這 85% 的準確度。

步驟 2:查看功能的重要性

混淆矩陣下方應會顯示特徵重要性圖表,如下所示:

特徵重要性

這可讓我們瞭解哪些特徵在模型做出預測時,提供最大信號。特徵重要性是 Explainable AI 的一種,這個領域包含多種方法,可幫助企業深入瞭解機器學習模型正在進行預測。這裡顯示的特徵重要性圖表,是根據測試集上所有的模型預測結果計算得出。它會從一批範例中看出最重要的特徵,

如果資料集內的大部分地圖項目沒有模糊不清,這張圖表會更有趣。舉例來說,我們可能會發現交易類型 (轉帳、存款等) 是詐欺的最大指標。

在實際情況中,您可以使用這些特徵重要性的值,改善模型及提高預測結果的可信度。我們可能會決定在下次訓練模型時,移除重要性最低的特徵,或將兩個重要性較高的特徵合併為一個交錯組合特徵,看看是否能提升模型成效。

我們在這裡查看批次中各項特徵的重要性,但也可以在 Vertex AI 中查看個別預測的特徵重要性。部署模型後,我們將說明如何進行。

7. 將模型部署至端點

模型訓練完成後,下一步就是在 Vertex 中建立端點。Vertex 中的模型資源可能有多個相關聯的端點,您可以將流量拆分至各個端點。

步驟 1:建立端點

在模型頁面中,前往「部署及測試」分頁,然後按一下「部署至端點」

部署及測試

為您的端點命名 (例如 fraud_v1),將「存取權」的設定為「標準」,然後按一下「繼續」

請保留預設的流量拆分和機器類型設定,然後依序點選「完成」和「繼續」

我們不會為這個端點使用模型監控功能,因此您可以取消選取該選項,然後按一下「部署」。端點會在幾分鐘內部署完畢。完成時,待完成事項旁會顯示綠色勾號:

已部署的端點

你快完成了!現在,您可以從部署的模型取得預測結果了。

8. 取得已部署模型的預測結果

取得模型預測結果的方式如下:

  • Vertex AI UI
  • Vertex AI API

在這裡一併列出這兩個項目。

步驟 1:在 UI 中取得模型預測結果

在顯示端點的模型頁面中 (也就是在最後一個步驟中離開的地方),向下捲動至「Test your model」(測試模型) 區段:

測試模型

在此情況下,Vertex AI 會為每個模型特徵選擇隨機值,以便我們取得測試預測結果。您可以視需要變更這些值。向下捲動到頁面底部,然後選取「預測」

在頁面上的「預測結果」部分,您應該會看到模型針對每個類別的預測百分比。舉例來說,如果類別 0 的可信度分數為 0.99,表示模型認為此範例的非詐欺機率為 99%。

步驟 2:使用 Vertex AI API 取得模型預測結果

使用者介面是確保已部署的端點正常運作的好方法,但您可能會想透過 REST API 呼叫,以動態方式取得預測結果。為了讓您瞭解如何取得模型預測結果,我們會使用您在本實驗室一開始建立的 Vertex Workbench 執行個體。

接著,開啟您建立的筆記本執行個體,然後從啟動器開啟 Python 3 筆記本:

開啟筆記本

在筆記本中,在單元格中執行下列指令,安裝 Vertex SDK:

!pip3 install google-cloud-aiplatform --upgrade --user

然後在筆記本中新增儲存格來匯入 SDK,並為剛剛部署的端點建立參照:

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

您必須將上述 endpoint_name 字串中的兩個值,替換為您的專案編號和端點。您可以前往專案資訊主頁,取得「專案編號」值,找出專案編號。

您可以在控制台的端點部分找到端點 ID:

找出端點 ID

最後,請複製下列程式碼,並在新儲存格中執行,對端點進行預測:

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

您應該會看到 .67 周圍的預測結果 0 類別,這代表模型認為這筆交易有 67% 的機率不會詐欺。

🎉 恭喜!🎉

您已瞭解如何使用 Vertex AI 執行下列作業:

  • 上傳代管資料集
  • 使用 AutoML 訓練及評估表格資料的模型
  • 將模型部署至端點
  • 使用 Vertex 專用 SDK 取得模型端點的預測結果

如要進一步瞭解 Vertex AI 的其他部分,請參閱說明文件

9. 清理

如果您想繼續使用在本實驗室中建立的 Notebook,建議您在未使用時關閉 Notebook。在 Cloud Console 的 Workbench UI 中,選取筆記本,然後選取「Stop」

如想完全刪除筆記本,只要按一下右上方的「刪除」按鈕即可。

如要刪除已部署的端點,請前往 Vertex AI 控制台的「Endpoints」專區,然後從端點中卸除模型:

刪除端點

如要刪除 Storage 值區,請使用 Cloud 控制台中的導覽選單前往「Storage」(儲存空間)、選取值區,然後點選「Delete」(刪除):

刪除儲存空間