設定參數以監控偏差偏離 - Amazon SageMaker

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

設定參數以監控偏差偏離

Amazon SageMaker 澄清偏差監控會重複使用分析組態中使用的設定分析參數子集。說明組態參數之後,本主題將提供 JSON 檔案的範例。這些檔案可用來設定 CSV 和 JSON 行資料集,在機器學習模型進行生產時監控是否有偏差偏離。

JSON 檔案必須提供下列參數。此 JSON 檔案的路徑必須在 ModelBiasAppSpecification API 的 ConfigUri 參數中提供。

  • "version" –(選用) 組態檔案的結構描述版本。如果未提供,則會使用最新的支援版本。

  • "headers" –(選用) 資料集中的欄位名稱清單。如果 dataset_type"label" 並已指定 "application/jsonlines",則最後一個標題將成為標籤欄的標題。

  • "label" –(選用) 要用於偏差指標之模型的目標屬性。指定為資料欄名稱或索引 (如果資料集格式為 CSV),或指定為 JMESPath( 如果資料集格式為 JSON 行)。

  • "label_values_or_threshold" –(選用) 標籤值或閾值的清單。表示用於偏差指標的正面結果。

  • "facet" –(選用) 屬於敏感屬性的功能清單,稱為構面。構面以配對形式用於偏差指標,並包括以下內容:

    • "name_or_index" – 構面欄名稱或索引。

    • "value_or_threshold" –(選用) 構面欄可採用的值或閾值清單。表示敏感群組,例如用來測量偏差的群組。如果未提供,偏差指標會將每個唯一值 (而非所有值) 計算為一個群組。如果構面欄為數值,則會套用此閾值為下限以選取敏感群組。

  • "group_variable" – (選用) 欄名稱或索引,用來指出要用於偏差指標條件人口統計差異的群組變數。

其他參數應在 ModelBiasJobInput API 的 EndpointInput (用於即時端點) 或 BatchTransformInput (用於批次轉換工作) 中提供。

  • FeaturesAttribute – 如果端點輸入資料格式為 "application/jsonlines",則此參數是必要項目。如果資料集格式是 JSON 行,它是用於定位功能欄的 JMESPath。

  • InferenceAttribute – 目標屬性的模型輸出中的索引或 JMESPath 位置,用於使用偏差指標來監控偏差。如果在 CSV accept_type 案例中未提供,則假設模型輸出是對應於分數或機率的單一數值。

  • ProbabilityAttribute – 機率的模型輸出中的索引或 JMESPath 位置。例如,如果模型輸出是含有標籤和機率清單的 JSON 行,則會選擇對應於最大機率的標籤進行偏差運算。

  • ProbabilityThresholdAttribute –(選用) 浮點值,用來指示在二進制分類的情況下選取二進位標籤的閾值。預設值為 0.5。

CSV 和 JSON 行資料集的 JSON 組態檔案範例

以下是 JSON 檔案的範例,用來設定 CSV 和 JSON 行資料集以監控偏差偏離。

CSV 資料集

考慮有四個功能欄和一個標籤欄的資料集,其中第一個功能和標籤是二進位,如下列範例所示。

0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499, 0 1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713, 1 0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576, 1 1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697, 1

假設模型輸出有兩欄,其中第一個是預測標籤,第二個是機率,如下列範例所示。

1, 0.5385257417814224

接著,下列 JSON 組態檔案會顯示如何設定此 CSV 資料集的範例。

{ "headers": [ "feature_0", "feature_1", "feature_2", "feature_3", "target" ], "label": "target", "label_values_or_threshold": [1], "facet": [{ "name_or_index": "feature_1", "value_or_threshold": [1] }] }

預測標籤由 "InferenceAttribute" 參數選取。使用從零開始的編號,因此 0 表示模型輸出的首欄,

"EndpointInput": { ... "InferenceAttribute": 0 ... }

或者,您可以使用不同的參數將機率值轉換為二進位預測標籤。使用從零開始的編號:1 表示第二欄;ProbabilityThresholdAttribute 值 0.6 表示大於 0.6 的機率會將二進位標籤預測為 1。

"EndpointInput": { ... "ProbabilityAttribute": 1, "ProbabilityThresholdAttribute": 0.6 ... }

JSON 行資料集

考慮有四個功能欄和一個標籤欄的資料集,其中第一個功能和標籤是二進位,如下列範例所示。

{"features":[0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499], "label":0} {"features":[1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713], "label":1} {"features":[0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576], "label":1} {"features":[1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697], "label":1}

假設模型輸出有兩欄,其中第一個是預測標籤,第二個是機率。

{"predicted_label":1, "probability":0.5385257417814224}

下列 JSON 組態檔案會顯示如何設定此 JSON 行資料集的範例。

{ "headers": [ "feature_0", "feature_1", "feature_2", "feature_3", "target" ], "label": "label", "label_values_or_threshold": [1], "facet": [{ "name_or_index": "feature_1", "value_or_threshold": [1] }] }

然後,EndpointInput 中的 "features" 參數值 (針對即時端點) 或 BatchTransformInput (針對批次轉換工作) 用於訂位資料集中的功能,而 "predicted_label" 參數值會從模型輸出中選取預測標籤。

"EndpointInput": { ... "FeaturesAttribute": "features", "InferenceAttribute": "predicted_label" ... }

或者,您可以使用 ProbabilityThresholdAttribute 參數值將機率值轉換為預測的二進位標籤。例如,0.6 的值表示大於 0.6 的的機率會預測二進位標籤為 1。

"EndpointInput": { ... "FeaturesAttribute": "features", "ProbabilityAttribute": "probability", "ProbabilityThresholdAttribute": 0.6 ... }