本頁說明如何使用 Google Cloud 控制台或 Vertex AI API,從表格資料集訓練分類或迴歸模型。
事前準備
您必須先完成下列步驟,才能訓練模型:
訓練模型
Google Cloud 控制台
在 Google Cloud 控制台的 Vertex AI 專區中,前往「Datasets」頁面。
按一下要用來訓練模型的資料集名稱,開啟詳細資料頁面。
如果資料類型使用註解集,請選取要為此模型使用的註解集。
按一下「訓練新模型」。
選取「其他」。
在「訓練新模型」頁面中,完成下列步驟:
選取模型訓練方法。
AutoML
適用於多種用途。
按一下「繼續」。
輸入新模式的顯示名稱。
選取目標欄。
目標欄是模型要預測的值。
進一步瞭解目標欄規定。
選用:如要將測試資料集匯出至 BigQuery,請勾選「將測試資料集匯出至 BigQuery」,並提供資料表名稱。
選用:如要選擇如何在訓練、測試和驗證集之間分割資料,請開啟「進階選項」。您可以選擇下列資料分割選項:
- 隨機 (預設):Vertex AI 會隨機選取與各資料集相關聯的資料列。根據預設,Vertex AI 會選取 80% 的資料列用於訓練集、10% 用於驗證集,以及 10% 用於測試集。
- 手動:Vertex AI 會根據資料分割欄中的值,為每個資料集選取資料列。提供資料分割欄的名稱。
- 按照時間排序:Vertex AI 會根據時間欄中的時間戳記分割資料。提供時間欄的名稱。
進一步瞭解資料分割。
按一下「繼續」。
選用:按一下「產生統計資料」。產生統計資料後,系統會在「轉換」下拉式選單中填入資料。
在「訓練選項」頁面中,查看資料欄清單,並從訓練中排除任何不應用於訓練模型的資料欄。
檢查已納入的功能所選取的轉換作業,以及是否允許使用無效資料,並進行必要的更新。
如要指定權重欄,或變更最佳化目標 (預設值),請開啟「進階選項」並進行選取。
按一下「繼續」。
在「運算與定價」視窗中,按照下列步驟進行設定:
輸入模型訓練時數上限。
這項設定可協助您設定訓練費用上限。實際耗時可能會比這個值長,因為建立新模型時會涉及其他作業。
建議的訓練時間與訓練資料的大小有關。下表列出依據資料列數建議的訓練時間範圍。大量資料欄也會增加所需的訓練時間。
資料列 建議的訓練時間 小於 100,000 1-3 小時 100,000 - 1,000,000 1-6 小時 1,000,000 - 10,000,000 1-12 小時 超過 10,000,000 3 到 24 小時 按一下「開始訓練」。
模型訓練可能需要好幾小時才能完成,視資料的大小和複雜度以及您指定的訓練預算而定。您可以關閉這個分頁,稍後再返回查看。模型訓練完成後,您會收到電子郵件通知。
API
選取表格資料類型目標。
分類
選取所需語言或環境的分頁:
REST
您可以使用 trainingPipelines.create 指令訓練模型。
訓練模型。
使用任何要求資料之前,請先替換以下項目:
- LOCATION:您的區域。
- PROJECT:您的專案 ID。
- TRAININGPIPELINE_DISPLAY_NAME:為此作業建立的訓練管道顯示名稱。
- TARGET_COLUMN:您希望模型預測的資料欄 (值)。
- WEIGHT_COLUMN:(選用) 權重欄。瞭解詳情。
- TRAINING_BUDGET:模型訓練的最大時間長度,以毫節點時數為單位 (1,000 毫節點時數等於 1 節點時數)。
- OPTIMIZATION_OBJECTIVE:如果您不想為預測類型使用預設最佳化目標,則必須填寫這個值。瞭解詳情。
- TRANSFORMATION_TYPE:系統會為用於訓練模型的每個資料欄提供轉換類型。瞭解詳情。
- COLUMN_NAME:含有指定轉換類型的資料欄名稱。必須指定用於訓練模型的每個資料欄。
- MODEL_DISPLAY_NAME:新訓練模型的顯示名稱。
- DATASET_ID:訓練資料集 ID。
-
您可以提供
Split
物件來控制資料分割作業。如要瞭解如何控制資料分割,請參閱「使用 REST 控制資料分割」。 - PROJECT_NUMBER:系統自動產生的專案編號
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
JSON 要求主體:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "classification", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Java
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Java。詳情請參閱 Vertex AI Java API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Node.js。詳情請參閱 Vertex AI Node.js API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python 適用的 Vertex AI SDK
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Vertex AI SDK for Python API 參考說明文件。
迴歸
選取所需語言或環境的分頁:
REST
您可以使用 trainingPipelines.create 指令訓練模型。
訓練模型。
使用任何要求資料之前,請先替換以下項目:
- LOCATION:您的區域。
- PROJECT:您的專案 ID。
- TRAININGPIPELINE_DISPLAY_NAME:為此作業建立的訓練管道顯示名稱。
- TARGET_COLUMN:您希望模型預測的資料欄 (值)。
- WEIGHT_COLUMN:(選用) 權重欄。瞭解詳情。
- TRAINING_BUDGET:模型訓練的最大時間長度,以毫節點時數為單位 (1,000 毫節點時數等於 1 節點時數)。
- OPTIMIZATION_OBJECTIVE:如果您不想為預測類型使用預設最佳化目標,則必須填寫這個值。瞭解詳情。
- TRANSFORMATION_TYPE:系統會為用於訓練模型的每個資料欄提供轉換類型。瞭解詳情。
- COLUMN_NAME:含有指定轉換類型的資料欄名稱。必須指定用於訓練模型的每個資料欄。
- MODEL_DISPLAY_NAME:新訓練模型的顯示名稱。
- DATASET_ID:訓練資料集 ID。
-
您可以提供
Split
物件來控制資料分割作業。如要瞭解如何控制資料分割,請參閱「使用 REST 控制資料分割」。 - PROJECT_NUMBER:系統自動產生的專案編號
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
JSON 要求主體:
{ "displayName": "TRAININGPIPELINE_DISPLAY_NAME", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "trainingTaskInputs": { "targetColumn": "TARGET_COLUMN", "weightColumn": "WEIGHT_COLUMN", "predictionType": "regression", "trainBudgetMilliNodeHours": TRAINING_BUDGET, "optimizationObjective": "OPTIMIZATION_OBJECTIVE", "transformations": [ {"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} }, {"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} }, ... }, "modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"}, "inputDataConfig": { "datasetId": "DATASET_ID", } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/trainingPipelines/4567", "displayName": "myModelName", "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml", "modelToUpload": { "displayName": "myModelName" }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-08-18T01:22:57.479336Z", "updateTime": "2020-08-18T01:22:57.479336Z" }
Java
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Java。詳情請參閱 Vertex AI Java API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
在試用這個範例之前,請先按照 Vertex AI 快速入門:使用用戶端程式庫中的操作說明設定 Node.js。詳情請參閱 Vertex AI Node.js API 參考說明文件。
如要向 Vertex AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python 適用的 Vertex AI SDK
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Vertex AI SDK for Python API 參考說明文件。
使用 REST 控管資料分割
您可以控制訓練資料如何在訓練集、驗證集和測試集之間分割。使用 Vertex AI API 時,請使用 Split
物件來決定資料分割方式。Split
物件可納入 inputDataConfig
物件,做為多個物件類型之一,每個物件都提供不同的訓練資料分割方式。
您可以使用的方法取決於資料類型:
FractionSplit
:- TRAINING_FRACTION:訓練資料用於訓練集的比例。
- VALIDATION_FRACTION:用於驗證集的訓練資料比例。
- TEST_FRACTION:用於測試集的訓練資料比例。
如果指定任何分數,則必須指定所有分數。分數總和必須為 1.0。瞭解詳情。
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
PredefinedSplit
:- DATA_SPLIT_COLUMN:包含資料分割值 (
TRAIN
、VALIDATION
、TEST
) 的資料欄。
使用分割欄,手動指定每個資料列的資料分割方式。瞭解詳情。
"predefinedSplit": { "key": DATA_SPLIT_COLUMN },
- DATA_SPLIT_COLUMN:包含資料分割值 (
TimestampSplit
:- TRAINING_FRACTION:訓練資料用於訓練集的百分比。預設值為 0.80。
- VALIDATION_FRACTION:用於驗證集的訓練資料百分比。預設值為 0.10。
- TEST_FRACTION:用於測試集的訓練資料百分比。預設值為 0.10。
- TIME_COLUMN:包含時間戳記的資料欄。
如果指定任何分數,則必須指定所有分數。分數的總和必須為 1.0。瞭解詳情。
"timestampSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION, "key": TIME_COLUMN }
分類或迴歸模型的最佳化目標
訓練模型時,Vertex AI 會根據模型類型和目標欄使用的資料類型,選取預設的最佳化目標。
分類模型最適合用於:最佳化目標 | API 值 | 目標的適用情境 |
---|---|---|
AUC ROC | maximize-au-roc |
盡量增加接收者操作特徵 (ROC) 曲線下的面積。區分類別。二元分類的預設值。 |
對數損失 | minimize-log-loss |
盡可能保持推論機率的準確性。僅支援用於多元分類的目標。 |
AUC PR | maximize-au-prc |
盡量增加精確度和喚回度曲線下的面積。可最佳化少用類別的推論結果。 |
維持特定喚回度時的精確度 | maximize-precision-at-recall |
在特定喚回值下,提升精確度。 |
維持特定精確度時的喚回度 | maximize-recall-at-precision |
在特定精確度值下最佳化喚回率。 |
最佳化目標 | API 值 | 目標的適用情境 |
---|---|---|
均方根誤差 | minimize-rmse |
盡量減少均方根誤差 (RMSE)。精確擷取更多極端值。預設值。 |
平均絕對誤差 | minimize-mae |
盡量減少平均絕對誤差 (MAE)。將極端值視為對模型影響較小的離群值。 |
均方根對數誤差 | minimize-rmsle |
盡量減少均方根對數誤差 (RMSLE)。依據相對大小 (而非絕對值) 懲罰誤差。這個做法特別適用於預測值和實際值可能相當大的情況。 |