使用 AutoML API 為表格式資料建立回歸或分類工作 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AutoML API 為表格式資料建立回歸或分類工作

您可以透過以 Autopilot 或 AWS CLI支援的任何語言呼叫 CreateAutoMLJobV2 API 操作,以程式設計方式為表格式資料建立 Autopilot 實驗。

有關此 API 操作如何以您選擇的語言轉換為函數的詳細資訊,請參閱 CreateAutoMLJobV2另請參閱區段並選擇 SDK。例如,對於 Python 使用者,請參閱 AWS SDK for Python (Boto3)中 create_auto_ml_job_v2 的完整要求語法。

注意

CreateAutoMLJobv2 和 MLJ DescribeAutoobv2 是 MLJ ob 和 CreateAutoMLJob 的新版本,它提供向後兼DescribeAuto容性。

我們建議使用 CreateAutoMLJobV2CreateAutoMLJobV2 可以管理與舊版本 CreateAutoMLJob 相同的表格問題類型,以及非表格問題類型,例如影像或文字分類,或時間序列預測。

至少,對表格資料進行的所有實驗都需要指定實驗名稱,提供輸入和輸出資料的位置,並指定要預測的目標資料。或者,您也可以指定要解決的問題類型 (迴歸、分類、多類別分類)、選擇建模策略 (堆疊合奏超參數最佳化)、選取 Autopilot 工作用來訓練資料的演算法清單等等。

實驗執行後,您可以比較試驗,並深入研究每個模型的預處理步驟、演算法和超參數範圍的詳細資訊。您還可以選擇下載他們的可解釋性效能報告。使用提供的筆記本來查看自動化資料探索或候選模型定義的結果。

以下是 CreateAutoMLJobV2 API 操作的強制性和選用輸入請求參數的集合。您可以找到此操作先前版本的替代資訊 CreateAutoMLJob。不過,我們建議您使用 CreateAutoMLJobV2

尋找有關如何將 將電子 CreateAuto工作移轉至 MLJobv2 CreateAutoCreateAutoMLJob 移轉到 CreateAutoMLJobV2 的指南。

必要參數

CreateAutoMLJobV2

當呼叫 CreateAutoMLJobV2 建立表格式資料的 Autopilot 實驗時,您必須提供下列值:

CreateAutoMLJob

當呼叫 CreateAutoMLJob 建立 AutoML 實驗時,您必須提供以下四個值:

所有其他參數都是選用參數。

選用的參數

下列各節提供一些選用參數的詳細資訊,您可以在使用表格式資料時傳送至 CreateAutoMLJobV2 API 操作。您可以找到此操作先前版本的替代資訊 CreateAutoMLJob。不過,我們建議您使用 CreateAutoMLJobV2

對於表格式資料,在資料上執行訓練模型候選模型的演算法集取決於您的建模策略 (ENSEMBLINGHYPERPARAMETER_TUNING)。以下詳細說明如何設定此訓練模式。

如果您保留空白 (或 null),則會根據您的資料集大小來推論 Mode

如需 Autopilot 的堆疊式整合超參數最佳化訓練方法的資訊,請參閱 訓練模式與演算法支援

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以使用 TabularJobConfig.Mode 參數設定 AutoML 任務 V2 的訓練方法

CreateAutoMLJob

您可以使用 AutoMLJobConfig.Mode 參數設定 AutoML 任務的訓練方法

特徵選取

Autopilot 提供自動資料預處理步驟,包括特徵選擇和特徵擷取。但是,您可以手動提供要在訓練 FeatureSpecificatioS3Uri 屬性時使用的特徵。

選取的特徵應包含在以下格式的 JSON 檔案中:

{ "FeatureAttributeNames":["col1", "col2", ...] }

["col1", "col2", ...] 中所列出的值會區分大小寫。它們應該是包含唯一值的字串清單,這些值是輸入資料中列名稱的子集。

注意

提供為特徵的欄位清單不能包含目標欄位。

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以使用 TabularJobConfig.FeatureSpecificatioS3Uri 參數將 URL 設定為您選取的特徵。

CreateAutoMLJob

您可以使用下列格式在 CreateAutoMLJob API CandidateGenerationConfig 中設定 AutoMLFeatureSpecificatioS3Uri屬性:

{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "FeatureSpecificationS3Uri":"string" }, } }

演算法選擇

預設情況下,您的 Autopilot 任務會在您的資料集執行預先定義的演算法清單來訓練候選模型。演算法清單取決於任務所使用的訓練模式 (ENSEMBLINGHYPERPARAMETER_TUNING)。

您可以提供預設演算法選取的子集。

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以指定AlgorithmsConfig屬性AutoMLAlgorithms中選取的陣列CandidateGenerationConfig

下面是 AlgorithmsConfig 屬性的例子,在其 AutoMLAlgorithms 欄位恰好列出了三種演算法 (「XGBoost」、「fastai」、「catboost」),用於整合訓練模式。

{ "AutoMLProblemTypeConfig": { "TabularJobConfig": { "Mode": "ENSEMBLING", "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["xgboost", "fastai", "catboost"]} ] }, }, }, }
CreateAutoMLJob

您可以指定在 AutoML AlgorithmsConfig CandidateGenerationConfig 屬性AutoMLAlgorithms中選取的陣列。

下面是 AlgorithmsConfig 屬性的例子,在其 AutoMLAlgorithms 欄位恰好列出了三種演算法 (「XGBoost」、「fastai」、「catboost」),用於整合訓練模式。

{ "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["xgboost", "fastai", "catboost"]} ] }, "Mode": "ENSEMBLING" }

如需每項訓練的可用演算法清單 Mode,請參閱 AutoMLAlgorithms。如需每個演算法的詳細資訊,請參閱 訓練模式與演算法支援

您可以提供自己的驗證資料集和自訂資料分割比例,或讓 Autopilot自動分割資料集。

CreateAutoMLJobV2

每個AutoMLJobChannel物件 (請參閱 AutoML 必要參數JobInputDataConfig) 都有ChannelType,可以設定為trainingvalidation值,這些值可指定建置機器學習模型時如何使用資料。至少必須提供一個資料來源,且最多允許兩個資料來源:一個用於訓練資料,另一個用於驗證資料。

如何將資料拆分為訓練資料集和驗證資料集取決於您是擁有一個還是兩個資料來源。

  • 如果您只有一個資料來源,則 ChannelType 預設為 training,並且必須具有此值。

    • 如果未設定 AutoMLDataSplitConfigValidationFraction 值,則預設情況下會使用來自此來源的 0.2 (20%) 資料進行驗證。

    • 如果設定 ValidationFraction 為介於 0 和 1 之間的值,則會根據指定的值來分割資料集,其中值會指定用於驗證的資料集分數。

  • 如果您有兩個資料來源,則 AutoMLJobChannel 個物件之一的 ChannelType 必須設定為預設值 training。另一個資料來源的 ChannelType 必須設定為 validation。這兩個資料來源必須具有相同的格式 (CSV 或 Parquet),以及相同的結構描述。在這種情況下,您不得設定 ValidationFraction 的值,因為每個來源的所有資料都會用於訓練或驗證。設定此值會導致錯誤。

CreateAutoMLJob

每個AutoMLChannel物件 (請參閱必要的參數 InputDataConfig) 都有一個ChannelType,可以設定為trainingvalidation值,指定建置機器學習模型時如何使用資料。至少必須提供一個資料來源,且最多允許兩個資料來源:一個用於訓練資料,另一個用於驗證資料。

如何將資料拆分為訓練資料集和驗證資料集取決於您是擁有一個還是兩個資料來源。

  • 如果您只有一個資料來源,則 ChannelType 預設為 training,並且必須具有此值。

    • 如果未設定 AutoMLDataSplitConfigValidationFraction 值,則預設情況下會使用來自此來源的 0.2 (20%) 資料進行驗證。

    • 如果設定 ValidationFraction 為介於 0 和 1 之間的值,則會根據指定的值來分割資料集,其中值會指定用於驗證的資料集分數。

  • 如果您有兩個資料來源,則 AutoMLChannel 個物件之一的 ChannelType 必須設定為預設值 training。另一個資料來源的 ChannelType 必須設定為 validation。這兩個資料來源必須具有相同的格式 (CSV 或 Parquet),以及相同的結構描述。在這種情況下,您不得設定 ValidationFraction 的值,因為每個來源的所有資料都會用於訓練或驗證。設定此值會導致錯誤。

如需 Autopilot 中的拆分與交叉驗證的相關資訊,請參閱 Autopilot 的交叉驗證

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

您可以使用 TabularJobConfig.ProblemType 參數進一步指定 AutoML 任務 V2 的模型候選項可用的監督學習問題類型 (二進位分類、多類別分類、迴歸)。

CreateAutoMLJob

您可以使用 CreateAutoPilot.ProblemType 參數設定 AutoML 作業的問題類型。這限制了 Autopilot 嘗試的預處理類型和演算法。任務完成後,如果您已設定 CreateAutoPilot.ProblemType,則 ResolvedAttribute.ProblemType 會符合您設定的 ProblemType。如果您將其保留空白 (或 null) ,則代表您推論出來的 ProblemType

注意

在某些情況下,Autopilot 無法以夠高的可信度推論 ProblemType,在這種情況下,您必須提供值,任務才會成功。

您可以將範例權重欄位新增至表格式資料集,然後將其傳遞至 AutoML 任務,以請求在訓練及評估期間對資料集行進行加權。

僅在整合模式下支援樣本權重。你的權重應該是數字且非負數。排除無效或沒有權重值的資料點。如需可用目標指標的詳細資訊,請參閱 Autopilot 加權指標

CreateAutoMLJobV2

對於表格式資料,您必須選擇 TabularJobConfig 作為 AutoMLProblemTypeConfig 的類型。

要在創建實驗時設置樣本權重(請參閱 CreateAutoMLJobv2),您可以在對象的SampleWeightAttributeName屬性中傳遞樣本權重列的名稱。TabularJobConfig這可確保您的目標指標使用權重來訓練、評估及選擇候選模型。

CreateAutoMLJob

要在創建實驗時設置樣本權重(請參閱 CreateAutoMLJob),您可以在 AutoML Channel 對象的SampleWeightAttributeName屬性中傳遞樣本權重列的名稱。這可確保您的目標指標使用權重來訓練、評估及選擇候選模型。

將電子 CreateAuto工作移轉至 MLJobv2 CreateAuto

我們建議 CreateAutoMLJob 的使用者移轉至 CreateAutoMLJobV2

本節說明 MLJ CreateAutoob 和 CreateAuto ML Jobv2 之間輸入參數的差異,方法是反白兩個版本之間的物件位置、名稱或結構中的變更,以及輸入要求的屬性。

  • 請求在版本之間未變更的屬性。

    { "AutoMLJobName": "string", "AutoMLJobObjective": { "MetricName": "string" }, "ModelDeployConfig": { "AutoGenerateEndpointName": boolean, "EndpointName": "string" }, "OutputDataConfig": { "KmsKeyId": "string", "S3OutputPath": "string" }, "RoleArn": "string", "Tags": [ { "Key": "string", "Value": "string" } ] }
  • 請求在版本之間變更位置與結構的屬性。

    下列屬性變更了位置:DataSplitConfigSecurity ConfigCompletionCriteriaModeFeatureSpecificationS3UriSampleWeightAttributeNameTargetAttributeName

    CreateAutoMLJob
    { "AutoMLJobConfig": { "Mode": "string", "CompletionCriteria": { "MaxAutoMLJobRuntimeInSeconds": number, "MaxCandidates": number, "MaxRuntimePerTrainingJobInSeconds": number }, "DataSplitConfig": { "ValidationFraction": number }, "SecurityConfig": { "EnableInterContainerTrafficEncryption": boolean, "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } }, "CandidateGenerationConfig": { "FeatureSpecificationS3Uri": "string" } }, "GenerateCandidateDefinitionsOnly": boolean, "ProblemType": "string" }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "Mode": "string", "ProblemType": "string", "GenerateCandidateDefinitionsOnly": boolean, "CompletionCriteria": { "MaxAutoMLJobRuntimeInSeconds": number, "MaxCandidates": number, "MaxRuntimePerTrainingJobInSeconds": number }, "FeatureSpecificationS3Uri": "string", "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } }, "DataSplitConfig": { "ValidationFraction": number }, "SecurityConfig": { "EnableInterContainerTrafficEncryption": boolean, "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } } }
  • 下列屬性會變更版本之間的位置與結構。

    下面的 JSON 說明如何 AutoML JobConfig。 CandidateGenerationConfigAutoML 類型CandidateGenerationConfig已移至 Auto ProblemTypeConfig ML。 TabularJobConfig。 CandidateGenerationConfigCandidateGenerationConfig在 V2 中的類型。

    CreateAutoMLJob
    { "AutoMLJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], "FeatureSpecificationS3Uri": "string" } }
    CreateAutoMLJobV2
    { "AutoMLProblemTypeConfig": { "TabularJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig": [ { "AutoMLAlgorithms": [ "string" ] } ], }, } }, }
  • 請求變更名稱與結構的屬性。

    下列 JSON 說明如何在 V InputDataConfig2 中變更為 AutoML (Auto JobChannel ML 的陣列) JobInputDataConfig (自動 ML 的陣列)。請注意,屬性 SampleWeightAttributeNameTargetAttributeName 已從 InputDataConfig 移出並移入 AutoMLProblemTypeConfig

    CreateAutoMLJob
    { "InputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } }, "SampleWeightAttributeName": "string", "TargetAttributeName": "string" } ] }
    CreateAutoMLJobV2
    { "AutoMLJobInputDataConfig": [ { "ChannelType": "string", "CompressionType": "string", "ContentType": "string", "DataSource": { "S3DataSource": { "S3DataType": "string", "S3Uri": "string" } } } ] }