

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

# 使用 SageMaker Clarify 進行公平性、模型可解釋性和偏差偵測
<a name="clarify-configure-processing-jobs"></a>

您可以使用 Amazon SageMaker Clarify 來了解公平性和模型可解釋性，以及解釋和偵測模型中的偏差。您可以設定 Amazon SageMaker Clarify 處理任務，以計算偏差指標和特徵歸因，並產生模型可解釋性的報告。SageMaker Clarify 處理工作是使用專門的 SageMaker Clarify 容器影像來實作。下頁描述 SageMaker Clarify 的運作方式，以及如何開始使用分析。

## 什麼是機器學習預測的公平性和模型可解釋性？
<a name="clarify-fairness-and-explainability"></a>

機器學習 (ML) 模型不斷協助在各種領域做出決策，包括金融服務、醫療保健、教育和人力資源。政策制定者、監管者和倡導者提高了對機器學習 (ML) 和資料驅動系統帶來的道德和政策挑戰的意識。Amazon SageMaker Clarify 可協助您了解 ML 模型進行特定預測的原因，以及在訓練或推論期間，此偏差是否會影響此預測。SageMaker Clarify 也會提供工具，其可協助您建置較少偏差且更易於理解的機器學習模型。SageMaker Clarify 也可以產生模型治理報告，您可以將這些報告提供給風險與合規團隊，以及外部監管機構。使用 SageMaker Clarify，您可以執行下列動作：
+ 偵測模型預測中的偏差，並協助解釋該模型預測。
+ 識別訓練前資料中的偏差類型。
+ 識別訓練後資料中的偏差類型，這些偏差可能會在訓練期間或在模型生產中時出現。

SageMaker Clarify 可協助解釋您的模型如何使用特徵歸因進行預測。它還可以監控生產中的推論模型是否存在偏差或特徵歸因偏離。此資訊可在下列區域中協助您：
+ **法規** – 政策制定者和其他監管者可能會擔心使用 ML 模型輸出的決策會產生歧視性影響。例如，ML 模型可能會編碼偏差並影響自動化決策。
+ **商業** – 受管制網域可能需要 ML 模型如何進行預測的可靠說明。對於依賴可靠性、安全性和合規性的產業而言，模型可解釋性可能特別重要。這些可以包括金融服務、人力資源、醫療保健和自動化運輸。例如，貸款應用程式可能需要提供有關 ML 模型如何對貸款主管、預測者和客戶進行特定預測的說明。
+ **資料科學** – 當資料科學家和機器學習工程師可以判斷模型是根據雜訊還是不相關的特徵進行推論時，他們可以偵錯並改善 ML 模型。他們也可以了解其模型的限制，以及其模型可能遇到的故障模式。

如需部落格文章，說明如何為詐騙性汽車宣告建構和建置完整的機器學習模型，將 SageMaker Clarify 整合到 SageMaker AI 管道，請參閱 [Architect，並使用 建置完整的機器學習生命週期 AWS：end-to-end Amazon SageMaker AI ](https://aws.amazon.com/blogs/machine-learning/architect-and-build-the-full-machine-learning-lifecycle-with-amazon-sagemaker/)示範。本部落格文章會討論如何評估和緩解訓練前後的偏差，以及特徵如何影響模型預測。部落格文章包含 ML 生命週期中每個任務的範例程式碼連結。

### 在 ML 生命週期中評估公平性和可解釋性的最佳實務
<a name="clarify-fairness-and-explainability-best-practices"></a>

**公平性做為程序** – 偏差和公平性的概念取決於應用程式。偏差的測量和偏差指標的選擇可能受到社交、法律和其他非技術考量的引導。成功採用公平性感知 ML 方法包括建立共識並實現關鍵利益相關者之間的協作。這些可能包括產品、政策、法律、工程、AI/ML 團隊、最終使用者和社群。

**ML 生命週期中設計公平性和可解釋性** – 在 ML 生命週期的每個階段考慮公平性和可解釋性。這些階段包括問題形成、資料集建構、演算法選擇、模型訓練程序、測試程序、部署，以及監控和意見回饋。具備正確的工具進行此分析非常重要。我們建議在 ML 生命週期期間詢問下列問題：
+ 模型是否鼓勵可能產生越來越不公平結果的意見回饋迴圈？
+ 演算法是否為問題的道德解決方案？
+ 訓練資料是否代表不同群組？
+ 標籤或特徵中是否存在偏差？
+ 是否需要修改資料以緩解偏差？
+ 目標函式中是否需要包括公平性限制條件？
+ 模型是否已使用相關的公平性指標進行評估？
+ 使用者之間的效果是否不平等？
+ 模型是否部署在未經訓練或評估的人口上？

![\[評估公平性和模型可解釋性的程序的最佳實務。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify-best-practices-image.png)


### SageMaker AI 說明和偏差文件指南
<a name="clarify-fairness-and-explainability-toc"></a>

在訓練模型前後，可能會發生偏差，並可在資料中測量偏差。SageMaker Clarify 可以在訓練後提供模型預測的說明，以及為部署到生產的模型提供說明。SageMaker Clarify 也可以監控生產中的模型，在其基準解釋性歸因中是否有任何偏離，並在需要時計算基準。使用 SageMaker Clarify 解釋和偵測偏差的文件結構如下：
+ 如需為偏差和可解釋性設定處理任務的相關資訊，請參閱[設定 SageMaker Clarify 處理工作](clarify-processing-job-configure-parameters.md)。
+ 如需在預先處理資料用來訓練模型之前在其中偵測偏差的相關資訊，請參閱[訓練前資料偏差](clarify-detect-data-bias.md)。
+ 如需偵測訓練後資料和模型偏差的相關資訊，請參閱[訓練後資料和模型偏差](clarify-detect-post-training-bias.md)。
+ 如需用來解釋訓練後模型預測的模型不可知特徵歸因方法的相關資訊，請參閱[模型可解釋性](clarify-model-explainability.md)。
+ 如需監控是否有特徵歸因偏離模型訓練期間建立的基準的相關資訊，請參閱[生產中模型的特徵屬性偏離](clarify-model-monitor-feature-attribution-drift.md)。
+ 如需監控生產中模型是否偏離基準的相關資訊，請參閱[生產中模型的偏差偏離](clarify-model-monitor-bias-drift.md)。
+ 如需從 SageMaker AI 端點即時取得說明的相關資訊，請參閱[SageMaker Clarify 線上可解釋性](clarify-online-explainability.md)。

## SageMaker Clarify 處理工作的運作方式
<a name="clarify-processing-job-configure-how-it-works"></a>

您可以使用 SageMaker Clarify 來分析資料集和模型的可解釋性和偏差。SageMaker Clarify 處理工作會使用 SageMaker Clarify 處理容器與包含輸入資料集的 Amazon S3 儲存貯體進行互動。您也可以使用 SageMaker Clarify 來分析部署至 SageMaker AI 推論端點的客戶模型。

下圖顯示 SageMaker Clarify 處理工作如何與輸入資料互動，以及如何選擇性地與客戶模型互動。此互動取決於所執行的分析的特定類型。SageMaker Clarify 處理容器會從 S3 儲存貯體取得要分析的輸入資料集和組態。對於某些分析類型 (包括特徵分析)，SageMaker Clarify 處理容器必須將請求傳送至模型容器。然後，它會從模型容器傳送的回應中擷取模型預測。之後，SageMaker Clarify 處理容器會計算分析結果並將其儲存至 S3 儲存貯體。

![\[SageMaker Clarify 可以分析資料或客戶模型的可解釋性和偏差。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify/clarify-processing-job.png)


您可以在機器學習工作流程生命週期的多個階段中執行 SageMaker Clarify 處理工作。SageMaker Clarify 可協助您計算下列分析類型：
+ 訓練前偏差指標。這些指標可協助您瞭解資料中的偏差，以便您可以解決問題，並在更公平的資料集上訓練模型。如需訓練前偏差指標的相關資訊，請參閱[訓練前偏差指標](clarify-measure-data-bias.md)。若要執行工作以分析訓練前的偏差指標，您必須將資料集和 JSON 分析組態檔案提供給 [分析組態檔案](clarify-processing-job-configure-analysis.md)。
+ 訓練後偏差指標。這些指標可協助您了解演算法、超參數選擇所導致的任何偏差，或是在流程早期不明顯的任何偏差。如需訓練後偏差指標的詳細資訊，請參閱[訓練後資料和模型偏差指標](clarify-measure-post-training-bias.md)。除了資料和標籤之外，SageMaker Clarify 還使用模型預測來識別偏差。若要執行工作以分析訓練後的偏差指標，您必須提供資料集和 JSON 分析組態檔案。組態應包括模型或端點名稱。
+ Shapley 值，可協助您了解特徵對模型預測內容的影響。如需 Shapley 值的詳細資訊，請參閱[使用塑形值的特徵屬性](clarify-shapley-values.md)。此功能需要訓練過的模型。
+ 部分相依性圖 (PDP)，可協助您了解如果改變一個特徵的值，預測的目標變數會改變多少。如需 PDP 的詳細資訊，請參閱[部分相依性繪圖 (PDP) 分析](clarify-processing-job-analysis-results.md#clarify-processing-job-analysis-results-pdp)。此特徵需要已訓練的模型。

SageMaker Clarify 需要模型預測來計算訓練後的偏差指標和功能屬性。您可以提供端點，或是 SageMaker Clarify 將使用您的模型名稱來建立暫時端點，也稱為*陰影端點*。計算完成後，SageMaker Clarify 容器會刪除陰影端點。在高層級中，SageMaker Clarify 容器會完成下列步驟：

1. 驗證輸入和參數。

1. 建立陰影端點 (如果有提供模型名稱)。

1. 將輸入資料集載入資料框架。

1. 如有必要，可從端點取得模型預測。

1. 計算偏差指標和功能屬性。

1. 刪除陰影端點。

1. 產生分析結果。

SageMaker Clarify 處理工作完成後，分析結果將儲存於您在工作的處理輸出參數中指定的輸出位置。這些結果包括有偏差指標和全域功能屬性的 JSON 檔案、視覺化報告，以及本機功能屬性的其他檔案。您可以從輸出位置下載結果並查看。

如需有關偏差指標、可解釋性以及如何解譯的其他資訊，請參閱[了解 Amazon SageMaker Clarify 如何協助偵測偏差](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias)、[金融中機器學習的公平性措施](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)，以及 [Amazon AI 公平性與可解釋性白皮書](https://pages.awscloud.com/rs/112-TZM-766/images/Amazon.AI.Fairness.and.Explainability.Whitepaper.pdf)。

# 設定 SageMaker Clarify 處理工作
<a name="clarify-processing-job-configure-parameters"></a>

若要使用 SageMaker Clarify 分析資料和模型的偏差和可解釋性，您必須設定 SageMaker Clarify 處理工作。本指南說明如何指定處理工作的輸入資料集名稱、分析組態檔案名稱和輸出位置。若要設定處理容器、工作輸入、輸出、資源和其他參數，您有兩種選擇。您可以使用 SageMaker AI `CreateProcessingJob` API，或使用 SageMaker AI Python SDK API `SageMaker ClarifyProcessor`，

如需有關所有處理工作的常用參數的資訊，請參閱 [Amazon SageMaker API 參考](https://docs.aws.amazon.com/sagemaker/latest/APIReference/Welcome.html?icmpid=docs_sagemaker_lp)。

## 使用 SageMaker API 設定 SageMaker Clarify 處理工作
<a name="clarify-processing-job-configure-parameters-API"></a>

下列指示說明如何使用 `CreateProcessingJob` API 提供 SageMaker Clarify 特定組態的每個部分。

1. 在 `AppSpecification` 參數內輸入 SageMaker Clarify 容器影像的統一研究識別碼 (URI)，如下列程式碼範例所示。

   ```
   {
       "ImageUri": "the-clarify-container-image-uri"
   }
   ```
**注意**  
URI 必須識別預先建置的 SageMaker Clarify 容器影像。不支援 `ContainerEntrypoint` 和 `ContainerArguments`。如需 SageMaker Clarify 容器映像的詳細資訊，請參閱[預先建置的 SageMaker Clarify 容器](clarify-processing-job-configure-container.md)。

1. 指定分析的組態和 `ProcessingInputs` 參數內輸入資料集的參數。

   1. 指定 JSON 分析組態檔案的位置，其中包括偏差分析和可解釋性分析的參數。`ProcessingInput` 物件的 `InputName` 參數必須為 **analysis\$1config**，如下列程式碼範例所示。

      ```
      {
          "InputName": "analysis_config",
          "S3Input": {
              "S3Uri": "s3://your-bucket/analysis_config.json",
              "S3DataType": "S3Prefix",
              "S3InputMode": "File",
              "LocalPath": "/opt/ml/processing/input/config"
          }
      }
      ```

      如需分析組態檔案結構描述的詳細資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

   1. 指定輸入資料集的位置。`ProcessingInput` 物件的 `InputName` 參數必須是 `dataset`。如果您已在分析組態檔案中提供 “dataset\$1uri”，則此參數為選用。`S3Input` 組態中需要下列值。

      1. `S3Uri` 可以是 Amazon S3 物件或 S3 字首。

      1. `S3InputMode` 必須是類型 **File**。

      1. `S3CompressionType` 必須是類型 `None` (預設值)。

      1. `S3DataDistributionType` 必須是類型 `FullyReplicated` (預設值)。

      1. `S3DataType` 可以是 `S3Prefix` 或 `ManifestFile`。若要使用 `ManifestFile`，`S3Uri` 參數應指定資訊清單檔案的位置，其按照 SageMaker API 參考部分 [S3Uri](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html#sagemaker-Type-S3DataSource-S3Uri) 的結構描述。此資訊清單檔案必須列出包含工作輸入資料的 S3 物件。

      下列程式碼顯示輸入組態的範例。

      ```
      {
          "InputName": "dataset",
          "S3Input": {
              "S3Uri": "s3://your-bucket/your-dataset.csv",
              "S3DataType": "S3Prefix",
              "S3InputMode": "File",
              "LocalPath": "/opt/ml/processing/input/data"
          }
      }
      ```

1. 指定 `ProcessingOutputConfig` 參數內處理工作輸出的組態。`Outputs` 組態中需要單一 `ProcessingOutput` 物件。輸出組態中需要下列項目：

   1. `OutputName` 必須為 **analysis\$1result**。

   1. `S3Uri` 必須是輸出位置的 S3 字首。

   1. `S3UploadMode` 必須設定為 **EndOfJob**。

   下列程式碼顯示輸出組態的範例。

   ```
   {
       "Outputs": [{ 
           "OutputName": "analysis_result",
           "S3Output": { 
               "S3Uri": "s3://your-bucket/result/",
               "S3UploadMode": "EndOfJob",
               "LocalPath": "/opt/ml/processing/output"
            }
        }]
   }
   ```

1. 為您在 `ProcessingResources` 參數內的處理工作中使用的資源指定組態 `ClusterConfig`。`ClusterConfig` 物件內需要以下參數。

   1. `InstanceCount` 指定叢集中執行處理工作的運算執行個體數。指定大於 `1` 的值以啟用分散式處理。

   1. `InstanceType` 指的是執行處理工作的資源。由於 SageMaker AI SHAP 分析需要密集運算，因此使用對運算最佳化的執行個體類型應可改善分析的執行時期。SageMaker Clarify 處理工作不使用 GPU。

   下列程式碼顯示資源組態的範例。

   ```
   {
       "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.m5.xlarge",
            "VolumeSizeInGB": 20
        }
   }
   ```

1. 為您在 `NetworkConfig` 物件內的處理工作中使用的網路指定組態。組態中需要下列值。

   1. `EnableNetworkIsolation` 必須設定為 `False` (預設值)，以便 SageMaker Clarify 可以在必要時調用端點進行預測。

   1. 如果您提供給 SageMaker Clarify 工作的模型或端點位於 Amazon Virtual Private Cloud (Amazon VPC) 內，則 SageMaker Clarify 工作也必須位於同一個 VPC 中。使用 [VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html) 指定 VPC。此外，VPC 必須具有連至 Amazon S3 儲存貯體、SageMaker AI 服務和 SageMaker AI 執行時期服務的端點。

      如果已啟用分散式處理，您還必須允許同一個處理工作中不同執行個體之間的通訊。為安全群組設定規則，允許相同安全群組成員彼此間的傳入連線。如需詳細資訊，請參閱[允許 Amazon SageMaker Clarify 任務存取您 Amazon VPC 中的資源](clarify-vpc.md)。

   下列程式碼顯示網路組態的範例。

   ```
   {
       "EnableNetworkIsolation": False,
       "VpcConfig": {
           ...
       }
   }
   ```

1. 使用 `StoppingCondition` 參數來設定工作執行的時間上限。SageMaker Clarify 工作可以執行的最長時間為 `7` 天或 `604800` 秒。如果工作無法在此時間限制內完成，則會停止且不會提供分析結果。例如，下列組態會將工作可執行的時間上限限制為 3600 秒。

   ```
   {
       "MaxRuntimeInSeconds": 3600
   }
   ```

1. 指定 `RoleArn` 參數的 IAM 角色。該角色必須與 Amazon SageMaker AI 有信任關係。它可用來執行下表所列的 SageMaker API 作業。我們建議您使用 Amazon SageMaker AI FullAccess 受管政策，授予 SageMaker AI 的完整存取權。如需此政策的詳細資訊，請參閱[AWS 受管政策：AmazonSageMakerFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess)。如果您對授予完整存取權有疑慮，所需的最低權限取決於您提供的是模型還是端點名稱。使用端點名稱允許將較少的權限授予 SageMaker AI。

   下表包含 SageMaker Clarify 處理工作所使用的 API 作業。**模型名稱**和**端點名稱**下的 **X** 註明每個輸入所需的 API 作業。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-processing-job-configure-parameters.html)

   如需所需許可的相關資訊，請參閱[Amazon SageMaker AI API 許可：動作、許可與資源參考](api-permissions-reference.md)。

   如需將角色傳遞至 SageMaker AI 的詳細資訊，請參閱[傳遞角色](sagemaker-roles.md#sagemaker-roles-pass-role)。

   取得處理工作組態的個別部分之後，將其合併以設定工作。

## 使用適用於 Python 的 AWS SDK 設定 SageMaker Clarify 處理任務
<a name="clarify-processing-job-configure-parameters-SDK"></a>

下列程式碼範例示範如何使用[適用於 Python 的AWS SDK](https://aws.amazon.com/sdk-for-python/) 來啟動 SageMaker Clarify 處理工作。

```
sagemaker_client.create_processing_job(
    ProcessingJobName="your-clarify-job-name",
    AppSpecification={
        "ImageUri": "the-clarify-container-image-uri",
    },
    ProcessingInputs=[{
            "InputName": "analysis_config",
            "S3Input": {
                "S3Uri": "s3://your-bucket/analysis_config.json",
                "S3DataType": "S3Prefix",
                "S3InputMode": "File",
                "LocalPath": "/opt/ml/processing/input/config",
            },
        }, {
            "InputName": "dataset",
            "S3Input": {
                "S3Uri": "s3://your-bucket/your-dataset.csv",
                "S3DataType": "S3Prefix",
                "S3InputMode": "File",
                "LocalPath": "/opt/ml/processing/input/data",
            },
        },
    ],
    ProcessingOutputConfig={
        "Outputs": [{ 
            "OutputName": "analysis_result",
            "S3Output": { 
               "S3Uri": "s3://your-bucket/result/",
               "S3UploadMode": "EndOfJob",
               "LocalPath": "/opt/ml/processing/output",
            },   
        }],
    },
    ProcessingResources={
        "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.m5.xlarge",
            "VolumeSizeInGB": 20,
        },
    },
    NetworkConfig={
        "EnableNetworkIsolation": False,
        "VpcConfig": {
            ...
        },
    },
    StoppingCondition={
        "MaxRuntimeInSeconds": 3600,
    },
    RoleArn="arn:aws:iam::<your-account-id>:role/service-role/AmazonSageMaker-ExecutionRole",
)
```

如需使用適用於 Python 的 AWS SDK 執行 SageMaker Clarify 處理任務的說明的範例筆記本，請參閱[使用適用於 Python 的 AWS SDK 搭配 SageMaker Clarify 的公平性和可解釋性](http://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability_boto3.ipynb)。筆記本中使用的任何 S3 儲存貯體都必須與存取該儲存貯體的筆記本執行個體位於相同的 AWS 區域。

## 使用 SageMaker Python SDK 來設定 SageMaker Clarify 處理工作
<a name="clarify-processing-job-configure-parameters-SM-SDK"></a>

您也可以使用 SageMaker Python SDK API 中的 [SageMaker ClarifyProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SageMakerClarifyProcessor) 來設定 SageMaker Clarify 處理工作。如需詳細資訊，請參閱[執行 SageMaker Clarify 處理任務以進行偏差分析和解釋性](clarify-processing-job-run.md)。

**Topics**
+ [預先建置的 SageMaker Clarify 容器](clarify-processing-job-configure-container.md)
+ [分析組態檔案](clarify-processing-job-configure-analysis.md)
+ [資料格式相容性指南](clarify-processing-job-data-format.md)

# 預先建置的 SageMaker Clarify 容器
<a name="clarify-processing-job-configure-container"></a>

Amazon SageMaker AI 提供預先建置的 SageMaker Clarify 容器映像，其中包含運算偏差指標和用於可解釋性的特徵歸因所需的程式庫和其他相依性。這些映像能夠在您的帳戶中執行 SageMaker Clarify [處理任務](processing-job.md)。

容器的影像 URI 格式如下：

```
<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/sagemaker-clarify-processing:1.0
```

例如：

```
111122223333.dkr.ecr.us-east-1.amazonaws.com/sagemaker-clarify-processing:1.0
```

下表依 列出地址 AWS 區域。

SageMaker Clarify 處理工作的 Docker 影像


| 區域 | 影像位址 | 
| --- | --- | 
| 美國東部 (維吉尼亞北部) | 205585389593.dkr.ecr.us-east-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 美國東部 (俄亥俄) | 211330385671.dkr.ecr.us-east-2.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 美國西部 (加利佛尼亞北部) | 740489534195.dkr.ecr.us-west-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 美國西部 (奧勒岡) | 306415355426.dkr.ecr.us-west-2.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (香港) | 098760798382.dkr.ecr.ap-east-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (孟買) | 452307495513.dkr.ecr.ap-south-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (雅加達) | 705930551576.dkr.ecr.ap-southeast-3.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (東京) | 377024640650.dkr.ecr.ap-northeast-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (首爾) | 263625296855.dkr.ecr.ap-northeast-2.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (大阪) | 912233562940.dkr.ecr.ap-northeast-3.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (新加坡) | 834264404009.dkr.ecr.ap-southeast-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 亞太地區 (悉尼) | 007051062584.dkr.ecr.ap-southeast-2.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 加拿大 (中部) | 675030665977.dkr.ecr.ca-central-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 歐洲 (法蘭克福) | 017069133835.dkr.ecr.eu-central-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 歐洲 (蘇黎世) | 730335477804.dkr.ecr.eu-central-2.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 歐洲 (愛爾蘭) | 131013547314.dkr.ecr.eu-west-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 歐洲 (倫敦) | 440796970383.dkr.ecr.eu-west-2.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| Europe (Paris) | 341593696636.dkr.ecr.eu-west-3.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 歐洲 (斯德哥爾摩) | 763603941244.dkr.ecr.eu-north-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| Middle East (Bahrain) | 835444307964.dkr.ecr.me-south-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 南美洲 (聖保羅) | 520018980103.dkr.ecr.sa-east-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 非洲 (開普敦) | 811711786498.dkr.ecr.af-south-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 歐洲 (米蘭) | 638885417683.dkr.ecr.eu-south-1.amazonaws.com/sagemaker-clarify-processing:1.0 | 
| 中國 (北京) | 122526803553---dkr---ecr---cn-north-1.amazonaws.com.rproxy.govskope.us.cn/sagemaker-clarify-processing:1.0 | 
| 中國 (寧夏) | 122578899357---dkr---ecr---cn-northwest-1.amazonaws.com.rproxy.govskope.us.cn/sagemaker-clarify-processing:1.0 | 

# 分析組態檔案
<a name="clarify-processing-job-configure-analysis"></a>

若要使用 SageMaker Clarify 分析資料和模型的可解釋性和偏差，您必須設定處理任務。此處理工作的一部分組態包括分析檔案的組態。分析檔案會指定偏差分析和可解釋性的參數。請參閱[設定 SageMaker Clarify 處理工作](clarify-processing-job-configure-parameters.md)以了解如何設定處理任務和分析檔案。

本指南說明此分析組態檔案的結構描述和參數。本指南還包括用於計算表格式資料集偏差指標的分析組態檔案的範例，以及產生自然語言處理 (NLP)、電腦視覺 (CV) 和時間序列 (TS) 問題的說明。

您可以建立分析組態檔案，或使用 [SageMaker Python SDK](https://sagemaker.readthedocs.io/) 透過 [SageMaker ClarifyProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SageMakerClarifyProcessor) API 產生分析組態檔案。檢視檔案內容有助於瞭解 SageMaker Clarify 工作所使用的基礎組態。

**Topics**
+ [分析組態檔案的結構描述](#clarify-processing-job-configure-schema)
+ [範例分析組態檔案](#clarify-processing-job-configure-analysis-examples)

## 分析組態檔案的結構描述
<a name="clarify-processing-job-configure-schema"></a>

下節說明分析組態檔案的結構描述，包括參數的需求和描述。

### 分析組態檔案的需求
<a name="clarify-processing-job-configure-schema-requirements"></a>

 SageMaker Clarify 處理工作預期分析組態檔案的結構符合下列需求：
+ 處理輸入名稱必須是 `analysis_config.`
+ 分析組態檔案為 JSON 格式，並以 UTF-8 編碼。
+ 分析組態檔案是 Amazon S3 物件。

您可以在分析組態檔案中指定其他參數。下節提供各種選項，可針對您的使用案例和所需的分析類型，量身打造 SageMaker Clarify 處理工作。

### 分析組態檔案的參數
<a name="clarify-processing-job-configure-analysis-parameters"></a>

在分析組態檔案中，您可以指定下列參數。
+ **version** — (選用) 分析組態檔案結構描述的版本字串。如果未提供版本，SageMaker Clarify 會使用最新的支援版本。目前，唯一支援的版本是 `1.0`。
+ **dataset\$1type** — 資料集的格式。輸入資料集格式可以是下列任何值：
  + 表格式
    + `text/csv` 適用於 CSV
    + `application/jsonlines` 適用於 [SageMaker AI JSON 行密集格式](https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-jsonlines)
    + `application/json` 適用於 JSON
    + `application/x-parquet` 適用於 Apache Parquet
    + `application/x-image` 以啟動電腦視覺問題的可解釋性
  + 時間序列預測模型說明
    + `application/json` 適用於 JSON
+ **dataset\$1uri** - (選用) 主資料集的統一資源識別碼 (URI)。如果您提供 S3 URI 字首，SageMaker Clarify 處理工作會以遞迴方式收集位於字首下的所有 S3 檔案。您可以為電腦視覺問題的影像資訊清單檔案提供 S3 URI 字首或 S3 URI。如果已提供 `dataset_uri`，這會優先於處理工作輸入的資料集。對於影像以外的任何格式類型和時間序列使用案例，SageMaker Clarify 處理任務會將輸入資料集以**表格式資料集**形式載入至表格式資料框架。此格式可讓 SageMaker AI 輕鬆地操作和分析輸入資料集。
+ **標頭** - (選用)
  + **表格式** - 字串陣列，其中包含表格式資料集的資料欄名稱。如果未提供 `headers` 的值，則 SageMaker Clarify 處理任務會從資料集讀取標題。如果資料集沒有標題，則 Clarify 處理任務會根據從零開始的資料欄索引，自動產生預留位置名稱。例如，第一欄和第二欄的預留位置名稱將為 **column\$10**、**column\$11**，依次類推。
**注意**  
根據慣例，如果 `dataset_type` 為 `application/jsonlines` 或 `application/json`，則 `headers` 應依序包含下列名稱：  
特徵名稱
標籤名稱 (如果已指定 `label`)
預測的標籤名稱 (如果已指定 `predicted_label`)
如果已指定 `label`，`application/jsonlines` 資料集類型的 `headers` 範例為：`["feature1","feature2","feature3","target_label"]`。
  + **時間序列：**資料集中資料欄名稱的清單。如果未提供，Clarify 會產生要在內部使用的標頭。對於時間序列可解釋性案例，請依下列順序提供標頭：

    1. 項目 ID

    1. timestamp

    1. 目標時間序列

    1. 所有相關的時間序列資料欄

    1. 所有靜態共變資料欄
+ **label** — (選用) 字串或從零開始的整數索引。如果提供，`label` 用於定位 Ground Truth 標籤，也稱為表格式資料集中的觀察標籤或目標屬性。Ground Truth 標籤用於計算偏差指標。`label` 的值是根據 `dataset_type` 參數的值指定，如下所示。
  + 如果 `dataset_type` 是 **text/csv**，則 `label` 可以指定為下列任一項：
    + 有效的欄位名稱
    + 介於資料集欄位範圍內的索引
  + 如果 `dataset_type` 是 **application/parquet**，則 `label` 必須是有效的欄位名稱。
  + 如果 `dataset_type` 是 **application/jsonlines**，則 `label` 必須是寫入以從資料集中擷取 Ground Truth 標籤的 [JMESPath](https://jmespath.org/) 運算式。按照慣例，如果指定 `headers`，則其應包含標籤名稱。
  + 如果 `dataset_type` 是 **application/json**，則 `label` 必須是寫入為資料集中的每個記錄擷取 Ground Truth 標籤的 [JMESPath](https://jmespath.org/) 運算式。此 JMESPath 運算式必須產生標籤清單，其中第 i 個標籤與第 i 個記錄相互關聯。
+ **predicted\$1label** — (選用) 字串或從零開始的整數索引。如果提供，`predicted_label` 用於在表格式資料集中定位包含預測標籤的欄位。預測標籤用於計算訓練後的**偏差指標**。如果資料集不包含預測標籤，則參數 `predicted_label` 為選用。如果計算需要預測標籤，則 SageMaker Clarify 處理工作將從模型取得預測。

  `predicted_label` 的值是根據 `dataset_type` 的值指定，如下所示：
  + 如果 `dataset_type` 是 **text/csv**，則 `predicted_label` 可以指定為下列任一項：
    + 有效的欄位名稱。如果已指定 `predicted_label_dataset_uri` 但未提供 `predicted_label`，則預設的預測標籤名稱為 “predicted\$1label”。
    + 介於資料集欄位範圍內的索引。如果已指定 `predicted_label_dataset_uri`，則索引將用於在預測標籤資料集中定位預測標籤欄位。
  + 如果 dataset\$1type 是 **application/x-parquet**，則 `predicted_label` 必須是有效的欄位名稱。
  + 如果 dataset\$1type 是 **application/jsonlines**，則 `predicted_label` 必須是寫入以從資料集中擷取預測標籤的有效 [JMESPath](https://jmespath.org/) 運算式。按照慣例，如果指定 `headers`，則其應包含預測標籤名稱。
  + 如果 `dataset_type` 是 **application/json**，則 `predicted_label` 必須是寫入為資料集中的每個記錄擷取預測標籤的 [JMESPath](https://jmespath.org/) 運算式。JMESPath 運算式應產生預測標籤清單，其中第 i 個預測標籤是針對第 i 個記錄。
+ **特徵** - (選用) non-time-series 使用案例需要，如果 `dataset_type` 為 `application/jsonlines` 或 `application/json` 的話。寫入以定位輸入資料集中的功能的 JMESPath 字串運算式。對於 `application/jsonlines`，JMESPath 運算式會套用至每一行，以擷取該記錄的功能。對於 `application/json`，JMESPath 運算式會套用至整個輸入資料集。JMESPath 運算式應擷取清單的清單，或功能的 2D 陣列/矩陣，其中第 i 行包含與第 i 個記錄相互關聯的功能。對於 `text/csv` 或 `application/x-parquet` 的 `dataset_type`，除了 Ground Truth 標籤和預測標籤欄以外的所有欄都會自動指定為功能。
+ **predicted\$1label\$1dataset\$1uri** - (選用) 僅適用於 dataset\$1type 為 `text/csv` 時。資料集的 S3 URI 包含用於計算訓練後**偏差指**標的預測標籤。SageMaker Clarify 處理工作將從提供的 URI 載入預測，而不是從模型取得預測。在此情況下，`predicted_label` 需要在預測標籤資料集中找到預測標籤欄位。如果預測標籤資料集或主資料集分割為多個檔案，則 `joinsource_name_or_index` 必須指定識別碼欄位以加入這兩個資料集。
+ **predicted\$1label\$1headers** - (選用) 僅在指定 `predicted_label_dataset_uri` 時適用。包含預測標籤資料集的欄位名稱的字串陣列。除了預測標籤標題，`predicted_label_headers` 也可以包含標識符欄位的標題以加入預測標籤資料集和主資料集。如需詳細資訊，請參閱參數 `joinsource_name_or_index` 的以下描述。
+ **joinsource\$1name\$1or\$1index** - (選用) 表格式資料集中資料欄的名稱或從零開始的索引，用作執行內部聯結時的識別碼欄。此欄僅用作識別碼。不用於任何其他計算，如偏差分析或功能屬性分析。在下列情況下，需要 `joinsource_name_or_index` 的值：
  + 有多個輸入資料集，而且有任何一個被分成多個檔案。
  + 透過將 SageMaker Clarify 處理工作 [InstanceCount](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingClusterConfig.html#sagemaker-Type-ProcessingClusterConfig-InstanceCount) 設定為大於 `1` 的值來啟動分散式處理。
+ **excluded\$1columns** —(選用) 要排除不傳送至模型做為預測輸入的名稱陣列或從零開始的欄位索引。Ground Truth 標籤和預測標籤已自動排除。時間序列不支援此特徵。
+ **probability\$1threshold** — (選用) 浮點數，在此浮點數上選取一個標籤或物件。預設值為 `0.5`。SageMaker Clarify 處理工作會在下列情況下使用 `probability_threshold`：
  + 在訓練後偏差分析中，如果模型是二進位分類器，`probability_threshold` 會將數值模型預測 (機率值或分數) 轉換為二進位標籤。大於閾值的分數會轉換為 `1`。而小於或等於閾值的分數會轉換為 `0`。
  + 在電腦視覺可解釋性問題中，如果 model\$1type 是 **OBJECT\$1DETECTION**，`, probability_threshold` 會篩選掉可信度分數低於閾值的偵測到物件。
+ **label\$1values\$1or\$1threshold** - (選用) 偏差分析需要。標籤值或閾值數的陣列，表示偏差指標的 Ground Truth 和預測標籤的正面結果。如需詳細資訊，請參閱 [Amazon SageMaker Clarify 偏差和公平性條款](clarify-detect-data-bias.md#clarify-bias-and-fairness-terms) 中的正標籤值。如果標籤是數值，會將閾值套用為下限以選取正面結果。若要針對不同的問題類型設定 `label_values_or_threshold`，請參閱下列範例：
  + 對於二進位分類問題，標籤有兩個可能的值 `0` 和 `1`。如果標籤值 `1` 對樣本中觀察的人口統計群組有利，則 `label_values_or_threshold` 應設定為 `[1]`。
  + 對於多類別分類問題，標籤有三個可能的值 **bird**、**cat** 和 **dog**。如果後兩項定義偏差有利的人口統計群組，則 `label_values_or_threshold` 應設定為 `["cat","dog"]`。
  + 對於迴歸問題，標籤值是連續的，範圍從 `0` 到 `1`。如果大於 `0.5` 的值應將樣本指定為具有正面結果，則 `label_values_or_threshold` 應設定為 `0.5`。
+ **facet** - (選用) 偏差分析需要。facet 物件的陣列，由用以測量偏差的敏感屬性組成。您可以使用 facet 來瞭解資料集和模型的偏差特性，即使未使用敏感屬性來訓練模型也可以。如需詳細資訊，請參閱 [Amazon SageMaker Clarify 偏差和公平性條款](clarify-detect-data-bias.md#clarify-bias-and-fairness-terms) 中的 **Facet**。每個 facet 物件包含以下欄位：
  + **name\$1or\$1index** - (選用) 表格式資料集中敏感屬性欄的名稱或從零開始的索引。如果指定 `facet_dataset_uri`，則索引會參考 facet 資料集，而不是主資料集。
  + **value\$1or\$1threshold** - (選用) 如果 `facet` 為數值且 `label_values_or_threshold` 套用為下限以選取敏感群組，則需要此欄位。facet 值或閾值數陣列，表示偏差有利的敏感人口統計群組。如果 facet 資料類型為分類而且未提供 `value_or_threshold`，偏差指標會將每個唯一值 (而非所有值) 計算為一個群組。若要針對不同的 `facet` 資料類型設定 `value_or_threshold`，請參閱下列範例：
    + 對於二進位 facet 資料類型，功能有兩個可能的值 `0` 和 `1`。如果要計算每個值的偏差指標，則 `value_or_threshold` 可以省略或設定為空陣列。
    + 對於分類 facet 資料類型，功能有三個可能的值 **bird**、**cat** 和 **dog**。如果前兩項定義偏差有利的人口統計群組，則 `value_or_threshold` 應設定為 `["bird", "cat"]`。在此範例中，資料集範例會分割為兩個人口統計群組。有利群組中的 facet 有值 **bird** 或 **cat**，而不利群組中的 facet 有值 **dog**。
    + 對於數值 facet 資料類型，功能值是連續的，範圍從 `0` 到 `1`。例如，如果大於 `0.5` 的值應將樣本指定為有利，則 `value_or_threshold` 應設定為 `0.5`。在此範例中，資料集範例會分割為兩個人口統計群組。有利群組中的 facet 有大於 `0.5` 的值 ，而不利群組中的 facet 有小於或等於 `0.5` 的值。
+ **group\$1variable** - (選用) 資料欄的名稱或從零開始的索引，指出要用於偏差指標 [條件式的人口統計差異 (CDD)](clarify-data-bias-metric-cddl.md) 或。[預測標籤 (CDDPL) 中的條件人口統計差異](clarify-post-training-bias-metric-cddpl.md) 的子群組。
+ **facet\$1dataset\$1uri** - (選用) 僅適用於當 dataset\$1type 是 `text/csv` 時。包含用於偏差分析的敏感屬性的資料集的 S3 URI。您可以使用 facet 來瞭解資料集和模型的偏差特性，即使未使用敏感屬性來訓練模型也可以。
**注意**  
如果 facet 資料集或主資料集分割為多個檔案，則 `joinsource_name_or_index` 必須指定識別符欄位以加入這兩個資料集。您必須使用參數 `facet` 來識別 facet 資料集中的每個 facet。
+ **facet\$1headers** - (選用) 僅在指定 `facet_dataset_uri` 時適用。字串陣列，其中包含 facet 資料集的欄位名稱，以及可選擇性包含識別碼欄標題以加入 facet 資料集和主資料集，請參閱`joinsource_name_or_index`。
+ **time\$1series\$1data\$1config** - (選用) 指定用於時間序列資料處理的組態。
  + **item\$1id** - 字串或從零開始的整數索引。此欄位用來尋找共用輸入資料集中的項目 ID。
  + **timestamp** - 字串或從零開始的整數索引。此欄位用來尋找共用輸入資料集中的時間戳記。
  + **dataset\$1format** - 可能的值為 `columns`、`item_records` 或 `timestamp_records`。此欄位用來描述 JSON 資料集的格式，這是時間序列可解釋性支援的唯一格式。
  + **target\$1time\$1series** - JMESPath 字串或從零開始的整數索引。此欄位用來尋找共用輸入資料集中的目標時間序列。如果此參數是字串，則除 `dataset_format` 以外的所有其他參數都必須是字串或字串清單。如果此參數是整數，則除 `dataset_format` 以外的所有其他參數都必須是整數或整數清單。
  + **related\$1time\$1series** - (選用) JMESPath 表達式的陣列。此欄位用來尋找共用輸入資料集中的所有相關時間序列，如果存在的話。
  + **static\$1covariates** - (選用) JMESPath 表達式的陣列。此欄位用來尋找共用輸入資料集中的所有靜態共變數欄位，如果存在的話。

  如需範例，請參閱 [時間序列資料集組態範例](clarify-processing-job-data-format-time-series.md#clarify-processing-job-data-format-time-series-ex)。
+ **methods** — 包含一或多個分析方法及其參數的物件。如果省略任何方法，則不會用於分析和報告。
  + **pre\$1training\$1bias** — 如果您想要計算訓練前偏差指標，請包含此方法。您可以在 [訓練前偏差指標](clarify-measure-data-bias.md) 中找到指標的詳細描述。物件具有下列參數：
    + **methods** — 包含您要計算的下列清單中任何訓練前偏差指標的陣列。設定 `methods` 為 **all** 以計算所有訓練前偏差指標。例如，陣列 `["CI", "DPL"]` 將計算**類別不平衡**和**標籤的比例差異**。
      + 適用於 [類別不平衡 (CI)](clarify-bias-metric-class-imbalance.md) 的 `CI`
      + 適用於 [標籤比例的差異](clarify-data-bias-metric-true-label-imbalance.md) 的 `DPL`
      + 適用於 [Kullback-Leibler 散度 (KL)](clarify-data-bias-metric-kl-divergence.md) 的 `KL`
      + 適用於 [Jensen-Shannon 偏差 (JS)](clarify-data-bias-metric-jensen-shannon-divergence.md) 的 `JS`
      + 適用於 [L p-規範 (LP)](clarify-data-bias-metric-lp-norm.md) 的 `LP`
      + 適用於 [總變化距離 (TVD)](clarify-data-bias-metric-total-variation-distance.md) 的 `TVD`
      + 適用於 [柯爾莫哥洛夫-斯米爾諾夫 (KS)](clarify-data-bias-metric-kolmogorov-smirnov.md) 的 `KS`
      + 適用於 [條件式的人口統計差異 (CDD)](clarify-data-bias-metric-cddl.md) 的 `CDDL`
  + **post\$1training\$1bias** — 如果您想要計算訓練後偏差指標，請包含此方法。您可以在 [訓練後資料和模型偏差指標](clarify-measure-post-training-bias.md) 中找到指標的詳細描述。`post_training_bias` 物件具有下列參數。
    + **methods** — 包含您要計算的下列清單中任何訓練後偏差指標的陣列。設定 `methods` 為 **all** 以計算所有訓練後偏差指標。例如，陣列 `["DPPL", "DI"]` 會計算**預測標籤中的正面比例差異**和**不同影響**。可用的方法如下所示。
      + 適用於 [預測標籤中正值比例的差異 (DPPL)](clarify-post-training-bias-metric-dppl.md) 的 `DPPL`
      + 適用於 [差別影響 (DI)](clarify-post-training-bias-metric-di.md) 的 `DI`
      + 適用於 [條件式接受的差異 (DCAcc)](clarify-post-training-bias-metric-dcacc.md) 的 `DCA`
      + 適用於 [條件式拒絕的差異 (DCR)](clarify-post-training-bias-metric-dcr.md) 的 `DCR`
      + 適用於 [特異性差異 (SD)](clarify-post-training-bias-metric-sd.md) 的 `SD`
      + 適用於 [召回差異 (RD)](clarify-post-training-bias-metric-rd.md) 的 `RD`
      + 適用於 [接受率 (DAR) 差異](clarify-post-training-bias-metric-dar.md) 的 `DAR`
      + 適用於 [拒絕率差異 (DRR)](clarify-post-training-bias-metric-drr.md) 的 `DRR`
      + 適用於 [準確度差異 (AD)](clarify-post-training-bias-metric-ad.md) 的 `AD`
      + 適用於 [處理方式平等 (TE)](clarify-post-training-bias-metric-te.md) 的 `TE`
      + 適用於 [預測標籤 (CDDPL) 中的條件人口統計差異](clarify-post-training-bias-metric-cddpl.md) 的 `CDDPL`
      + 適用於 [反事實翻轉測試 (FT)](clarify-post-training-bias-metric-ft.md) 的 `FT`
      + 適用於 [廣義熵 (GE)](clarify-post-training-bias-metric-ge.md) 的 `GE`
  + **shap** - 如果要計算 SHAP 值，請包括此方法。SageMaker Clarify 處理工作支援核心 SHAP 演算法。`shap` 物件具有下列參數。
    + **baseline** - (選用) SHAP 基準資料集，也稱為背景資料集。表格式資料集或電腦視覺問題中的基準資料集的其他需求如下。如需 SHAP 基準的詳細資訊，請參閱 [用於可解釋性的 SHAP 基準](clarify-feature-attribute-shap-baselines.md)
      + 對於**表格式**資料集，`baseline` 可以是基準檔案的就地基準資料或 S3 URI。如果未提供 `baseline`，SageMaker Clarify 處理工作會透過叢集輸入資料集來計算基準。以下是基準的必要條件：
        + 格式必須與 `dataset_type` 指定的資料集格式相同。
        + 基準只能包含模型可以接受為輸入的功能。
        + 基準資料集可以有一或多個執行個體。基準執行個體的數目會直接影響綜合資料集大小和工作執行期。
        + 如果指定 `text_config`，則文字欄的基準值是用來取代 `granularity` 指定的文字單位的字串。例如，一個常見的預留位置是 “[MASK]”，用來表示遺失或未知的單字或文字片段。

        下面的範例顯示如何為不同的 `dataset_type` 參數設定就地基準資料：
        + 如果 `dataset_type` 是 `text/csv` 或 `application/x-parquet`，則模型會接受四個數值特徵，且基準有兩個執行個體。在此範例中，如果一筆記錄有所有零特徵值，而另一筆記錄有所有一特徵值，則應將基準設定為 `[[0,0,0,0],[1,1,1,1]]`，不包含任何標題。
        + 如果 `dataset_type` 是 `application/jsonlines`，`features` 為四個數值特徵值清單的金鑰。此外，在這個範例中，如果基準有一筆具所有零值的記錄，則 `baseline` 應該是 `[{"features":[0,0,0,0]}]`。
        + 如果 `dataset_type` 是 `application/json`，`baseline` 資料集應具有與輸入資料集相同的結構和格式。
      + 對於**電腦視覺**問題，`baseline` 可以是影像的 S3 URI，用來遮蔽輸入影像中的特徵 (區段)。SageMaker Clarify 處理工作會載入遮蔽影像，並將其調整為與輸入影像相同的解析度。如果未提供基準，SageMaker Clarify 處理工作會以與輸入影像相同的解析度來產生[白色雜訊](https://en.wikipedia.org/wiki/White_noise)的遮蔽影像。
    + **features\$1to\$1explain** — (選用) 功能欄位的字串或從零開始的索引的陣列，以計算其 SHAP 值。如果未提供 `features_to_explain`，則會計算所有功能欄位的 SHAP 值。這些功能欄位不能包括標籤欄位或預測標籤欄位。只有具有數值和分類欄位的表格式資料集才支援`features_to_explain` 參數。
    + **num\$1clusters** — (選用) 資料集所分割成的叢集數以計算基準資料集。每個叢集都用來計算一個基準執行個體。如果未指定 `baseline`，SageMaker Clarify 處理工作會嘗試將表格式資料集分割為介於 `1` 和 `12` 之間的最佳叢集數來計算基準資料集。基準執行個體數會直接影響 SHAP 分析的執行期。
    + **num\$1samples** — (選用) 核心 SHAP 演算法中要使用的樣本數。如果未提供 `num_samples`，SageMaker Clarify 處理工作會為您選擇數量。樣本數會直接影響綜合資料集大小和工作執行期。
    + **seed** - (選用) 一個整數，用於初始化 SHAP 解釋器中的虛擬隨機數產生器，為相同工作產生一致的 SHAP 值。如果未指定 seed，則每次執行相同工作時，模型可能會輸出略有不同的 SHAP 值。
    + **use\$1logit** – (選用) 布林值，指出您要將 logit 函式套用至模型預測。預設為 `false`。如果 `use_logit` 是 `true`，則使用邏輯迴歸係數來計算 SHAP 值，該係數可解譯為對數機率比。
    + **save\$1local\$1shap\$1values** — (選用) 布林值，指出您要將資料集中每個記錄的本機 SHAP 值包含在分析結果中。預設為 `false`。

      如果主資料集分割為多個檔案或已啟動分散式處理，也可以使用參數 `joinsource_name_or_index` 來指定識別碼欄位。識別碼欄位和本機 SHAP 值會儲存在分析結果中。如此一來，您可以將每個記錄對應至其本機 SHAP 值。
    + **agg\$1method**— (選擇性) 用來將所有執行個體的本機 SHAP 值 (每個執行個體的 SHAP 值) 彙總至全域 SHAP 值 (整個資料集的 SHAP 值) 的方法。預設為 `mean_abs`。以下方法可用於彙總 SHAP 值。
      + **mean\$1abs**—所有執行個體的絕對本地 SHAP 值的平均值。
      + **mean\$1sq**—所有執行個體的平方本地 SHAP 值的平均值。
      + **中位數**—所有執行個體的本地 SHAP 值的中位數。
    + **text\$1config** - 自然語言處理可解釋性需要。如果您要將文字欄視為文字，請包含此組態，並針對個別文字單位提供解釋。如需自然語言處理可解釋性的分析組態範例，請參閱[自然語言處理解釋性的分析組態](#clarify-analysis-configure-nlp-example)
      + **粒度**—分析文字欄的粒度單位。有效值為 `token`、`sentence` 或 `paragraph`。**文字的每個單位都被視為一個功能**，並針對每個單位運算本機 SHAP 值。
      + **語言**—文字欄的語言。有效值為 **chinese**、**danish**、**dutch**、**english**、**french**、**german**、**greek**、**italian**、**japanese**、**lithuanian**、**multi-language**、**norwegian bokmål**、**polish**、**portuguese**、**romanian**、**russian**、**spanish**、**afrikaans**、**albanian**、**arabic**、**armenian**、**basque**、**bengali**、**bulgarian**、**catalan**、**croatian**、**czech**、**estonian**、**finnish**、**gujarati**、**hebrew**、**hindi**、**hungarian**、**icelandic**、**indonesian**、**irish**、**kannada**、**kyrgyz**、**latvian**、**ligurian**、**luxembourgish**、**macedonian**、**malayalam**、**marathi**、**nepali**、**persian**、**sanskrit**、**serbian**、**setswana**、**sinhala**、**slovak**、**slovenian**、**swedish**、**tagalog**、**tamil**、**tatar**、**telugu**、**thai**、**turkish**、**ukrainian**、**urdu**、**vietnamese**、**yoruba**。輸入 `multi-language` 以混合多種語言。
      + **max\$1top\$1tokens** — (選擇性) 根據全域 SHAP 值的頂端權杖數目上限。預設為 `50`。符記可能在資料集中多次出現。SageMaker Clarify 處理任務會彙總每個符記的 SHAP 值，然後根據其全域 SHAP 值選取頂端符記。所選頂端符記的全域 SHAP 值會包含在分析 .json 檔案的`global_top_shap_text`區段中。
      + 彙總的本機 SHAP 值。
    + **image\$1config**—電腦視覺解釋性需要。如果您有由映像組成的輸入資料集，並且想要在電腦視覺問題中分析這些資料集以解釋這些資料集，請包含此組態。
      + **model\$1type**—模型的類型。有效值包含：
        + 調校映像分類模型的 `IMAGE_CLASSIFICATION`。
        + 調校物件偵測模型的 `OBJECT_DETECTION`。
      + **max\$1objects** — 僅當 model\$1type 為時才適用**OBJECT\$1DETECTION**。由電腦視覺模型偵測到的最大物件數 (依可信度分數排序)。任何依可信度分數排名低於頂部 max\$1objects 的物件都會被篩選掉。預設為 `3`。
      + **context**—僅當模型類型為時適用。**OBJECT\$1DETECTION**它指示偵測到的物件邊界方框周圍區域是否被基線映像遮罩。有效值是 `0` 遮罩所有內容，或者`1`什麼都不遮罩。預設值為 1。
      + **iou\$1threshold** — 僅適用當 `model_type` 為 **OBJECT\$1DETECTION**。以原始偵測評估預測的交併比 (IOU) 計量下限。高 IOU 計量對應於預測和 Ground Truth 檢測框之間的大重疊。預設為 `0.5`。
      + **num\$1segments** ー (選擇性) 一個整數，用於決定要在輸入映像中標示的近似區段數。映像的每個區段都被視為一個功能，並且會針對每個區段運算本地 SHAP 值。預設為 `20`。
      + **segment\$1compactness** — (選擇性) 整數，用於決定由 [scikit-image slic](https://scikit-image.org/docs/dev/api/skimage.segmentation.html#skimage.segmentation.slic) 方法所產生之映像區段的形狀和大小。預設為 `5`。
  + **pdp** - 包含此方法來計算部分相依性圖 (PDP)。如需產生 PDP 的分析組態範例，請參閱[運算部分相依性繪圖 (PDP)](#clarify-analysis-configure-csv-example-pdp)
    + **功能**—如果未請求該`shap`方法，則為強制性。用於運算和繪製 PDP 繪圖的功能名稱或索引陣列。
    + **top\$1k\$1features** — (選擇性) 指定用於產生 PDP 繪圖的頂層特徵數目。如果 `features` 未提供，但請求 `shap` 方法，則 SageMaker Clarify 處理任務會根據其 SHAP 屬性選擇最上層功能。預設為 `10`。
    + **grid\$1resolution**—要將數值範圍分割成的儲存貯體數目。這會指定 PDP 繪圖的格點粒度。
  + **asymmetric\$1shapley\$1value** - 如果您想要計算時間序列預測模型的可解釋性指標，請包含此方法。SageMaker Clarify 處理任務支援非對稱 Shapley 值演算法。非對稱 Shapley 值是捨棄對稱軸的 Shapley 值變體。如需詳細資訊，請參閱[非對稱 Shapley 值：將因果知識納入模型無關的可解釋性](https://arxiv.org/abs/1910.06358)。使用這些值來判斷特徵對預測結果的貢獻。非對稱 Shapley 值會考慮預測模型作為輸入的時間序列資料的時間相依性。

    演算法包括下列參數：
    + **direction** - 可用的類型為 `chronological`、`anti_chronological` 和 `bidirectional`。時間結構可以按時間順序或反時間順序或兩者進行導覽。按時間順序的解譯是透過從第一個時間步驟開始向前迭代地新增資訊來建置的。按反時間順序的解譯會從最後一個步驟開始向後新增資訊。在出現近期性偏差的情況下，後者順序可能更合適，例如預測股票價格。
    + **granularity** - 要使用的說明精細程度。可用的精細程度選項如下所示：
      + **timewise** - `timewise` 解釋成本低廉，且僅提供特定時間步驟的相關資訊，例如了解過去第 n 天的資訊對預測未來第 m 天有多少貢獻。產生的歸因不會個別解釋共變數，也不會區分目標時間序列與相關時間序列。
      + **fine\$1grained** - `fine_grained` 解釋在運算上更為密集，但會提供輸入變數所有歸因的完整明細。此方法會計算大約的解釋，以減少執行時間。如需詳細資訊，請參閱下列參數 `num_samples`。
**注意**  
`fine_grained` 解釋僅支援 `chronological` 順序。
    + **num\$1samples** - (選用) `fine_grained` 解釋需要此引數。數字越高，近似值越精確。此數字應隨輸入特徵的維度而擴展。經驗法則是，如果結果不太大，則將此變數設定為 *(1 \$1 max (相關時間序列的數量、靜態共變數的數量）)^2*。
    + **baseline** - (選用) 取代對應資料集 (也稱為背景資料) out-of-coalition 值的基準組態。下列程式碼片段說明基準組態的範例。

      ```
      {
          "related_time_series": "zero",
          "static_covariates": {
              <item_id_1>: [0, 2],
              <item_id_2>: [-1, 1]
          },
          "target_time_series": "zero"
      }
      ```
      + 對於目標時間序列或相關時間序列等時間資料，基準值類型可以是下列其中一個值：
        + `zero` - 所有 out-of-coalition 值都會取代為 0.0。
        + `mean` - 所有 out-of-coalition 值都會取代為時間序列的平均值。
      + 對於靜態共變數，只有在模型請求接受靜態共變數值時，才應該提供基準項目，在這種情況下，需要此欄位。應為每個項目提供基準做為清單。例如，如果您有一個資料集具有兩個靜態共變數，您的基準組態可能如下：

        ```
        "static_covariates": {
            <item_id_1>: [1, 1],
            <item_id_2>: [0, 1]
        }
        ```

        在上述範例中，*<item\$1id\$11>* 和 *<item\$1id\$12>* 是來自資料集的項目 ID。
  + **report** — (選用) 使用此物件可自訂分析報告。時間序列解釋任務不支援此參數。分析結果中有三份相同報告副本：Jupyter 筆記本報表、HTML 報告和 PDF 報告。此物件具有下列參數：
    + **name**—報表檔案的檔案名稱。例如，如果 `name` 是 **MyReport**，則報告檔案為 `MyReport.ipynb``MyReport.html`、和 `MyReport.pdf`。預設為 `report`。
    + **title** — (選用) 報表的標題字串。預設為 **SageMaker AI Analysis Report**。
+ **predictor**—如果分析需要來自模型的預測，則需要此選項。例如，當請求 `shap`、`asymmetric_shapley_value`、`pdp` 或 `post_training_bias` 方法時，不會提供預測標籤作為輸入資料集的一部分。以下是要搭配使用的參數`predictor`：
  + **model\$1name** - 由 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API 建立的 SageMaker AI 模型名稱。如果您指定`model_name`而不是 endpoint\$1name，SageMaker Clarify 處理任務會建立具有模型名稱 (稱為**陰影端點**) 的暫時端點，並從端點取得預測結果。運算完成後，任務會刪除陰影端點。如果模型是多模型，則必須指定 `target_model` 參數。如需多模型端點的詳細資訊，請參閱 [多模型端點](multi-model-endpoints.md)。
  + **endpoint\$1name\$1prefix** — (選擇性) 陰影端點的自訂名稱字首。如果您提供 `model_name` 而不是 `endpoint_name`，則是用。例如，如果要透過端點名稱限制端點存取，則提供 `endpoint_name_prefix`。字首必須與 [EndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html#sagemaker-CreateEndpoint-request-EndpointName) 模式相符，且其最大長度為 `23`。預設為 `sm-clarify`。
  + **initial\$1instance\$1count**—指定陰影端點的執行個體數目。如果您提供 model\$1name 而不是 endpoint\$1name，則需要此選項。`initial_instance_count` 的值可以與任務的 [InstanceCount](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_ProcessingClusterConfig.html#sagemaker-Type-ProcessingClusterConfig-InstanceCount) 不同，但我們建議使用 1:1 的比例。
  + **instance\$1type**—指定陰影端點的執行個體類型。如果您提供 `model_name` 而不是 `endpoint_name`，則需要此選項。作為一個範例，`instance_type` 可以設定為 “ml.m5.large”。在某些情況下，`instance_type`的指定值有助於減少模型推論時間。例如，若要有效執行，自然語言處理模型和電腦視覺模型通常需要圖表處理單元 (GPU) 執行個體類型。
  + **endpoint\$1name** - 由 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API 建立的 SageMaker AI 端點名稱。如果提供，`endpoint_name` 優先於 `model_name` 參數。使用現有端點減少陰影端點啟動程序的時間，但也可能導致該端點的負載大幅增加。此外，某些分析方法 (例如 `shap` 和 `pdp`) 會產生傳送至端點的合成資料集。這可能會導致端點的指標或擷取的資料被合成資料污染，這可能無法準確反映真實世界的使用情況。基於這些原因，通常不推薦使用現有的生產端點進行 SageMaker Clarify 分析。
  + **target\$1model** - 傳遞至 SageMaker AI [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#RequestSyntax) API TargetModel 參數的字串值。如果您的模型 (由 model\$1name 參數指定) 或端點 (由 endpoint\$1name 參數指定) 為多模型，則需要此選項。如需多模型端點的詳細資訊，請參閱 [多模型端點](multi-model-endpoints.md)。
  + **custom\$1attributes** — (選用) 字串可讓您提供有關提交至端點之推論請求的其他資訊。字串值會傳遞至 SageMaker AI [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#RequestSyntax) API 的 `CustomAttributes` 參數。
  + **content\$1type**—用於從端點取得預測的模型輸入格式。如果提供，則其會傳遞至 SageMaker AI [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#RequestSyntax) API 的 `ContentType` 參數。
    + 對於電腦視覺解釋性，有效值為 **image/jpeg**、**image/png** 或 **application/x-npy**。如 `content_type` 未提供，則預設值為 **image/jpeg**。
    + 對於時間序列預測可解釋性，有效值為 **application/json**。
    + 對於其他類型的解釋性，有效值為 **text/csv**、**application/jsonlines,** 和 **application/json**。如果 `dataset_type` 是 **application/x-parquet**，則需要 `content_type` 的值。否則 `content_type` 預設值為 `dataset_type` 參數。
  + **accept\$1type**—用於從端點取得預測的模型輸出格式。`accept_type` 的值會傳遞至 SageMaker AI [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#RequestSyntax) API 的 `Accept` 參數。
    + 對於電腦視覺解釋性，如果 `model_type` 是 “OBJECT\$1DETECTION”，則 `accept_type` 預設為 **application/json**。
    + 對於時間序列預測可解釋性，有效值為 **application/json**。
    + 對於其他類型的解釋性，有效值為 **text/csv**、**application/jsonlines**和 **application/json**。如果 `accept_type` 的值未提供，則 `accept_type` 預設為 `content_type` 參數的值。
  + **content\$1template**—用於從資料集記錄建構模型輸入的範本字串。只有在 `content_type` 參數值為 `application/jsonlines` 或 `application/json` 時，才會使用且需要 `content_template` 參數。

    當`content_type` 參數為時 `application/jsonlines`，範本應該只有一個預留位置 `$features`，在執行期會由功能清單取代。例如，如果範本是 `"{\"myfeatures\":$features}"`，且如果記錄具有三個數值功能值：`1`、`2` 和 `3`，則記錄將以 JSON 行的形式傳送至模型`{"myfeatures":[1,2,3]}`。

    如果 `content_type` 是 `application/json`，範本則可以有預留位置 `$record` 或 `records`。如果預留位置為`record`，則會將單一記錄取代為已套用 `record_template` 的範本記錄。在此情況下，一次只會將單一記錄傳送至模型。如果預留位置為 `$records`，則記錄會由記錄清單取代，每筆記錄都有提供的範本 `record_template`。
  + **record\$1template**—一個範本字串，用於從資料集執行個體建構模型輸入的每個記錄。它僅在 `content_type` 是 `application/json` 時使用和需要。範本字串可能包含下列其中一項：
    + 由功能值陣列取代的預留位置 `$features` 參數。其他可選預留位置可以取代 `$feature_names` 中的功能欄標題名稱。此可選的預留位置將替換為功能名稱的陣列。
    + 只有一個預留位置 `$features_kvp`，由鍵值對、功能名稱和功能值取代。
    + `headers` 模型組態中的一個功能。例如，由預留位置語法 `"${A}"` 註記的功能名稱`A`，將由 `A` 的功能值取代。

    `record_template` 的值用於 `content_template` 建構模型輸入。以下有一個顯示如何使用內容和記錄範本構建模型輸入的組態範例。

    在下列程式碼範例中，標題和功能定義如下。
    + ``headers`:["A", "B"]`
    + ``features`:[[0,1], [3,4]]`

    範例模型輸入如下。

    ```
    {
        "instances": [[0, 1], [3, 4]],
        "feature_names": ["A", "B"]
    }
    ```

    以下是用來建構先前的範例模型輸入的範例 `content_template` 和 `record_template` 參數值。
    + `content_template: "{\"instances\": $records, \"feature_names\": $feature_names}"`
    + `record_template: "$features"`

     在下列程式碼範例中，標題和功能定義如下。

    ```
    [
        { "A": 0, "B": 1 },
        { "A": 3, "B": 4 },
    ]
    ```

    以下是用來建構先前的範例模型輸入的範例 ` content_template` 和 `record_template` 參數值。
    + `content_template: "$records"`
    + `record_template: "$features_kvp"`

    以下是建構先前範例模型輸入的替代程式碼範例。
    + `content_template: "$records"`
    + `record_template: "{\"A\": \"${A}\", \"B\": \"${B}\"}"`

     在下列程式碼範例中，標題和功能定義如下。

    ```
    { "A": 0, "B": 1 }
    ```

    上面要構建的範例 content\$1template 和 record\$1template 參數值：先前的範例模型輸入如下。
    + `content_template: "$record"`
    + `record_template: "$features_kvp"`

    如需更多範例，請參閱[時間序列資料的端點請求](clarify-processing-job-data-format-time-series-request-jsonlines.md)。
  + **label** - (選用) 從零開始的整數索引或 JMESPath 運算式字串，用於從模型輸出擷取預測標籤以進行偏差分析。如果模型是多類別，且 `label` 參數從模型輸出中擷取所有預測標籤，則適用以下內容。時間序列不支援此特徵。
    + 需要 `probability` 參數才能從模型輸出中獲取相應的機率 (或分數)。
    + 選擇最高分的預測標籤。

    `label` 的值取決於 accept\$1type 參數的值，如下所示。
    + 如果 `accept_type` 是 **text/csv**，則 `label` 為模型輸出中任何預測標籤之索引。
    + 如果 `accept_type` 是 **application/jsonlines** 或 **application/json**，則 `label` 是應用於模型輸出以取得預測標籤的 JMESPath 表達式。
  + **label\$1headers** - (選用) 可以在資料集中使用標籤的值陣列。如果請求偏差分析，則還需要該 `probability` 參數從模型輸出中獲取相應的機率值 (分數)，並選擇最高分的預測標籤。如果請求解釋性分析，則使用標籤標題來美化分析報告。電腦視覺解釋性需要 `label_headers` 的值。例如，對於多類別分類問題，如果標籤有三個可能的值 **bird**、**cat** 和 **dog**，則 `label_headers` 應設定為 `["bird","cat","dog"]`。
  + **機率**— (選用) 從零開始的整數索引或 JMESPath 運算式字串，用於擷取機率 (分數) 以進行解釋性分析 (但不適用於時間序列可解釋性)，或選擇偏差分析的預測標籤。`probability` 的值取決於 `accept_type` 參數的值，如下所示。
    + 如果 `accept_type` 是 **text/csv**，則 `probability` 為模型輸出中機率 (分數) 的索引。如果 `probability` 未提供，則會將整個模型輸出視為機率 (分數)。
    + 如果 `accept_type` 是 JSON 資料 (**application/jsonlines** 或 **application/json**)，則 `probability` 應該是用於從模型輸出中擷取機率(分數)的 JMESPath 表達式。
  + **time\$1series\$1predictor\$1config** - (選用) 僅用於時間序列可解釋性。用來指示 SageMaker Clarify 處理器如何從 `dataset_uri` 中以 S3 URI 形式傳遞的資料正確剖析資料。
    + **forecast** – 用來擷取預測結果的 JMESPath 表達式。

## 範例分析組態檔案
<a name="clarify-processing-job-configure-analysis-examples"></a>

以下各節包含 CSV 格式、JSON 行格式資料以及自然語言處理 (NLP)、電腦視覺 (CV) 和時間序列 (TS) 可解釋性的範例分析組態檔案。

### CSV 資料集的分析組態
<a name="clarify-analysis-configure-csv-example"></a>

以下的範例顯示如何設定 CSV 格式之表格式資料集的偏差和解釋性分析。在這些範例中，內送資料集具有四個功能資料欄，以及一個二進位標籤資料欄`Target`。資料集的檔案內容如下。`1`的標籤值表示正面結果。資料集會透過 `dataset` 處理輸入提供給 SageMaker Clarify 任務。

```
"Target","Age","Gender","Income","Occupation"
0,25,0,2850,2
1,36,0,6585,0
1,22,1,1759,1
0,48,0,3446,1
...
```

以下各章節說明如何運算訓練前和訓練後偏差指標、SHAP 值以及部分相依性繪圖 (PDP)，以顯示 CSV 格式資料集的功能重要性。

#### 運算所有訓練前偏差指標
<a name="clarify-analysis-configure-csv-example-metrics"></a>

此範例組態顯示如何測量先前的範例資料集是否偏向 **Gender** 值為 `0` 的範例。下列分析組態說明 SageMaker Clarify 處理任務運算資料集的所有訓練前偏差指標。

```
{
    "dataset_type": "text/csv",
    "label": "Target",
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        }
    }
}
```

#### 運算所有訓練後偏差指標
<a name="clarify-analysis-configure-csv-example-postmetrics"></a>

您可以在訓練前運算訓練前偏差指標。但是，您必須擁有訓練好的模型才能運算訓練後的偏差指標。下列範例輸出來自二進制分類模型，該模型以 CSV 格式輸出資料。在此範例輸出中，每一列都包含兩欄。第一欄包含預測標籤，第二欄則包含該標籤的機率值。

```
0,0.028986845165491
1,0.825382471084594
...
```

下列組態範例說明 SageMaker Clarify 處理任務，使用資料集和模型輸出的預測來運算所有可能的偏差指標。在此範例中，模型會部署至 SageMaker AI 端點 `your_endpoint`。

**注意**  
在下列範例程式碼中，未設定和參數 `content_type` 和 `accept_type`。因此，它們會自動使用參數 dataset\$1type 的值，也就是 `text/csv`。

```
{
    "dataset_type": "text/csv",
    "label": "Target",
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        },
        "post_training_bias": {
            "methods": "all"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "label": 0
    }
}
```

#### 運算 SHAP 值
<a name="clarify-analysis-configure-csv-example-shap"></a>

以下範例分析組態說明任務運算 SHAP 值，將 `Target` 欄指定為標籤，並將所有其他欄指定為功能。

```
{
    "dataset_type": "text/csv",
    "label": "Target",
    "methods": {
        "shap": {
            "num_clusters": 1
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "probability": 1
    }
}
```

在此範例中，會省略 SHAP `baseline` 參數，且 `num_clusters` 參數的值為 `1`。這會指示 SageMaker Clarify 處理器運算一個 SHAP 基準範例。在此範例中，機率設定為 `1`。這會指示 SageMaker Clarify 處理任務從模型輸出的第二欄擷取機率分數 (使用從零開始的索引)。

#### 運算部分相依性繪圖 (PDP)
<a name="clarify-analysis-configure-csv-example-pdp"></a>

下列範例顯示如何使用 PDP 在分析報告中檢視 `Income` 功能的重要性。報告參數會指示 SageMaker Clarify 處理任務產生報告。任務完成後，產生的報告會以 report.pdf 的形式儲存至 `analysis_result` 位置。`grid_resolution` 參數會將功能值的範圍劃分為 `10` 儲存貯體。在下列範例中指定的參數一起指示 SageMaker Clarify 處理任務產生一個報告，其中包含在 x 軸上具有 `10` 區段的 `Income` PDP 圖表的報告。y 軸將顯示對 `Income` 預測的邊際影響。

```
{
    "dataset_type": "text/csv",
    "label": "Target",
    "methods": {
        "pdp": {
            "features": ["Income"],
            "grid_resolution": 10
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "probability": 1
    },
}
```

#### 運算偏差指標和功能重要性
<a name="clarify-analysis-configure-csv-example-fi"></a>

 您可以將之前的組態範例中，所有方法合併為單一分析組態檔案，然後透過單一任務進行全部運算。下列範例顯示結合所有步驟的分析組態。

在此範例中，`probability` 參數設定為 `1`，指出機率包含在第二欄中 (使用從零開始的索引)。但是，由於偏差分析需要預測標籤，因此 `probability_threshold` 參數設定為 `0.5`，將機率分數轉換為二進位標籤。在此範例中，部分相依繪圖 `pdp` 方法的 `top_k_features` 參數設定為 `2`。這會指示 SageMaker Clarify 處理任務針對具有最大全域 SHAP 值的頂部 `2` 功能運算部分相依性繪圖 (PDP)。

```
{
    "dataset_type": "text/csv",
    "label": "Target",
    "probability_threshold": 0.5,
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        },
        "post_training_bias": {
            "methods": "all"
        },
        "shap": {
            "num_clusters": 1
        },
        "pdp": {
            "top_k_features": 2,
            "grid_resolution": 10
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "probability": 1
    }
}
```

您可以使用 `model_name` 參數將 SageMaker AI 模型的名稱提供給 SageMaker Clarify 處理任務，而不是將模型部署到端點。下列範例示範如何指定名為 **your\$1model** 的模型。SageMaker Clarify 處理任務將使用組態建立陰影端點。

```
{
     ...
    "predictor": {
        "model_name": "your_model",
        "initial_instance_count": 1,
        "instance_type": "ml.m5.large",
        "probability": 1
    }
}
```

### JSON 行資料集的分析組態
<a name="clarify-analysis-configure-JSONLines-example"></a>

下列範例說明如何針對 JSON 行格式的表格式資料集設定偏差分析和解釋性分析。在這些範例中，內送資料集具有與上一節相同的資料，但它們採用 SageMaker AI JSON 行密集格式。每行都是有效的 JSON 物件。主要 “特徵” 指向特徵值的陣列，主要 “標籤” 指向 Ground Truth 標籤。資料集是由 “資料集” 處理輸入提供給 SageMaker Clarify 工作。如需 JSON Lines 的詳細資訊，請參閱 [JSONLINES 請求格式](cdf-inference.md#cm-jsonlines)。

```
{"Features":[25,0,2850,2],"Label":0}
{"Features":[36,0,6585,0],"Label":1}
{"Features":[22,1,1759,1],"Label":1}
{"Features":[48,0,3446,1],"Label":0}
...
```

下列各章節說明如何運算訓練前和訓練後偏差指標、SHAP 值，以及部分相依性繪圖 (PDP)，以 JSON 行格式顯示資料集的功能重要性。

#### 運算訓練前的偏向指標
<a name="clarify-analysis-configure-JSONLines-pretraining"></a>

指定標籤、功能、格式和方法，以測量 `Gender` 值為`0` 的訓練前偏差指標。在下列範例中，`headers` 參數會先提供功能名稱。標籤名稱最後提供。按照慣例，最後一個標題是標籤標題。

此 `features` 參數設定為 JMESPath 運算式 “特徵”，以便 SageMaker Clarify 處理工作可以從每個記錄中擷取特徵陣列。此 `label` 參數設定為 JMESPath 運算式 “標籤”，以便 SageMaker Clarify 處理工作可以從每個記錄中擷取 Ground Truth 標籤。使用面向名稱來指定敏感屬性，如下所示。

```
{
    "dataset_type": "application/jsonlines",
    "headers": ["Age","Gender","Income","Occupation","Target"],
    "label": "Label",
    "features": "Features",
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        }
    }
}
```

#### 運算所有偏差指標
<a name="clarify-analysis-configure-JSONLines-bias"></a>

您必須擁有訓練好的模型，才能運算訓練後的偏差指標。下列範例來自二進制分類模型，該模型會以範例的格式輸出 JSON 行資料。模型輸出的每一列都是有效的 JSON 物件。鍵`predicted_label`指向預測標籤，鍵`probability`指向機率值。

```
{"predicted_label":0,"probability":0.028986845165491}
{"predicted_label":1,"probability":0.825382471084594}
...
```

您可以將模型部署到名為 `your_endpoint` 的 SageMaker AI 端點。下列範例分析組態說明 SageMaker Clarify 處理任務運算資料集和模型的所有可能偏差指標。在此範例中，參數 `content_type` 和 `accept_type` 未設定。因此，它們會自動設定為使用參數 dataset\$1type 的值，也就是 `application/jsonlines`。SageMaker Clarify 處理任務使用 `content_template` 參數來構成模型輸入，方法是以功能陣列取代 `$features` 預留位置。

```
{
    "dataset_type": "application/jsonlines",
    "headers": ["Age","Gender","Income","Occupation","Target"],
    "label": "Label",
    "features": "Features",
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        },
        "post_training_bias": {
            "methods": "all"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "{\"Features\":$features}",
        "label": "predicted_label"
    }
}
```

#### 運算 SHAP 值
<a name="clarify-analysis-configure-JSONLines-shap"></a>

由於 SHAP 分析不需要 Ground Truth 標籤，因此會省略 `label` 參數。在此範例中，也會省略 `headers` 參數。因此，SageMaker Clarify 處理任務必須使用一般名稱 (例如 `column_0` 或 `column_1` 功能標題) 以及 `label0`，為標籤標題產生預留位置。您可以指定 `headers` 和 a `label` 的值，以提高分析結果的可讀性。由於機率參數設定為 JMESPath 表達式 `probability`，機率值將從模型輸出中擷取。以下是運算 SHAP 值的範例。

```
{
    "dataset_type": "application/jsonlines",
    "features": "Features",
    "methods": {
        "shap": {
            "num_clusters": 1
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "{\"Features\":$features}",
        "probability": "probability"
    }
}
```

#### 運算部分相依性繪圖 (PDP)
<a name="clarify-analysis-configure-JSONLines-pdp"></a>

下列範例示範如何檢視 PDP 上 “收入” 的重要性。在此範例中，不會提供功能標題。因此，`pdp` 方法的 `features` 參數必須使用從零開始的索引來參考功能資料欄的位置。`grid_resolution` 參數會將功能值的範圍劃分為 `10` 儲存貯體。範例中的參數共同指示 SageMaker Clarify 處理任務產生一個報告，其中包含在 X 軸上具有 `10` 區段的 `Income` PDP 圖表。y 軸將顯示對 `Income` 預測的邊際影響。

```
{
    "dataset_type": "application/jsonlines",
    "features": "Features",
    "methods": {
        "pdp": {
            "features": [2],
            "grid_resolution": 10
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "{\"Features\":$features}",
        "probability": "probability"
    }
}
```

#### 運算偏差指標和功能重要性
<a name="clarify-analysis-configure-JSONLines-fi-metrics"></a>

您可以將所有先前的方法合併為一個分析組態檔案，然後透過單一任務來運算它們。下列範例顯示結合所有步驟的分析組態。在此範例中，已設定 `probability` 參數。但是由於偏差分析需要預測標籤，因此 `probability_threshold` 參數被設定為 `0.5`，將機率分數轉換為二進制標籤。在此範例中，`pdp` 方法的 `top_k_features` 參數設定為 `2`。這會指示 SageMaker Clarify 處理任務運算具有最大全域 SHAP 值的頂層 `2` 功能的 PDP。

```
{
    "dataset_type": "application/jsonlines",
    "headers": ["Age","Gender","Income","Occupation","Target"],
    "label": "Label",
    "features": "Features",
    "probability_threshold": 0.5,
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        },
        "post_training_bias": {
            "methods": "all"
        },
        "shap": {
            "num_clusters": 1
        },
        "pdp": {
            "top_k_features": 2,
            "grid_resolution": 10
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "{\"Features\":$features}",
        "probability": "probability"
    }
}
```

### JSON 資料集的分析組態
<a name="clarify-analysis-configure-JSON-example"></a>

下列範例說明如何針對 JSON 格式的表格式資料集設定偏差和解釋性分析。在這些範例中，內送資料集具有與上一節相同的資料，但它們採用 SageMaker AI JSON 密集格式。如需 JSON Lines 的詳細資訊，請參閱 [JSONLINES 請求格式](cdf-inference.md#cm-jsonlines)。

整個輸入請求是有效的 JSON，其中外部結構是一個清單，每個元素是記錄的資料。在每個記錄中，關鍵 `Features` 指向功能值的陣列，並且關鍵 `Label` 指向 Ground Truth 標籤。資料集會透過 `dataset` 處理輸入提供給 SageMaker Clarify 任務。

```
[
    {"Features":[25,0,2850,2],"Label":0},
    {"Features":[36,0,6585,0],"Label":1},
    {"Features":[22,1,1759,1],"Label":1},
    {"Features":[48,0,3446,1],"Label":0},
    ...
]
```

下列各章節說明如何運算訓練前和訓練後偏差指標量、SHAP 值，以及部分依賴性繪圖 (PDP)，這些圖表顯示JSON 行格式的資料集的功能重要性。

#### 運算訓練前的偏向指標
<a name="clarify-analysis-configure-JSON-example-pretraining"></a>

指定標籤、功能、格式和方法，以測量 `Gender` 值為`0` 的訓練前偏差指標。在下列範例中，`headers` 參數會先提供功能名稱。標籤名稱最後提供。對於 JSON 資料集，最後一個標題是標籤標題。

`features` 參數設定為擷取二維陣列或矩陣的 JMESPath 運算式。此矩陣中的每一列都必須包含每筆記錄 `Features` 的清單。`label` 參數設定為 JMESPath 表達式，該表達式擷取 Ground Truth 標籤清單。此清單中的每個元素都必須包含記錄的標籤。

使用面向名稱來指定敏感屬性，如下所示。

```
{
    "dataset_type": "application/json",
    "headers": ["Age","Gender","Income","Occupation","Target"],
    "label": "[*].Label",
    "features": "[*].Features",
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        }
    }
}
```

#### 運算所有偏差指標
<a name="clarify-analysis-configure-JSON-example-bias"></a>

您必須擁有訓練好的模型，才能運算訓練後的偏差指標。下列程式碼範例來自二進制分類模型，該模型會以範例的格式輸出 JSON 資料。在範例中，`predictions` 下的每個元素都是記錄的預測輸出。範例程式碼包含指向預測標籤的鍵 `predicted_label`，以及指向機率值的鍵 `probability`。

```
{
    "predictions": [
        {"predicted_label":0,"probability":0.028986845165491},
        {"predicted_label":1,"probability":0.825382471084594},
        ...
    ]
}
```

您可以將模型部署到名為 `your_endpoint` 的 SageMaker AI 端點。

在下列範例中，未設定 `content_type` 和 `accept_type` 參數。因此，`content_type` 和 `accept_type` 自動設定為使用參數 `dataset_type` 值，即 `application/json`。然後，SageMaker Clarify 處理任務會使用 `content_template` 參數來構成模型輸入。

在下列範例中，模型輸入是以記錄陣列取代 `$records` 預留位置所組構成。然後，`record_template` 參數會組成每個記錄的 JSON 結構，並以每個記錄的功能陣列取代 `$features` 預留位置。

下列範例分析組態說明 SageMaker Clarify 處理任務運算資料集和模型的所有可能偏差指標。

```
{
    "dataset_type": "application/json",
    "headers": ["Age","Gender","Income","Occupation","Target"],
    "label": "[*].Label",
    "features": "[*].Features",
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        },
        "post_training_bias": {
            "methods": "all"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "$records",
        "record_template": "{\"Features\":$features}",
        "label": "predictions[*].predicted_label"
    }
}
```

#### 運算 SHAP 值
<a name="clarify-analysis-configure-JSON-example-shap"></a>

您不需要指定 SHAP 分析的標籤。在下列範例中，未指定 `headers` 參數。因此，SageMaker Clarify 處理任務將會使用一般名稱，例如功能標題 `column_0` 或 `column_1`，以及 `label0`，為標籤標題產生預留位置。您可以指定 `headers` 和 a `label` 的值，以提高分析結果的可讀性。

在下列組態範例中，機率參數設定為 JMESPath 運算式，該運算式會從每筆記錄的每個預測中擷取機率。以下是運算 SHAP 值的範例。

```
{
    "dataset_type": "application/json",
    "features": "[*].Features",
    "methods": {
        "shap": {
            "num_clusters": 1
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "$records",
        "record_template": "{\"Features\":$features}",
        "probability": "predictions[*].probability"
    }
}
```

#### 運算部分相依性繪圖 (PDP)
<a name="clarify-analysis-configure-JSON-example-pdp"></a>

下列範例示範如何在 PDP 中檢視功能重要性。在此範例中，不提供功能標題。因此，`pdp` 方法的 `features` 參數必須使用從零開始的索引來參考功能資料欄的位置。`grid_resolution` 參數會將功能值的範圍劃分為 `10` 儲存貯體。

下列範例中的參數共同指示 SageMaker Clarify 處理任務產生一個報告，其中包含在 x 軸上具有 `10` 區段的 `Income` PDP 圖表報告。y 軸顯示對預測的 `Income` 邊際影響。

下列組態範例顯示如何檢視 PDP `Income` 上的重要性。

```
{
    "dataset_type": "application/json",
    "features": "[*].Features",
    "methods": {
        "pdp": {
            "features": [2],
            "grid_resolution": 10
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "$records",
        "record_template": "{\"Features\":$features}",
        "probability": "predictions[*].probability"
    }
}
```

#### 運算偏差指標和功能重要性
<a name="clarify-analysis-configure-JSON-example-bias-fi"></a>

您可以將所有之前的組態方法合併為單一分析組態檔案，然後透過單一任務進行運算。下列範例顯示結合所有步驟的分析組態。

在此範例中，已設定 `probability` 參數。因為偏差分析需要預測標籤，所以 `probability_threshold` 參數設定為 `0.5`，用於將機率分數轉換為二進位標籤。在此範例中，`pdp` 方法的 `top_k_features` 參數設定為 `2`。這會指示 SageMaker Clarify 處理任務運算具有最大全域 SHAP 值的頂層 `2` 功能的 PDP。

```
{
    "dataset_type": "application/json",
    "headers": ["Age","Gender","Income","Occupation","Target"],
    "label": "[*].Label",
    "features": "[*].Features",
    "probability_threshold": 0.5,
    "label_values_or_threshold": [1],
    "facet": [
        {
            "name_or_index": "Gender",
            "value_or_threshold": [0]
        }
    ],
    "methods": {
        "pre_training_bias": {
            "methods": "all"
        },
        "post_training_bias": {
            "methods": "all"
        },
        "shap": {
            "num_clusters": 1
        },
        "pdp": {
            "top_k_features": 2,
            "grid_resolution": 10
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "endpoint_name": "your_endpoint",
        "content_template": "$records",
        "record_template": "{\"Features\":$features}",
        "probability": "predictions[*].probability"
    }
}
```

### 自然語言處理解釋性的分析組態
<a name="clarify-analysis-configure-nlp-example"></a>

下列範例顯示用於運算自然語言處理 (NLP) 之功能重要性的分析組態檔案。在此範例中，內送資料集是 CSV 格式的表格式資料集，其中包含一個二進位標籤資料欄和兩個功能資料欄，如下所示。資料集會透過 `dataset` 處理輸入提供給 SageMaker Clarify 任務。

```
0,2,"They taste gross"
1,3,"Flavor needs work"
1,5,"Taste is awful"
0,1,"The worst"
...
```

在此範例中，在先前的資料集上訓練了二進制分類模型。模型接受 CSV 資料，並在 `0` 和 `1` 之間輸出單一分數，如下所示。

```
0.491656005382537
0.569582343101501
...
```

該模型用於建立名為 “your\$1model” 的 SageMaker AI 模型。以下分析組態顯示如何使用模型和資料集執行權杖化的解釋性分析。此 `text_config` 參數會啟動 NLP 解釋性分析。該 `granularity` 參數指示分析應該剖析符記。

在英語中，每個符記都是一個單詞。下列範例也展示如何使用 4 的平均 “評比” 來提供就地 SHAP “基準線” 執行個體。特殊的遮罩符記 “[MASK]” 用於取代 “註解” 中的權杖 (文字)。此範例也會使用 GPU 端點執行個體類型來加速推論。

```
{
    "dataset_type": "text/csv",
    "headers": ["Target","Rating","Comments"]
    "label": "Target",
    "methods": {
        "shap": {
            "text_config": {
                "granularity": "token",
                "language": "english"
            }
            "baseline": [[4,"[MASK]"]],
        }
    },
    "predictor": {
        "model_name": "your_nlp_model",
        "initial_instance_count": 1,
        "instance_type": "ml.g4dn.xlarge"
    }
}
```

### 電腦視覺解釋性的分析組態
<a name="clarify-analysis-configure-computer-vision-example"></a>

以下的範例顯示了一個分析組態檔案運算功能對電腦視覺的重要性。在此範例中，輸入資料集由 JPEG 映像組成。資料集會透過 `dataset` 處理輸入提供給 SageMaker Clarify 任務。此範例顯示如何使用 SageMaker 映像分類模型設定解釋性分析。在這個範例中，一個名為 `your_cv_ic_model` 的模型已經被訓練，以對輸入的 JPEG 映像的動物進行分類。

```
{
    "dataset_type": "application/x-image",
    "methods": {
        "shap": {
             "image_config": {
                "model_type": "IMAGE_CLASSIFICATION",
                 "num_segments": 20,
                "segment_compactness": 10
             }
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "model_name": "your_cv_ic_model",
        "initial_instance_count": 1,
        "instance_type": "ml.p2.xlarge",
        "label_headers": ["bird","cat","dog"]
    }
}
```

如需影像分類的詳細資訊，請參閱[影像分類 - MXNet](image-classification.md)。

在此範例中，[SageMaker AI 物件偵測模型](https://docs.aws.amazon.com/sagemaker/latest/dg/object-detection.html)，`your_cv_od_model` 會在相同的 JPEG 影像上進行訓練，以識別其上的動物。以下的範例說明如何設定物件偵測模型的解釋性分析。

```
{
    "dataset_type": "application/x-image",
    "probability_threshold": 0.5,
    "methods": {
        "shap": {
             "image_config": {
                "model_type": "OBJECT_DETECTION",
                 "max_objects": 3,
                "context": 1.0,
                "iou_threshold": 0.5,
                 "num_segments": 20,
                "segment_compactness": 10
             }
        },
        "report": {
            "name": "report"
        }
    },
    "predictor": {
        "model_name": "your_cv_od_model",
        "initial_instance_count": 1,
        "instance_type": "ml.p2.xlarge",
        "label_headers": ["bird","cat","dog"]
    }
}
```

### 時間序列預測模型可解釋性的分析組態
<a name="clarify-analysis-configure-time-series-example"></a>

下列範例說明用於計算時間序列 (TS) 特徵重要性的分析組態檔案。在此範例中，內送資料集是 JSON 格式的時間序列資料集，具有一組動態和靜態共變數特徵。資料集會透過資料集處理輸入 `dataset_uri` 提供給 SageMaker Clarify 任務。

```
[
    {
        "item_id": "item1",
        "timestamp": "2019-09-11",
        "target_value": 47650.3,
        "dynamic_feature_1": 0.4576,
        "dynamic_feature_2": 0.2164,
        "dynamic_feature_3": 0.1906,
        "static_feature_1": 3,
        "static_feature_2": 4
    },
    {
        "item_id": "item1",
        "timestamp": "2019-09-12",
        "target_value": 47380.3,
        "dynamic_feature_1": 0.4839,
        "dynamic_feature_2": 0.2274,
        "dynamic_feature_3": 0.1889,
        "static_feature_1": 3,
        "static_feature_2": 4
    },
    {
        "item_id": "item2",
        "timestamp": "2020-04-23",
        "target_value": 35601.4,
        "dynamic_feature_1": 0.5264,
        "dynamic_feature_2": 0.3838,
        "dynamic_feature_3": 0.4604,
        "static_feature_1": 1,
        "static_feature_2": 2
    },
]
```

下列各節說明如何使用 JSON 資料集的非對稱 Shapley 值演算法來計算預測模型的特徵歸因。

#### 計算時間序列預測模型的解釋
<a name="clarify-processing-job-configure-analysis-feature-attr"></a>

下列範例分析組態會顯示任務用來為時間序列預測模型計算解釋的選項。

```
{
    'dataset_type': 'application/json',
    'dataset_uri': 'DATASET_URI',
    'methods': {
        'asymmetric_shapley_value': {
            'baseline': {
                "related_time_series": "zero",
                "static_covariates": {
                    "item1": [0, 0], "item2": [0, 0]
                },
                "target_time_series": "zero"
            },
            'direction': 'chronological',
            'granularity': 'fine_grained',
            'num_samples': 10
        },
        'report': {'name': 'report', 'title': 'Analysis Report'}
    },
    'predictor': {
        'accept_type': 'application/json',
        'content_template': '{"instances": $records}',
        'endpoint_name': 'ENDPOINT_NAME', 
        'content_type': 'application/json',              
        'record_template': '{
            "start": $start_time, 
            "target": $target_time_series, 
            "dynamic_feat": $related_time_series, 
            "cat": $static_covariates
        }',
        'time_series_predictor_config': {'forecast': 'predictions[*].mean[:2]'}
    },
    'time_series_data_config': {
        'dataset_format': 'timestamp_records',
        'item_id': '[].item_id',
        'related_time_series': ['[].dynamic_feature_1', '[].dynamic_feature_2', '[].dynamic_feature_3'],
        'static_covariates': ['[].static_feature_1', '[].static_feature_2'],
        'target_time_series': '[].target_value',
        'timestamp': '[].timestamp'
    }
}
```

##### 時間序列可解釋性組態
<a name="clarify-processing-job-configure-analysis-feature-attr-tsconfig"></a>

上述範例使用 `methods` 中的 `asymmetric_shapley_value` 來定義時間序列可解釋性引數，例如基準、方向、精細程度和範例數量。所有三種類型的資料都會設定基準值：相關時間序列、靜態共變數和目標時間序列。這些欄位會指示 SageMaker Clarify 處理器一次計算一個項目的特徵歸因。

##### 預測器組態
<a name="clarify-processing-job-configure-analysis-feature-attr-predictconfig"></a>

您可以使用 JMESPath 語法，完全控制 SageMaker Clarify 處理器傳送的承載結構。在上述範例中，`predictor` 組態會指示 Clarify 將記錄彙總為 `'{"instances": $records}'`，其中每筆記錄都是使用範例中為 `record_template` 提供的引數來定義。請注意，`$start_time`、`$target_time_series`、`$related_time_series` 和 `$static_covariates` 是用來將資料集值對應至端點請求值的內部字符。

同樣地，`time_series_predictor_config` 中的屬性 `forecast` 用來從端點回應擷取模型預測。例如，您的端點批次回應可能如下：

```
{
    "predictions": [
        {"mean": [13.4, 3.6, 1.0]}, 
        {"mean": [23.0, 4.7, 3.0]}, 
        {"mean": [3.4, 5.6, 2.0]}
    ]
}
```

假設您指定下列時間序列預測器組態：

```
'time_series_predictor_config': {'forecast': 'predictions[*].mean[:2]'}
```

預測值會剖析如下：

```
[
    [13.4, 3.6],
    [23.0, 4.7],
    [3.4, 5.6]
]
```

##### 資料組態
<a name="clarify-processing-job-configure-analysis-feature-attr-dataconfig"></a>

使用 `time_series_data_config` 屬性指示 SageMaker Clarify 處理器從 `dataset_uri` 中以 S3 URI 形式傳遞的資料正確剖析資料。

# 資料格式相容性指南
<a name="clarify-processing-job-data-format"></a>

本指南說明與 SageMaker Clarify 處理任務相容的資料格式類型。支援的資料格式類型包含副檔名、資料結構，以及表格式、影像和時間序列資料集的特定要求或限制。本指南也會說明如何檢查您的資料集是否符合這些需求。

在高層級上，SageMaker Clarify 處理任務會遵循輸入程序輸出模型來運算偏差指標和功能屬性。請參考以下範例了解詳細資訊。

SageMaker Clarify 處理任務的輸入包含下列項目：
+ 要分析的資料集。
+ 分析組態。如需如何設定分析的詳細資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

在處理階段，SageMaker Clarify 會運算偏差指標和功能屬性。SageMaker Clarify 處理任務會在後端完成下列步驟：
+ SageMaker Clarify 處理任務會剖析您的分析組態並載入您的**資料集**。
+ 若要運算訓練後偏差指標和功能屬性，此任務需要您的模型預測模型。SageMaker Clarify 處理任務會序列化您的資料，並將其作為**請求**傳送至部署在 SageMaker AI 即時推論**端點**上的模型。之後，SageMaker Clarify 處理任務會從**回應**中擷取預測。
+ SageMaker Clarify 處理任務會執行偏差和解釋性分析，然後輸出結果。

如需詳細資訊，請參閱[SageMaker Clarify 處理工作的運作方式](clarify-configure-processing-jobs.md#clarify-processing-job-configure-how-it-works)。

您用來指定資料格式的參數取決於資料在處理流程中使用的位置，如下所示：
+ 對於**輸入資料集**，請使用 `dataset_type` 參數來指定格式或 MIME 類型。
+ 對於端點的**請求**，請使用 `content_type` 參數來指定格式。
+ 對於來自端點的**回應**，請使用 `accept_type` 參數來指定格式。

端點的輸入資料集、請求和來自端點的回應不需要相同的格式。例如，在符合下列條件的情況下，您可以使用具有 CSV **請求有效負載**和 JSON 行**回應有效負載**的 Parquet 資料集。
+ 您的分析設定正確。
+ 您的模型支援請求和回應格式。

**注意**  
如果未提供 `content_type` 或 `accept_type`，則 SageMaker Clarify 容器會推論 `content_type` 和 `accept_type`。

**Topics**
+ [表格式資料](clarify-processing-job-data-format-tabular.md)
+ [影像資料要求](clarify-processing-job-data-format-image.md)
+ [時間序列資料](clarify-processing-job-data-format-time-series.md)

# 表格式資料
<a name="clarify-processing-job-data-format-tabular"></a>

表格式資料是指可以載入到二維資料影格中的資料。在影格中，每一行代表一條記錄，每條記錄都有一個或多個資料欄。每個資料框儲存格內的值可以是數值、分類或文字資料類型。

## 表格式資料集先決條件
<a name="clarify-processing-job-data-format-tabular-prereq"></a>

在進行分析之前，您的資料集應該已經套用了任何必要的預先處理步驟。這包含資料清理或功能工程。

您可以提供一或多個資料集。如果您提供多個資料集，請使用下列指令將其識別為 SageMaker Clarify 處理任務。
+ 使用命名為 `dataset` 的 [ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingInput.html) 或分析組態 `dataset_uri` 來指定主資料集。如需 `dataset_uri` 的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md) 中的參數清單。
+ 使用分析組態檔案中提供的 `baseline` 參數。SHAP 分析需要基準資料集。如需分析組態檔案的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

下表列出支援的資料格式、其副檔名和 MIME 類型。


| 資料格式 | 副檔名 | MIME 類型 | 
| --- | --- | --- | 
|  CSV  |  csv  |  `text/csv`  | 
|  JSON 行  |  JSOL  |  `application/jsonlines`  | 
|  JSON  |  json  |  `application/json`  | 
|  Parquet  |  parquet  |  “application/x-parquet”  | 

以下各章節顯示 CSV、JSON 行和 Apache Parquet 格式的範例表格式資料集。

### CSV 格式的表格式資料集先決條件
<a name="clarify-processing-job-data-format-tabular-prereq-csv"></a>

SageMaker Clarify 處理任務的設計是為了以 [csv.excel](https://docs.python.org/3/library/csv.html#csv.excel) 方言載入 CSV 資料檔案。但是，它具有足夠的靈活性，可以支援其他行終止程式，包含 `\n` 和 `\r`。

為了相容性，提供給 SageMaker Clarify 處理任務的所有 CSV 資料檔案都必須以 UTF-8 編碼。

如果您的資料集不包含標題列，請執行下列作業：
+ 將分析組態標籤設定為索引 `0`。這代表首欄是 Ground Truth 標籤。
+ 如果參數 `headers` 已設定，請將 `label` 設定為標示欄標題，以指示標籤欄的位置。所有其他資料欄都被設定為功能。

  以下是不包含標題列的資料集範例。

  ```
  1,5,2.8,2.538,This is a good product
  0,1,0.79,0.475,Bad shopping experience
  ...
  ```

如果您的資料包含標題列，請將參數 `label` 設定為 index `0`。若要指示標籤欄的位置，請使用 Ground Truth 標籤標題`Label`。所有其他資料欄都被設定為功能。

以下為包含標題列的資料集範例。

```
Label,Rating,A12,A13,Comments
1,5,2.8,2.538,This is a good product
0,1,0.79,0.475,Bad shopping experience
...
```

### JSON 格式的表格式資料集必要條件
<a name="clarify-processing-job-data-format-tabular-prereq-json"></a>

JSON 是一種靈活的格式，用於表示包含任何複雜層級的結構化資料。SageMaker Clarify 對 JSON 的支援並不限於任何特定的格式，因此與 CSV 或 JSON 行格式的資料集相比，允許更靈活的資料格式。本指南說明如何作為 JSON 格式匯出格式的表格式資料設定分析組態。

**注意**  
為確保相容性，提供給 SageMaker Clarify 處理任務的所有 JSON 資料檔案都必須以 UTF-8 編碼。

以下是包含最上層鍵、功能清單和標籤之記錄的範例輸入資料。

```
[
    {"features":[1,5,2.8,2.538,"This is a good product"],"label":1},
    {"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0},
    ...
]
```

上一個輸入範例資料集的範例組態分析應該設定下列參數：
+ 該 `label` 參數應使用 [JMESPath](https://jmespath.org/) 表達式 `[*].label` 來擷取資料集中每個記錄的 Ground Truth 標籤。JMESPath 表達式應該產生一個標籤清單，其中第 i 個標籤對應於第 i 個記錄。
+ `features` 參數應該使用 JMESPath 運算式 `[*].features` 來擷取資料集中每個記錄的功能陣列。JMESPath 運算式應該產生 2D 陣列或矩陣，其中第 i 列包含對應於第 i 個記錄的功能值。

  以下是包含最上層索引鍵和巢狀索引鍵的記錄的範例輸入資料，其中包含每個記錄的功能和標籤清單。

```
{
    "data": [
        {"features":[1,5,2.8,2.538,"This is a good product"],"label":1}},
        {"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0}}
    ]
}
```

上一個輸入範例資料集的範例組態分析應該設定下列參數：
+ 此`label`參數會使用 [JmesPath](https://jmespath.org/) 運算式`data[*].label`來擷取資料集中每個記錄的 Ground Truth 標籤。JMesPath 表達式應該產生一個標籤清單，其中第 i 個標籤用於第 i 個記錄。
+ 此 `features` 參數會使用 JMESPath 運算式 `data[*].features`，針對資料集中的每筆記錄擷取特徵陣列。JMESPath 運算式應該產生 2D 陣列或矩陣，其中第 i 列包含第 i 個記錄的功能值。

### JSON 行格式的表格式資料集先決條件
<a name="clarify-processing-job-data-format-tabular-prereq-jsonlines"></a>

JSON 行是一種文字格式，用於表示結構化資料，其中每一行都是一個有效的 JSON 物件。目前 SageMaker Clarify 處理任務僅支援 SageMaker AI 密集格式 JSON 行。為了符合所需的格式，記錄的所有功能都應列在單一 JSON 陣列中。如需 JSON Lines 的詳細資訊，請參閱 [JSONLINES 請求格式](cdf-inference.md#cm-jsonlines)。

**注意**  
提供給 SageMaker Clarify 處理任務的所有 JSON 行資料檔案必須以 UTF-8 編碼，以確保相容性。

以下是如何為包含**頂層鍵**和元素**清單**的記錄設定分析組態的範例。

```
{"features":[1,5,2.8,2.538,"This is a good product"],"label":1}
{"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0}
...
```

先前的資料集範例組態分析應該如下設定參數：
+ 若要指示 Ground Truth 標籤的位置，應將參數 `label` 設定為 JMESPath 運算式 `label`。
+ 若要指示功能陣列的位置，應將參數 `features` 設定為 JMESPath 運算式 `features`。

以下是如何為包含**頂層鍵**和包含元素**清單**的**巢狀鍵**的記錄設定分析組態的範例。

```
{"data":{"features":[1,5,2.8,2.538,"This is a good product"],"label":1}}
{"data":{"features":[0,1,0.79,0.475,"Bad shopping experience"],"label":0}}
...
```

先前的資料集範例組態分析應該如下設定參數：
+ 該參數 `label` 應設定為 JMESPath 表達式 `data.label`，以指示 Ground Truth 標籤的位置。
+ 參數 `features` 應設定為 JMESPath 運算式 `data.features`，以指示功能陣列的位置。

### 在 Parquet 格式的表格式資料集先決條件
<a name="clarify-processing-job-data-format-tabular-prereq-parquet"></a>

[Parquet](https://parquet.apache.org/)是一種面向資料欄的二進位資料格式。目前，SageMaker Clarify 處理任務只有在處理執行個體計數為 `1` 時，才支援載入 Parquet 資料檔案。

由於 SageMaker Clarify 處理任務不支援 Parquet 格式的端點請求或端點回應，因此您必須將分析組態參數設定 `content_type` 為支援的格式，以指定端點請求的資料格式。如需詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md) 中的 `content_type`。

Parquet 資料必須具有格式化為字串的資料欄名稱。使用分析組態 `label` 參數設定標籤資料欄名稱名稱，以指示 Ground Truth 標籤的位置。所有其他資料欄都被設定為功能。

# 表格式資料的端點請求
<a name="clarify-processing-job-data-format-tabular-request"></a>

為了取得訓練後偏差分析和功能重要性分析的模型預測，SageMaker Clefy 處理任務將表格式資料序列化為位元組，並將這些資料作為請求有效負載傳送至推論端點。此表格式資料可能來自輸入資料集，或產生表格式資料。如果是合成資料，其是由解釋器生成的 SHAP 分析或 PDP 分析。

請求有效負載的資料格式應該由分析組態 `content_type` 參數指定。如果未提供參數，SageMaker Clarify 處理任務將使用 `dataset_type` 參數的值作為內容類型。如需 `content_type` 或 `dataset_type` 的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

以下各章節顯示 CSV 和 JSON 行格式的端點請求範例。

## CSV 格式的端點請求
<a name="clarify-processing-job-data-format-tabular-request-csv"></a>

SageMaker Clarify 處理任務可以將資料序列化為 CSV 格式 (MIME 類型：`text/csv`)。下列資料表顯示序列化請求有效負載範例。


| 端點請求有效負載 (字串表示) | 說明 | 
| --- | --- | 
|  '1,2,3,4'  |  單一記錄 (四個數值特徵)。  | 
|  '1,2,3,4\$1 n 5,6,7,8'  |  兩個記錄，由分行符號 '\$1n' 分隔。  | 
|  '"這是一個很好的產品",5'  |  單一記錄 (文字特徵和數值特徵)。  | 
|  '"這是一個很好的產品",5\$1n"糟糕的購物體驗",1’  |  兩個記錄。  | 

## 端點請求採用 JSON 行格式
<a name="clarify-processing-job-data-format-tabular-request-jsonlines"></a>

SageMaker Clarify 處理任務可以將資料序列化為 SageMaker AI JSON 行密集格式 (MIME 類型：`application/jsonlines`)。如需 JSON Lines 的詳細資訊，請參閱 [JSONLINES 請求格式](cdf-inference.md#cm-jsonlines)。

若要將表格式資料轉換作為 JSON 格式匯出 資料，請提供範本字串給分析組態 `content_template` 參數。如需有關 `content_template` 的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。下表顯示序列化 JSON 行請求有效負載的範例。


| 端點請求有效負載 (字串表示) | 說明 | 
| --- | --- | 
|  '\$1"資料":\$1"功能":[1,2,3,4]\$1\$1'  |  單一記錄。在這種情況下，範本看起來像 `'{"data":{"features":$features}}' `，並由功能清單 `[1,2,3,4]` 取代 `$features`。  | 
|  '\$1"資料":\$1"功能":[1,2,3,4]\$1\$1\$1n\$1"資料":\$1"功能":[5,6,7,8]\$1\$1'  |  兩個記錄。  | 
|  '\$1"功能":["這是一個好產品",5]\$1'  |  單一記錄。在這種情況下，範本看起來像 `'{"features":$features}'` 而 \$1features 取代為功能清單 `["This is a good product",5]`。  | 
|  '\$1"功能":["這是一個好產品",5]\$1\$1n\$1"功能":["不好的購物體驗",1]\$1'  |  兩個記錄。  | 

## 端點請求作為 JSON 格式匯出格式
<a name="clarify-processing-job-data-format-tabular-request-json"></a>

SageMaker Clarify 處理任務可以將資料序列化為任意 JSON 結構 (MIME 類型：`application/json`)。若要這麼做，您必須為分析組態 `content_template` 參數提供範本字串。這是由 SageMaker Clarify 處理任務用來建構外部 JSON 結構。您也必須提供的範本字串 `record_template`，用來建構每筆記錄的 JSON 結構。如需 `content_template` 和 `record_template` 的更多相關資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

**注意**  
因為 `content_template` AND `record_template` 是字串參數，所以屬於 JSON 序列化結構一部分的任何雙引號字元 (`"`) 都應該在組態中註記為逸出字元。例如，如果您想要在 Python 中逸出雙引號，您可以輸入以下內容 `content_template`。  

```
"{\"data\":{\"features\":$record}}}"
```

下表顯示序列化 JSON 請求有效負載的範例，以及建構它們所需的對應 `content_template` 和 `record_template` 參數。


| 端點請求有效負載 (字串表示) | 說明 | content\$1template | record\$1template | 
| --- | --- | --- | --- | 
|  '\$1"資料":\$1"功能":[1,2,3,4]\$1\$1'  |  一次單筆記錄。  |  '\$1"資料":\$1"功能":\$1記錄\$1\$1\$1'  |  “\$1features”  | 
|  '\$1"執行個體":[[0, 1], [3, 4]], "功能名稱": ["A", "B"]\$1'  |  具有功能名稱的多重記錄。  |  ‘\$1"執行個體":\$1records, "功能名稱":\$1feature\$1names\$1'  |  “\$1features"  | 
|  '[\$1"A": 0, "B": 1\$1, \$1"A": 3, "B": 4\$1]'  |  多記錄和鍵值對。  |  “\$1records"  |  “\$1features\$1kvp"  | 
|  ‘\$1"A": 0, "B": 1\$1'  |  一次單一記錄和鍵值對。  |  "\$1record"  |  "\$1features\$1kvp"  | 
|  ‘\$1"A": 0, "巢狀": \$1"B": 1\$1\$1'  |  或者，對任意結構使用完全詳細資訊 record\$1template。  |  "\$1record"  |  '\$1"A": "\$1\$1A\$1", "巢狀": \$1"B": "\$1\$1B\$1"\$1\$1'  | 

# 表格式資料的端點回應
<a name="clarify-processing-job-data-format-tabular-response"></a>

SageMaker Clarify 處理任務收到推論端點調用的回應後，它會反序列化回應有效負載並從中擷取預測。使用分析組態 `accept_type` 參數來指定回應有效負載的資料格式。如果 `accept_type` 未提供，SageMaker Clarify 處理任務將使用 content\$1type 參數的值作為模型輸出格式。如需 `accept_type` 的相關資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

預測可以包含用於偏差分析的預測標籤，或者用於功能重要性分析的機率值 (分數) 組成。在 `predictor` 分析組態中，下列三個參數會擷取預測。
+ 該參數 `probability` 用於定位在端點回應的機率值 (分數)。
+ 該參數 `label` 用於在端點回應中定位預測標籤。
+ (選擇性) 參數 `label_headers` 提供多類別模型的預測標籤。

下列指南適用於 CSV、JSON 行和 JSON 格式的端點回應。

## 端點回應為 CSV 格式
<a name="clarify-processing-job-data-format-tabular-reponse-csv"></a>

如果回應有效負載是 CSV 格式 (MIME 類型：`text/csv`)，SageMaker Clarify 處理任務還原序列化每一列。然後，它使用分析組態中提供的欄索引，從還原序列化的資料中擷取預測。回應有效負載中的資料列必須與請求有效負載中的記錄相符。

下表提供不同格式和不同問題類型的回應資料範例。只要可以根據分析組態擷取預測，您的資料可以與這些範例有所不同。

以下各章節顯示 CSV 格式的端點回應範例。

### 端點回應為 CSV 格式，且僅包含機率
<a name="clarify-processing-job-data-format-tabular-reponse-csv-prob"></a>

下表是迴歸和二進制分類問題的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄。  |  '0.6'  | 
|  兩個記錄 (結果在一行中，用逗號分隔)。  |  '0.6,0.3'  | 
|  兩個記錄 (結果在兩行中)。  |  '0.6\$1n0.3'  | 

在先前的範例中，端點會輸出預測標籤的單一機率值 (分數)。若要使用索引擷取機率並將其用於功能重要性分析，請將分析組態參數設定為`probability`欄索引`0`。如果使用 `probability_threshold` 參數將這些機率轉換為二進位值，也可以用於偏差分析。如需 `probability_threshold` 的相關資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

下表是多類別問題的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  多類模型的單一記錄 (三個類別)。  |  '0.1,0.6,0.3'  | 
|  多類模型的兩個記錄 (三個類別)。  |  '0.1,0.6,0.3\$1n0.2,0.5,0.3'  | 

在先前的範例中，端點會輸出機率 (分數) 的清單。如果未提供索引，則會擷取所有值並用於功能重要性分析。如果提供了分析組態參數 `label_headers`。然後，SageMaker Clarify 處理任務可以選取最大機率的標籤標題作為預測標籤，該標籤可用於偏差分析。如需 `label_headers` 的相關資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

### 端點回應為 CSV 格式，且僅包含預測標籤
<a name="clarify-processing-job-data-format-tabular-reponse-csv-pred"></a>

下表是迴歸和二進制分類問題的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '1'  | 
|  兩個記錄 (結果在一行中，用逗號分隔)  |  '1,0'  | 
|  兩個記錄 (結果在兩行)  |  '1\$1n0'  | 

對於先前的範例，端點輸出預測標籤而不是機率。將 `predictor` 組態的 `label` 參數設定為欄索引 `0`，以便可以使用索引擷取預測標籤並用於偏差分析。

### 端點回應為 CSV 格式，並包含預測標籤和機率
<a name="clarify-processing-job-data-format-tabular-reponse-csv-pred-prob"></a>

下表是迴歸和二進制分類問題的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '1,0.6'  | 
|  兩個記錄  |  '1,0.6\$1n0,0.3'  | 

對於先前的範例，端點輸出預測標籤後跟其機率。將 `predictor` 組態的 `label` 參數設定為欄索引 `0`，並設定 `probability` 為欄索引 `1` 以擷取兩個參數值。

### 端點回應為 CSV 格式，並包含預測標籤和機率 (多類別)
<a name="clarify-processing-job-data-format-tabular-reponse-csv-preds-probs"></a>

由 Amazon SageMaker Autopilot 訓練的多類別模型容器可以設定為輸出字串表示的預測標籤及機率清單。下列範例表格顯示來自設定為輸出 `predicted_label`、`probability`、`labels` 和 `probabilities` 之模型的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '"狗",0.6,"[\$1'貓\$1', \$1'狗\$1', \$1'魚\$1']","[0.1, 0.6, 0.3]"'  | 
|  兩個記錄  |  '"狗",0.6,"[\$1'貓\$1', \$1'狗\$1', \$1'魚\$1']","[0.1, 0.6, 0.3]"\$1n""貓",0.7,[\$1'貓\$1', \$1'狗\$1', \$1'魚\$1']","[0.7, 0.2, 0.1]"'  | 

對於先前的範例，可以使用下列方式設定 SageMaker Clarify 處理任務以擷取預測。

對於偏差分析，先前的範例可以設定為下列其中一項。
+ 將 `predictor` 組態的 `label` 參數設定為 `0` 以擷取預測標籤。
+ 將參數設定為 `2` 以擷取預測標籤，並設定 `probability` 為 `3` 以擷取相應的機率。SageMaker Clarify 處理任務可透過識別使用最高機率值的標籤來自動判定預測標籤。參照單一記錄的前一個範例，該模型會預測三個標籤：`cat`、`dog` 和`fish`，其對應機率為 `0.1`、`0.6` 和 `0.3`。根據這些機率，預測標籤是 `dog`，因為它具有 `0.6` 的最高機率值。
+ 設定 `probability` 為 `3`，以擷取機率。如果 `label_headers` 有提供，則 SageMaker Clarify 處理任務可以透過識別使用最高機率值的標籤標題來自動判定預測標籤。

對於功能重要性分析，先前的範例可以設定如下。
+ 設定 `probability` 為 `3` 擷取所有預測標籤的機率。然後，將為所有標示運算功能屬性。如果客戶未指定 `label_headers`，則預測標籤將用作分析報告中的標籤標題。

## 端點回應是 JSON 行格式
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines"></a>

如果回應有效負載是 JSON 行格式(MIME 類型：`application/jsonlines`)，SageMaker Clarify 處理任務會將每一行還原序列化作為 JSON 格式匯出格式匯出。然後，它使用分析組態中提供的 JMESPath 表達式從反序列化資料中擷取預測。回應有效負載中的行必須與請求有效負載中的記錄符合。下表顯示了不同格式的回應資料的範例。只要可以根據分析組態擷取預測，您的資料可以與這些範例有所不同。

以下各章節顯示 JSON 行格式的端點回應範例。

### 端點回應採用 JSON 行格式，並且僅包含機率
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-prob"></a>

下表是僅輸出機率值 (分數) 的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '\$1"分數":0.6\$1'  | 
|  兩個記錄  |  '\$1"分數":0.6\$1\$1n\$1"分數":0.3\$1'  | 

對於先前的範例，將分析組態參數設定 `probability` 為 JMESPath 運算式 “score” 以擷取其值。

### 端點回應採用 JSON 行格式，且僅包含預測標籤
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-pred"></a>

下表是僅輸出預測標籤的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '\$1"預測":1\$1'  | 
|  兩個記錄  |  '\$1"預測":1\$1\$1n\$1"預測":0\$1'  | 

對於先前的範例，請將預測值組態的 `label` 參數設定為 JMESPath 運算式 `prediction`。然後，SageMaker Clarify 處理任務可以擷取預測標籤以進行偏差分析。如需詳細資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

### 端點回應是 JSON 行格式，並包含預測標籤和機率
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-pred-prob"></a>

下表是輸出預測標籤及其分數的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '\$1"預測":1,"分數":0.6\$1'  | 
|  兩個記錄  |  '\$1"預測":1,"分數":0.6\$1\$1n\$1"預測":0,"分數分數":0.3\$1'  | 

對於先前的範例，將組態 `predictor` 的 `label` 參數設為 JMESPath 表達式 “prediction”，以擷取預測標籤。設定`probability`為 JMESPath 表達式 “score” 以擷取機率。如需詳細資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

### 端點回應採用 JSON 行格式，並包含預測標籤和機率 (多類別)
<a name="clarify-processing-job-data-format-tabular-reponse-jsonlines-preds-probs"></a>

下表是來自多類別模型的端點回應範例，可輸出下列資訊：
+ 預測標籤的清單。
+  機率，以及所選擇的預測標籤及其機率。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '\$1"predicted\$1label":"狗","機率":0.6,"predicted\$1labels":["貓","狗","魚"],"機率":[0.1,0.6,0.3]\$1'  | 
|  兩個記錄  |  '\$1"predicted\$1label":"狗","機率":0.6,"predicted\$1labels":["貓","狗","魚"],"機率":[0.1,0.6,0.3]\$1\$1n\$1"predicted\$1label":"貓","機率":0.7,"predicted\$1labels":["貓","狗","魚"],"機率":[0.7,0.2,0.1]\$1'  | 

 對於先前的範例，可以透過數種方式設定 SageMaker Clarify 處理任務，以擷取預測。

對於偏差分析，先前的範例可以設定為下列其中**一**項。
+ 將 `predictor` 組態的 `label` 參數設定為 JMESPath 表達式 “predicted\$1label”，以擷取預測標籤。
+ 將參數設定為 JMESPath 表達式 “predicted\$1labels” 以擷取預測標籤。設定 `probability` 為 JMESPath 表達式 “probabilities” 以擷取其機率。SageMaker Clarify 任務會透過識別使用最高機率值的標籤來自動判定預測標籤。
+ 設定 `probability` 為 JMESPath 表達式 “probabilities” 以擷取其機率。如果 `label_headers` 有提供，則 SageMaker Clarify 處理任務可以透過識別使用最高機率值的標籤來自動判定預測標籤。

對於功能重要性分析，請執行下列操作。
+ 設定 `probability` 為 JMESPath 表達式 “probabilities”，以擷取其所有預測標籤的機率。然後，將為所有標示運算功能屬性。

## 端點回應作為 JSON 格式匯出格式
<a name="clarify-processing-job-data-format-tabular-reponse-json"></a>

如果回應有效負載是 JSON 格式 (MIME 類型：`application/json`)，SageMaker Clarify 處理任務會將整個有效負載還原序列化作為 JSON 格式匯出。然後，它使用分析組態中提供的 JMESPath 表達式從反序列化資料中擷取預測。回應有效負載中的記錄必須與請求有效負載中的記錄符合。

以下各章節顯示 JSON 格式的端點回應範例。這些區段包含表格，其中包含不同格式和不同問題類型的回應資料範例。只要可以根據分析組態擷取預測，您的資料可以與這些範例有所不同。

### 端點回應作為 JSON 格式匯出格式，且僅包含機率
<a name="clarify-processing-job-data-format-tabular-reponse-json-prob"></a>

下表是來自端點的範例回應，該端點僅輸出機率值 (分數)。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '[0.6]'  | 
|  兩個記錄  |  '[0.6,0.3]'  | 

在先前的範例中，回應有效負載中沒有分行符號。相反地，單一 JSON 物件包含分數清單，請求中每個記錄的各一個分數清單。將分析組態參數設定 `probability` 為 JMESPath 運算式 "[\$1]" 以擷取值。

### 端點回應作為 JSON 格式匯出格式，且僅包含預測標籤
<a name="clarify-processing-job-data-format-tabular-reponse-json-pred"></a>

下表是來自僅輸出預測標籤的端點回應範例。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '\$1"predicted\$1labels":[1]\$1'  | 
|  兩個記錄  |  '\$1"predicted\$1labels":[1,0]\$1'  | 

將 `predictor` 組態的 `label` 參數設定為 JMESPath 運算式 “predicted\$1labels”，然後 SageMaker Clarify 處理工作可以擷取預測標籤以進行偏差分析。

### 端點回應是 JSON 格式，並包含預測標籤和機率
<a name="clarify-processing-job-data-format-tabular-reponse-json-pred-prob"></a>

下表是來自端點的範例回應，該端點會輸出預測標籤及其分數。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '\$1"預測":[\$1"標籤":1,"分數":0.6\$1'  | 
|  兩個記錄  |  ‘\$1"預測":[\$1"標籤":1,"分數":0.6\$1,\$1"標籤":0,"分數":0.3\$1]\$1'  | 

對於先前的範例，將組態 `predictor` 的 `label` 參數設定為 JmesPath 表達式 “predictions[\$1].label”，以擷取預測標籤。設定 `probability` 為 JMESPath 表達式 “predictions[\$1].score” 以擷取機率。

### 端點回應採用 JSON 格式，並包含預測標籤和機率 (多類別)
<a name="clarify-processing-job-data-format-tabular-reponse-json-preds-probs"></a>

下表是來自端點的範例回應，來自多類別模型的回應，該模型會輸出以下內容：
+ 預測標籤的清單。
+ 機率，以及所選擇的預測標籤及其機率。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一記錄  |  '[\$1"predicted\$1label":"狗","機率":0.6,"predicted\$1labels":["貓","狗","魚"],"機率":[0.1,0.6,0.3]\$1]'  | 
|  兩個記錄  |  '[\$1"predicted\$1label":"狗","機率":0.6,"predicted\$1labels":["貓","狗","魚"],"機率":[0.1,0.6,0.3]\$1,\$1"predicted\$1label":"貓","機率":0.7,"predicted\$1labels":["貓","狗","魚"],"機率":[0.7,0.2,0.1]\$1]'  | 

SageMaker Clarify 處理任務可以透過數種方式設定，以擷取預測。

對於偏差分析，先前的範例可以設定為下列其中**一**項。
+ 將 `predictor` 組態的 `label` 參數設定為 JMESPath 表達式 “[\$1].predicted\$1label”，以擷取預測標籤。
+ 將參數設定為 JMESPath 表達式 “[\$1].predicted\$1labels”，以擷取預測標籤。設定 `probability` 為 JMESPath 表達式 “[\$1].probabilities”，以擷取其機率。SageMaker Clarify 處理任務可以透過識別使用最高鄰近值的標籤來自動判定預測標籤。
+ 設定 `probability` 為 JMESPath 表達式 “[\$1].probabilities”，以擷取其機率。如果 `label_headers` 有提供，則 SageMaker Clarify 處理任務可以透過識別使用最高機率值的標籤來自動判定預測標籤。

對於功能重要性分析，設定 `probability` 為 JMESPath 表達式 “[\$1].probabilities”，以擷取其所有預測標籤的機率。然後，將為所有標示運算功能屬性。

# 預先檢查表格式資料的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck"></a>

我們建議您將模型部署到 SageMaker AI 即時推論端點，然後將請求傳送到端點。手動檢查請求和回應，以確定兩者都符合 [表格式資料的端點請求](clarify-processing-job-data-format-tabular-request.md) 區段和 [表格式資料的端點回應](clarify-processing-job-data-format-tabular-response.md) 區段中的需求。如果您的模型容器支援批次請求，您可以從單一記錄請求開始，然後嘗試兩個或更多記錄。

下列命令顯示如何使用請求回應 AWS CLI。 AWS CLI 已預先安裝在 SageMaker Studio 與 SageMaker 筆記本執行個體。若要安裝 AWS CLI，請遵循此[安裝指南](https://aws.amazon.com/cli/)。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

參數定義如下。
+ `$ENDPOINT NAME`— 端點的名稱。
+ `$CONTENT_TYPE` — 請求的 MIME 類型 (模型容器輸入)。
+ `$ACCEPT_TYPE` — 回應的 MIME 類型 (模型容器輸出)。
+ `$REQUEST_DATA`— 請求有效負載字串。
+ `$CLI_BINARY_FORMAT` - 命令列介面 (CLI) 參數的格式。對於 AWS CLI v1，此參數應保持空白。對於第 2 版，此參數應設定為 `--cli-binary-format raw-in-base64-out`。

**注意**  
AWS CLI v2 [預設會以](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam) base64 編碼字串的形式傳遞二進位參數。

# AWS CLI v1 範例
<a name="clarify-processing-job-data-format-tabular-precheck-cli-v1-examples"></a>

上一節中的範例適用於 AWS CLI v2。下列來自端點的請求和回應範例使用 AWS CLI 第 1 版。

## CSV 格式的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck-csv"></a>

在下列程式碼範例中，請求包含單一記錄，而回應就是其機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-xgboost-model \
  --content-type text/csv \
  --accept text/csv \
  --body '1,2,3,4' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.6
```

在下列程式碼範例中，請求包含兩筆記錄，而回應會包含其機率 (以逗號分隔)。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-xgboost-model \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的程式碼範例中，`--body` 中的 `$'content'` 運算式會給出命令將內容中的 `'\n'` 解譯為分行符號。回應輸出如下。

```
0.6,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，回應會包含其機率，並以分行符號分隔。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.6
0.3
```

在下列程式碼範例中，請求包含單一記錄，而回應是來自包含三個類別之多類別模型的機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body '1,2,3,4' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.1,0.6,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，而回應會包含來自包含三個類別之多類別模型的機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.1,0.6,0.3
0.2,0.5,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，而回應包含預測標籤和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-2 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
1,0.6
0,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，而回應則包含標籤標題和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-3 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
"['cat','dog','fish']","[0.1,0.6,0.3]"
"['cat','dog','fish']","[0.2,0.5,0.3]"
```

## JSON 行格式的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck-jsonlines"></a>

在下列程式碼範例中，請求包含單一記錄，而回應就是其機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body '{"features":["This is a good product",5]}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"score":0.6}
```

在下列程式碼範例中，請求包含兩筆記錄，而回應包含預測標籤和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-2 \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"predicted_label":1,"probability":0.6}
{"predicted_label":0,"probability":0.3}
```

在下列程式碼範例中，請求包含兩筆記錄，而回應包含標籤標題和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-3 \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body $'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}
{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}
```

## 混合格式的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck-diff"></a>

在下列程式碼範例中，請求是 CSV 格式，回應是 JSON 行格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-in-jsonlines-out \
  --content-type text/csv \
  --accept application/jsonlines \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"probability":0.6}
{"probability":0.3}
```

在下列程式碼範例中，請求是 JSON 行格式，而回應是 CSV 格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-in-csv-out \
  --content-type application/jsonlines \
  --accept text/csv \
  --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.6
0.3
```

在下列程式碼範例中，請求為 CSV 格式，且回應作為 JSON 格式匯出格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-in-jsonlines-out \
  --content-type text/csv \
  --accept application/jsonlines \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"predictions":[{"label":1,"score":0.6},{"label":0,"score":0.3}]}
```

# 影像資料要求
<a name="clarify-processing-job-data-format-image"></a>

SageMaker Clarify 處理任務提供解釋映像的支援。本主題提供映像資料的資料格式需求。如需影像資料的詳細資訊，請參閱[分析影像資料，確保電腦視覺可解釋性](clarify-processing-job-run.md#clarify-processing-job-run-cv)。

映像資料集包含一或多個映像檔案。若要識別 SageMaker Clarify 處理任務的輸入資料集，請將名為 `dataset` 的 [ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html#sagemaker-CreateProcessingJob-request-ProcessingInputs) 或分析組態 `dataset_uri` 參數設定為您映像檔案的 Amazon S3 URI 字首。

支援的映像檔案格式和副檔名列於下表中。


| 映像格式 | 副檔名 | 
| --- | --- | 
|  JPEG  |  jpg、jpeg  | 
|  PNG  |  png  | 

將分析組態 `dataset_type` 參數設定為 **application/x-image**。由於該類型不是特定的映像檔案格式，因此 `content_type` 將用於決定映像檔案格式和副檔名。

SageMaker Clarify 處理任務會將每個映像檔載入至三維 [NumPy 陣列](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html)，以便進一步處理。這三個維度包含每個像素的高度、寬度和 RGB 值。

## 端點請求格式
<a name="clarify-processing-job-data-format-image-request"></a>

SageMaker Clarify 處理任務會將映像的原始 RGB 資料轉換為相容的映像格式，例如 JPEG。它在將資料發送到端點進行預測之前執行此操作。支援的映像格式如下。


| 資料格式 | MIME 類型 | 副檔名 | 
| --- | --- | --- | 
|  JPEG  |  `image/jpeg`  |  jpg、jpeg  | 
|  PNG  |  `image/png`  |  png  | 
|  NPY  |  `application/x-npy`  |  以上全部  | 

使用分析組態參數 `content_type` 指定請求有效負載的資料格式。如果 `content_type` 未提供，資料格式預設為 `image/jpeg`。

## 端點回應格式
<a name="clarify-processing-job-data-format-image-response"></a>

在收到推論端點調用的回應後，SageMaker Clarify 處理任務還原序列化回應有效負載，然後從中擷取預測。

### 映像分類問題
<a name="clarify-processing-job-data-format-image-response-class"></a>

回應有效負載的資料格式應由分析組態參數 accept\$1type 指定。如果 `accept_type` 未提供，資料格式預設為 `application/json`。支援的格式與表格式資料區段中**表格式資料的端點回應**中所述的格式相同。

如需 SageMaker AI 內建影像分類演算法的範例，請參閱 [使用影像分類演算法進行推論](image-classification.md#IC-inference)，該演算法會接受單一影像，然後傳回一系列機率值 (分數)，每個機率值代表一個類別。

如下表所示，當 `content_type` 參數設定為 `application/jsonlines` 時，回應作為 JSON 格式匯出物件。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單張映像  |  '\$1"預測":[0.1,0.6,0.3]\$1'  | 

在先前的範例中，將 `probability` 參數設定為 JMESPath 表達式 “prediction” 以擷取分數。

當 `content_type` 設定為 `application/json` 時，回應為 JSON 物件，如下表所示。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單張映像  |  '[0.1,0.6,0.3]'  | 

在先前的範例中，設定 `probability` 為 JMESPath 表達式 “[\$1]”，以擷取數組的所有元素。在先前的範例中，[`0.1, 0.6, 0.3]` 被擷取。或者，如果您略過設定 `probability` 組態參數，則也會擷取陣列的所有元素。這是因為整個有效負載被反序列化為預測。

### 物件偵測問題
<a name="clarify-processing-job-data-format-object-response-class"></a>

分析組態 `accept_type` 預設為 `application/json`，且唯一支援的格式是物件偵測推論格式。如需回應格式的詳細資訊，請參閱[回應格式](object-detection-in-formats.md#object-detection-recordio)。

下表是來自輸出陣列之端點的範例回應。陣列的每個元素都是值陣列，其中包含類別索引、可信度分數，以及偵測到物件的邊界框座標。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一映像 (一個物件)  |  '[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244]]'  | 
|  單一映像 (兩個物件)  |  '[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475]]'  | 

下表是來自端點的範例回應，該端點會輸出 JSON 物件，其中包含參照陣列的索引鍵。將分析組態 `probability` 設定為關鍵 “prediction” 以擷取值。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 
| --- | --- | 
|  單一映像 (一個物件)  |  '\$1"預測":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244]]\$1'  | 
|  單一映像 (兩個物件)  |  '\$1"預測":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475]]\$1'  | 

## 預先檢查端點請求和回應映像資料
<a name="clarify-processing-job-data-format-object-precheck"></a>

我們建議您將模型部署到 SageMaker AI 即時推論端點，然後將請求傳送到端點。手動檢查請求和回應。請確定兩者都符合**端點映像資料請求**區段和**映像資料的端點回應**區段中的需求。

以下是兩個程式碼範例，示範如何傳送請求，以及如何檢查映像分類和物件偵測問題的回應。

### 映像分類問題
<a name="clarify-processing-job-data-format-object-precheck-class"></a>

下列範例程式碼會指示端點讀取 PNG 檔案，然後對其進行分類。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-image-classification \
  --content-type "image/png" \
  --accept "application/json" \
  --body fileb://./test.png  \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
[0.1,0.6,0.3]
```

### 物件偵測問題
<a name="clarify-processing-job-data-format-object-precheck-object"></a>

下列範例程式碼會指示端點讀取 JPEG 檔案，然後偵測其中的物件。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-object-detection \
  --content-type "image/jpg" \
  --accept "application/json" \
  --body fileb://./test.jpg  \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475],[4.0, 0.32643985450267792, 0.3677481412887573, 0.034883320331573486, 0.6318609714508057, 0.5967587828636169],[8.0, 0.22552496790885925, 0.6152569651603699, 0.5722782611846924, 0.882301390171051, 0.8985623121261597],[3.0, 0.42260299175977707, 0.019305512309074402, 0.08386176824569702, 0.39093565940856934, 0.9574796557426453]]}
```

# 時間序列資料
<a name="clarify-processing-job-data-format-time-series"></a>

時間序列資料是指可以載入到二維資料框架中的資料。在框架的每個時間戳記中，每一列代表一筆目標記錄，而每一筆目標記錄都有一個或多個相關資料欄。每個資料框儲存格內的值可以是數值、分類或文字資料類型。

## 時間序列資料集先決條件
<a name="clarify-processing-job-data-format-time-series-prereq"></a>

在分析之前，請完成必要的預先處理步驟以準備您的資料，例如資料清除或特徵工程。您可以提供一或多個資料集。如果您提供多個資料集，請使用下列其中一個方法，將它們提供給 SageMaker Clarify 處理任務。
+ 使用命名為 `dataset` 的 [ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingInput.html) 或分析組態 `dataset_uri` 來指定主資料集。如需 `dataset_uri` 的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md) 中的參數清單。
+ 使用分析組態檔案中提供的 `baseline` 參數。`static_covariates` 需要基準資料集，如果存在的話。如需分析組態檔案的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

下表列出支援的資料格式、其副檔名和 MIME 類型。


| 資料格式 | 副檔名 | MIME 類型 | 
| --- | --- | --- | 
|  `item_records`  |  json  |  `application/json`  | 
|  `timestamp_records`  |  json  |  `application/json`  | 
|  `columns`  |  json  |  `application/json`  | 

JSON 是一種靈活的格式，可在您的結構化資料中代表任何複雜性層級。如資料表所示，SageMaker Clarify 支援格式 `item_records`、`timestamp_records` 和 `columns`。

## 時間序列資料集組態範例
<a name="clarify-processing-job-data-format-time-series-ex"></a>

本節說明如何針對 JSON 格式的時間序列資料使用 `time_series_data_config` 設定分析組態。假設您有一個資料集含有兩個項目，每個項目都有時間戳記 (t)、目標時間序列 (x)、兩個相關時間序列 (r)，以及兩個靜態共變數 (u)，如下所示：

 t1 = [0,1,2], t2 = [2,3]

x1 = [5,6,4], x2 = [0,4]

r1 = [0,1,0], r21 = [1,1]

r12 = [0,0,0], r22 = [1,0]

u11 = -1, u21 = 0

u12 = 1, u22 = 2

您可以採取三種不同的方法使用 `time_series_data_config` 來編碼資料集，取決於 `dataset_format`。下列幾節會描述每一種方法。

### `dataset_format` 為 `columns` 時的時間序列資料組態
<a name="clarify-processing-job-data-format-time-series-columns"></a>

以下範例會將 `columns` 值用於 `dataset_format`。下列 JSON 檔案代表先前的資料集。

```
{
    "ids": [1, 1, 1, 2, 2],
    "timestamps": [0, 1, 2, 2, 3], # t
    "target_ts": [5, 6, 4, 0, 4], # x
    "rts1": [0, 1, 0, 1, 1], # r1
    "rts2": [0, 0, 0, 1, 0], # r2
    "scv1": [-1, -1, -1, 0, 0], # u1
    "scv2": [1, 1, 1, 2, 2], # u2
}
```

請注意，項目 ID 會在 `ids` 欄位中重複。`time_series_data_config` 的正確實作如下所示：

```
"time_series_data_config": {
    "item_id": "ids",
    "timestamp": "timestamps",
    "target_time_series": "target_ts",
    "related_time_series": ["rts1", "rts2"],
    "static_covariates": ["scv1", "scv2"],
    "dataset_format": "columns"
}
```

### `dataset_format` 為 `item_records` 時的時間序列資料組態
<a name="clarify-processing-job-data-format-time-series-itemrec"></a>

以下範例會將 `item_records` 值用於 `dataset_format`。下列 JSON 檔案代表資料集。

```
[
    {
        "id": 1,
        "scv1": -1,
        "scv2": 1,
        "timeseries": [
            {"timestamp": 0, "target_ts": 5, "rts1": 0, "rts2": 0},
            {"timestamp": 1, "target_ts": 6, "rts1": 1, "rts2": 0},
            {"timestamp": 2, "target_ts": 4, "rts1": 0, "rts2": 0}
        ]
    },
    {
        "id": 2,
        "scv1": 0,
        "scv2": 2,
        "timeseries": [
            {"timestamp": 2, "target_ts": 0, "rts1": 1, "rts2": 1},
            {"timestamp": 3, "target_ts": 4, "rts1": 1, "rts2": 0}
        ]
    }
]
```

每個項目在 JSON 中會以個別的項目表示。下列程式碼片段顯示對應的 `time_series_data_config` (使用 JMESPath)。

```
"time_series_data_config": {
    "item_id": "[*].id",
    "timestamp": "[*].timeseries[].timestamp",
    "target_time_series": "[*].timeseries[].target_ts",
    "related_time_series": ["[*].timeseries[].rts1", "[*].timeseries[].rts2"],
    "static_covariates": ["[*].scv1", "[*].scv2"],
    "dataset_format": "item_records"
}
```

### `dataset_format` 為 `timestamp_record` 時的時間序列資料組態
<a name="clarify-processing-job-data-format-time-series-tsrec"></a>

以下範例會將 `timestamp_record` 值用於 `dataset_format`。下列 JSON 檔案代表先前的資料集。

```
[
    {"id": 1, "timestamp": 0, "target_ts": 5, "rts1": 0, "rts2": 0, "svc1": -1, "svc2": 1},
    {"id": 1, "timestamp": 1, "target_ts": 6, "rts1": 1, "rts2": 0, "svc1": -1, "svc2": 1},
    {"id": 1, "timestamp": 2, "target_ts": 4, "rts1": 0, "rts2": 0, "svc1": -1, "svc2": 1},
    {"id": 2, "timestamp": 2, "target_ts": 0, "rts1": 1, "rts2": 1, "svc1": 0, "svc2": 2},
    {"id": 2, "timestamp": 3, "target_ts": 4, "rts1": 1, "rts2": 0, "svc1": 0, "svc2": 2},
]
```

JSON 的每個項目代表單一時間戳記，並對應至單一項目。實作 `time_series_data_config` 如下所示：

```
{
    "item_id": "[*].id",
    "timestamp": "[*].timestamp",
    "target_time_series": "[*].target_ts",
    "related_time_series": ["[*].rts1"],
    "static_covariates": ["[*].scv1"],
    "dataset_format": "timestamp_records"
}
```

# 時間序列資料的端點請求
<a name="clarify-processing-job-data-format-time-series-request-jsonlines"></a>

SageMaker Clarify 處理任務會將資料序列化為任意 JSON 結構 (具有 MIME 類型：`application/json`)。若要這麼做，您必須為分析組態 `content_template` 參數提供範本字串。這是由 SageMaker Clarify 處理任務用來建構提供給您模型的 JSON 查詢。`content_template` 包含來自您資料集的一筆記錄或多筆記錄。您也必須提供 `record_template` 的範本字串，用來建構每筆記錄的 JSON 結構。這些記錄接著會插入至 `content_template`。如需 `content_type` 或 `dataset_type` 的詳細資訊，請參閱 [分析組態檔案](clarify-processing-job-configure-analysis.md)。

**注意**  
因為 `content_template` 和 `record_template` 是字串參數，所以屬於 JSON 序列化結構的任何雙引號字元 (") 都應該在組態中註記為逸出字元。例如，如果您想要在 Python 中逸出雙引號，您可以為 `content_template` 輸入以下值：  

```
'$record'
```

下表顯示序列化 JSON 請求承載的範例，以及建構它們所需的對應 `content_template` 和 `record_template` 參數。


| 使用案例 | 端點請求有效負載 (字串表示) | content\$1template | record\$1template | 
| --- | --- | --- | --- | 
|  一次單筆記錄  |  `{"target": [1, 2, 3],"start": "2024-01-01 01:00:00"}`  |  `'$record'`  |  `'{"start": $start_time, "target": $target_time_series}'`  | 
|  具有 `$related_time_series` 和 `$static_covariates` 的單一記錄  |  `{"target": [1, 2, 3],"start": "2024-01-01 01:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}`  |  `'$record'`  |  `'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'`  | 
|  多重記錄  |  `{"instances": [{"target": [1, 2, 3],"start": "2024-01-01 01:00:00"}, {"target": [1, 2, 3],"start": "2024-01-01 02:00:00"}]}`  |  `'{"instances": $records}'`  |  `'{"start": $start_time, "target": $target_time_series}'`  | 
|  具有 `$related_time_series` 和 `$static_covariates` 的多筆記錄  |  `{"instances": [{"target": [1, 2, 3],"start": "2024-01-01 01:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}, {"target": [1, 2, 3],"start": "2024-01-01 02:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}]}`  |  `'{"instances": $records}'`  |  `''{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'`  | 

# 時間序列資料的端點回應
<a name="clarify-processing-job-data-format-time-series-response-json"></a>

SageMaker Clarify 處理任務會將整個承載還原序列化為 JSON。然後，它使用分析組態中提供的 JMESPath 表達式從反序列化資料中擷取預測。回應有效負載中的記錄必須與請求有效負載中的記錄符合。

下表是來自僅輸出平均預測值的端點的回應範例。[分析組態](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-configure-analysis.html#clarify-processing-job-configure-analysis-parameters)中 `predictor` 欄位中使用的 `forecast` 值應做為 JMESPath 表達式提供，以尋找處理任務的預測結果。


| 端點請求有效負載 | 端點回應有效負載 (字串表示) | 分析組態中預測的 JMESPath 表達式 | 
| --- | --- | --- | 
|  單一記錄範例。組態應該是 `TimeSeriesModelConfig(forecast="prediction.mean")` 以正確擷取預測。  |  `'{"prediction": {"mean": [1, 2, 3, 4, 5]}'`  |  `'prediction.mean'`  | 
|  多重記錄。An AWS deepAR 端點回應。  |  `'{"predictions": [{"mean": [1, 2, 3, 4, 5]}, {"mean": [1, 2, 3, 4, 5]}]}'`  |  `'predictions[*].mean'`  | 

# 預先檢查端點請求和時間序列資料的回應
<a name="clarify-processing-job-data-format-time-series-precheck"></a>

建議您將模型部署到 SageMaker AI 即時推論端點，然後將請求傳送到端點。手動檢查請求和回應，以確定兩者都符合[時間序列資料的端點請求](clarify-processing-job-data-format-time-series-request-jsonlines.md)和[時間序列資料的端點回應](clarify-processing-job-data-format-time-series-response-json.md)章節中的要求。如果您的模型容器支援批次請求，您可以從單一記錄請求開始，然後嘗試兩筆或更多記錄。

下列命令示範如何使用 AWS CLI請求回應。已 AWS CLI 預先安裝在 Studio 和 SageMaker 筆記本執行個體中。若要安裝 AWS CLI，請遵循 [安裝指南](https://aws.amazon.com//cli/)。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

參數定義如下：
+ \$1ENDPOINT NAME - 端點的名稱。
+ \$1CONTENT\$1TYPE - 請求的 MIME 類型 (模型容器輸入)。
+ \$1ACCEPT\$1TYPE - 回應的 MIME 類型 (模型容器輸出)。
+ \$1REQUEST\$1DATA - 請求的承載字串。
+ \$1CLI\$1BINARY\$1FORMAT - 命令列介面 (CLI) 參數的格式。對於 AWS CLI v1，此參數應保持空白。對於第 2 版，此參數應設定為 `--cli-binary-format raw-in-base64-out`。

**注意**  
AWS CLI v2 預設會以 base64 編碼字串的形式傳遞二進位參數。下列進出端點的請求和回應範例使用 AWS CLI v1。

------
#### [ Example 1 ]

在下列程式碼範例中，請求包含單一記錄。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-json \
  --content-type application/json \
  --accept application/json \
  --body '{"target": [1, 2, 3, 4, 5],
    "start": "2024-01-01 01:00:00"}' \
/dev/stderr 1>/dev/null
```

下列程式碼片段顯示對應的回應輸出。

```
{'predictions': {'mean': [1, 2, 3, 4, 5]}
```

------
#### [ Example 2 ]

在下列程式碼範例中，請求包含兩筆記錄。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-json-2 \
  --content-type application/json \
  --accept application/json \
  --body $'{"instances": [{"target":[1, 2, 3],
    "start":"2024-01-01 01:00:00",
    "dynamic_feat":[[1, 2, 3, 4, 5],
        [1, 2, 3, 4, 5]]}], {"target":[1, 2, 3],
    "start":"2024-01-02 01:00:00",
    "dynamic_feat":[[1, 2, 3, 4, 5],
        [1, 2, 3, 4, 5]]}]}' \
dev/stderr 1>/dev/null
```

回應輸出如下：

```
{'predictions': [{'mean': [1, 2, 3, 4, 5]}, {'mean': [1, 2, 3, 4, 5]}]}
```

------

# 執行 SageMaker Clarify 處理任務以進行偏差分析和解釋性
<a name="clarify-processing-job-run"></a>

若要使用 SageMaker Clarify分析您的資料和模型是否存在偏差和解釋性，您必須設定 SageMaker Clarify 處理任務。本指南說明如何設定 SageMaker Python SDK API `SageMakerClarifyProcessor` 來設定任務輸入、輸出、資源和分析組態。

該 API 充當 SageMaker AI `CreateProcessingJob` API 的高級包裝函式。它會隱藏設定 SageMaker Clarify 處理任務所涉及的許多詳細資料。設定任務的詳細資訊包含擷取 SageMaker Clarify 容器映像 URI 和產生分析組態檔案。下列步驟會示範如何設定、初始化和啟動 SageMaker Clarify 處理任務。

**使用 API 設定 SageMaker Clarify 處理任務**

1. 為任務組態的每個部分定義設定物件。這些部分可能包含以下項目：
   + 輸入資料集和輸出位置：[DataConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.DataConfig)。
   + 分析模型或端點：[ModelConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.ModelConfig)。
   + 偏差分析參數：[BiasConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.BiasConfig)。
   + SHapley Additive exPlanations (SHAP) 分析參數：[SHAPConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SHAPConfig)。
   + 非對稱 Shapley 值分析參數 (僅適用於時間序列)：[AsymmetricShapleyValueConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.AsymmetricShapleyValueConfig)。

   SageMaker Clarify 處理任務的組態物件會因不同類型的資料格式和使用案例而有所不同。以下幾節會提供 [CSV](#clarify-processing-job-run-tabular-csv) 和 [JSON Lines](#clarify-processing-job-run-tabular-jsonlines) 格式的表格式資料、自然語言處理 ([NLP](#clarify-processing-job-run-tabular-nlp))、[computer vision](#clarify-processing-job-run-cv) (CV)，以及時間序列 (TS) 問題的組態範例。

1. 建立 `SageMakerClarifyProcessor` 物件並使用指定任務資源的參數將其初始化。這些資源包含參數，例如要使用的運算執行個體數目。

   下列程式碼範例說明如何建立`SageMakerClarifyProcessor`物件，並指示物件使用一個`ml.c4.xlarge`運算執行個體進行分析。

   ```
   from sagemaker import clarify
   
   clarify_processor = clarify.SageMakerClarifyProcessor(
       role=role,
       instance_count=1,
       instance_type='ml.c4.xlarge',
       sagemaker_session=session,
   )
   ```

1. 使用組態物件呼叫 [SageMakerClarifyProcessor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SageMakerClarifyProcessor.run) 處理器物件的特定執行方法，以啟動您的使用案例工作。這些執行方法包含下列各項：
   + `run_pre_training_bias`
   + `run_post_training_bias`
   + `run_bias`
   + `run_explainability`
   + `run_bias_and_explainability`

   此`SageMakerClarifyProcessor`可處理幕後的幾個任務。這些任務包含擷取 SageMaker Clarify 容器影像國際標準資源識別符 (URI)、根據提供的組態物件構成分析組態檔案、將檔案上傳到 Amazon S3 儲存貯體，以及[設定 SageMaker Clarify 處理任務](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-configure-parameters.html)。

   以下可展開的部分說明如何運算**訓練前**和**訓練後偏差指標**、**SHAP值**和**部分相依繪圖** (PDPs)。這些區段說明下列資料類型的功能重要性：
   + CSV 格式或 JSON 行格式的表格式資料集
   + 自然語言處理 (NLP) 資料集
   + 電腦視覺資料集

使用 **Spark** 執行平行 SageMaker Clarify 處理任務的指南，在可展開的部分後。

## 以 CSV 格式分析表格式資料
<a name="clarify-processing-job-run-tabular-csv"></a>

下列範例說明如何針對 CSV 格式的表格式資料集，設定偏差分析和可解譯性分析。在這些範例中，內送資料集具有四個功能欄欄和一個二進位標籤欄`Target`。資料集的內容如下。`1`的標籤值表示正值結果。

```
Target,Age,Gender,Income,Occupation
0,25,0,2850,2
1,36,0,6585,0
1,22,1,1759,1
0,48,0,3446,1
...
```

這個 `DataConfig` 物件指定輸入資料集和在哪裡儲存輸出。`s3_data_input_path`參數可以是資料集檔案的 URI，也可以是 Amazon S3 URI 前置。如果您提供 S3 URI 前置，SageMaker Clarify 處理任務會以遞迴方式收集位於前置下的所有 Amazon S3 檔案。`s3_output_path`的值應為 S3 URI 前置，以保存分析結果。SageMaker AI 會在編譯時使用 `s3_output_path`，且無法取得 SageMaker AI 管道參數、屬性、運算式或 `ExecutionVariable` 的值，這些都是在執行時期使用的。下列程式碼範例說明如何指定先前範例輸入資料集的資料組態。

```
data_config = clarify.DataConfig(
    s3_data_input_path=dataset_s3_uri,
    dataset_type='text/csv',
    headers=['Target', 'Age', 'Gender', 'Income', 'Occupation'],
    label='Target',
    s3_output_path=clarify_job_output_s3_uri,
)
```

### 如何運算 CSV 資料集的所有訓練前偏差指標
<a name="clarify-processing-job-run-tabular-csv-pretraining"></a>

下列程式碼範例說明如何設定`BiasConfig`物件，以衡量先前樣本輸入對具有`Gender`值`0`的樣本偏差。

```
bias_config = clarify.BiasConfig(
    label_values_or_threshold=[1],
    facet_name='Gender',
    facet_values_or_threshold=[0],
)
```

下列程式碼範例說明如何使用執行陳述式來啟動 SageMaker Clarify 處理任務，該工作會運算輸入資料集的所有[訓練前偏差指標](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-data-bias.html)。

```
clarify_processor.run_pre_training_bias(
     data_config=data_config,
    data_bias_config=bias_config,
    methods="all",
)
```

或者，您也可以指派訓練前偏差指標清單給方法參數，以選擇要運算哪些指標。例如，以`methods=["CI", "DPL"]`取代`methods="all"`，指示 SageMaker Clarify 處理器僅運算[等級不平衡](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-bias-metric-class-imbalance.html)和[標籤比例差異](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-data-bias-metric-true-label-imbalance.html)。

### 如何運算 CSV 資料集的所有訓練後偏差指標
<a name="clarify-processing-job-run-tabular-csv-posttraining"></a>

您可以在訓練前運算訓練前偏差指標。但是，若要運算[訓練後偏差指標](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-post-training-bias.html)，您必須擁有訓練好的模型。下列範例輸出來自二進位分類模型，該模型以 CSV 格式輸出資料。在此範例輸出中，每一列都包含兩欄。首欄包含預測標籤，第二欄包含該標籤的機率值。

```
0,0.028986845165491
1,0.825382471084594
...
```

在以下範例組態中，`ModelConfig` 物件會指示任務將 SageMaker AI 模型部署到臨時端點。端點使用一個`ml.m4.xlarge`推論執行個體。由於參數`content_type`和`accept_type`沒有設定，它們會自動使用參數`dataset_type`的值，即`text/csv`。

```
model_config = clarify.ModelConfig(
    model_name=your_model,
    instance_type='ml.m4.xlarge',
    instance_count=1,
)
```

下列組態範例使用標籤索引為`0`的`ModelPredictedLabelConfig`物件。這會指示 SageMaker Clarify 處理任務在模型輸出的首欄中找到預測標籤。在此範例中，處理任務使用從零開始的索引。

```
predicted_label_config = clarify.ModelPredictedLabelConfig(
    label=0,
)
```

結合之前的組態範例，下列程式碼範例會啟動 SageMaker Clarify 處理任務，以運算所有訓練後偏差指標。

```
clarify_processor.run_post_training_bias(
    data_config=data_config,
    data_bias_config=bias_config,
    model_config=model_config,
    model_predicted_label_config=predicted_label_config,
    methods="all",
)
```

同樣地，您也可以指派訓練後偏差指標清單給`methods`參數，以選擇要運算哪些指標。例如，以`methods=["DPPL", "DI"]`取代`methods=“all”`，僅運算[預測標籤中正值比例的差異](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-post-training-bias-metric-dppl.html)和[差別影響](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-post-training-bias-metric-di.html)。

### 如何運算 CSV 資料集的所有偏差指標
<a name="clarify-processing-job-run-tabular-csv-all"></a>

下列組態範例說明如何在一個 SageMaker Clarify 處理任務中執行所有訓練前和訓練後偏差指標。

```
clarify_processor.run_bias(
    data_config=data_config,
     bias_config=bias_config,
     model_config=model_config,
    model_predicted_label_config=predicted_label_config,
    pre_training_methods="all",
    post_training_methods="all",
)
```

如需如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理工作，以偵測偏差的指示範例筆記本，請參閱 [SageMaker Clarify 的公平性和可解釋性](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.ipynb)。

### 如何運算CSV 資料集的 SHAP 值
<a name="clarify-processing-job-run-tabular-csv-shap"></a>

SageMaker Clarify 使用 [KernelSHAP](https://arxiv.org/abs/1705.07874) 演算法提供功能屬性。SHAP分析需要機率值或分數而不是預測標籤，因此該`ModelPredictedLabelConfig`物件具有機率索引`1`。這會指示 SageMaker Clarify 處理任務從模型輸出的第二欄擷取機率分數 (使用從零開始的索引)。

```
probability_config = clarify.ModelPredictedLabelConfig(
    probability=1,
)
```

`SHAPConfig`物件提供了SHAP分析參數。在此範例中，忽略 SHAP `baseline` 參數且`num_clusters` 參數的值為 `1`。這會指示 SageMaker Clarify 處理器根據叢集輸入資料集來運算一個SHAP基準範例。如果您想要選擇基準資料集，請參閱[可解釋性的SHAP基準](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-feature-attribute-shap-baselines.html)。

```
shap_config = clarify.SHAPConfig(
    num_clusters=1,
)
```

下列程式碼範例會啟動 SageMaker Clarify 處理任務以運算SHAP值。

```
clarify_processor.run_explainability(
    data_config=data_config,
    model_config=model_config,
    model_scores=probability_config,
    explainability_config=shap_config,
)
```

如需如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務，以計算 SHAP 值的範例筆記本，請參閱 [SageMaker Clarify 的公平性和可解釋性](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.ipynb)。

### 如何運算 CSV 資料集的部分相依圖 (PDPs)
<a name="clarify-processing-job-run-tabular-csv-pdp"></a>

PDPs說明預測目標對一個或多個感興趣的輸入功能的回應依賴，同時保持所有其他功能不變。向上傾斜線或 PDP 中的曲線表示目標與輸入功能之間的關係為正值，陡度表示關係的強度。向下傾斜的直線或曲線表示如果輸入功能減少，則目標變數會增加。直覺上，您可以將部分相依解譯為對每個感興趣的輸入功能目標變數之回應。

下列組態範例適用於使用`PDPConfig`物件指示 SageMaker Clarify 處理任務，來運算`Income`功能的重要性。

```
pdp_config = clarify.PDPConfig(
    features=["Income"],
    grid_resolution=10,
)
```

在先前的範例中，`grid_resolution`參數會將`Income`功能值的範圍劃分為`10`儲存貯體。SageMaker Clarify 處理任務會在 X 軸上針對`Income`產生PDPs分割為`10`區段。Y 軸將說明對目標變數的`Income`邊際影響。

下列程式碼範例會啟動要運算PDPs的 SageMaker Clarify 處理任務。

```
clarify_processor.run_explainability(
    data_config=data_config,
    model_config=model_config,
    model_scores=probability_config,
    explainability_config=pdp_config,
)
```

如需範例筆記本，其中包含如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務以計算 PDPs 的指示，請參閱 [SageMaker Clarify 的可解釋性 - 部分相依圖 (PDP)](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/fairness_and_explainability/explainability_with_pdp.ipynb)。

### 如何運算和 CSV 資料集的SHAP值和PDPs
<a name="clarify-processing-job-run-tabular-csv-shap-pdp"></a>

您可以在單一 SageMaker Clarify 處理任務中運算PDPs值和SHAP。在下列組態範例中，新`PDPConfig`物件的`top_k_features`參數設定為`2`。這會指示 SageMaker Clarify 處理任務為了具有最大整體SHAP值的功能`2`，運算PDPs。

```
shap_pdp_config = clarify.PDPConfig(
    top_k_features=2,
    grid_resolution=10,
)
```

下列程式碼範例會啟動 SageMaker Clarify 處理任務，以運算SHAP值和PDPs。

```
clarify_processor.run_explainability(
    data_config=data_config,
    model_config=model_config,
    model_scores=probability_config,
    explainability_config=[shap_config, shap_pdp_config],
)
```

## 以 JSON 行格式分析表格式資料
<a name="clarify-processing-job-run-tabular-jsonlines"></a>

下列範例說明如何以 SageMaker AI JSON 行密集格式，設定表格式資料集的偏差分析和可解釋性分析。如需更多資訊，請參閱[JSONLINES 請求格式](cdf-inference.md#cm-jsonlines)。在這些範例中，內送資料集具有與上一節相同的資料，但其採用 JSON 行格式。每行都是有效的 JSON 物件。鍵`Features`指向功能值的陣列，以及鍵`Label`指向 Ground Truth 標籤。

```
{"Features":[25,0,2850,2],"Label":0}
{"Features":[36,0,6585,0],"Label":1}
{"Features":[22,1,1759,1],"Label":1}
{"Features":[48,0,3446,1],"Label":0}
...
```

在下列組態範例中，`DataConfig`物件會指定輸入資料集以及儲存輸出的位置。

```
data_config = clarify.DataConfig(
    s3_data_input_path=jsonl_dataset_s3_uri,
    dataset_type='application/jsonlines',
    headers=['Age', 'Gender', 'Income', 'Occupation', 'Target'],
    label='Label',
    features='Features',
    s3_output_path=clarify_job_output_s3_uri,
)
```

在先前的組態範例中，特徵參數設定為 [JMESPath](https://jmespath.org/) 表達式 `Features`，以便 SageMaker Clarify 處理任務可以從每筆記錄中擷取特徵陣列。`label`參數設定為 JMESPath 運算式`Label`，以便 SageMaker Clarify 處理任務可以從每個記錄中擷取 Ground Truth 標籤。`s3_data_input_path`參數可以是資料集檔案的 URI，也可以是 Amazon S3 URI 前置。如果您提供 S3 URI 字首，SageMaker Clarify 處理工作會以遞迴方式收集位於字首下的所有 S3 檔案。`s3_output_path`的值應為 S3 URI 前置，以保存分析結果。SageMaker AI 在編譯時使用 `s3_output_path`，且無法取得 SageMaker AI 管道參數、屬性、運算式或 `ExecutionVariable` 的值，這些都是在執行時期使用的。

您必須擁有訓練好的模型，才能運算訓練後的偏差指標或功能重要性。下列範例來自二進位分類模型，該模型會以範例的格式輸出 JSON 行資料。模型輸出的每一列都是有效的 JSON 物件。鍵`predicted_label`指向預測標籤，鍵`probability`指向機率值。

```
{"predicted_label":0,"probability":0.028986845165491}
{"predicted_label":1,"probability":0.825382471084594}
...
```

在下列組態範例中，`ModelConfig` 物件會指示 SageMaker Clarify 處理任務將 SageMaker AI 模型部署到臨時端點。端點使用一個`ml.m4.xlarge`推論執行個體。

```
model_config = clarify.ModelConfig(
    model_name=your_model,
    instance_type='ml.m4.xlarge',
    instance_count=1,
    content_template='{"Features":$features}',
)
```

在之前的組態範例中，未設定`content_type`和`accept_type`參數。因此，它們會自動使用`DataConfig`物件的`dataset_type`參數值，即`application/jsonlines`。SageMaker Clarify 處理任務使用`content_template`參數來構成模型輸入，方法是以功能陣列取代`$features`預留位置。

下面的範例組態說明如何將`ModelPredictedLabelConfig`物件的標籤參數設定為 JMESPath 表達式`predicted_label`。這將從模型輸出中擷取預測標籤。

```
predicted_label_config = clarify.ModelPredictedLabelConfig(
    label='predicted_label',
)
```

下面的範例組態說明如何將`ModelPredictedLabelConfig`物件的`probability`參數設定為 JMESPath 表達式`probability`。這將從模型輸出中擷取分數。

```
probability_config = clarify.ModelPredictedLabelConfig(
    probability='probability',
)
```

 若要運算 JSON 行格式資料集的偏差指標和功能重要性，請使用與上一節 CSV 資料集相同的執行陳述式和組態物件。您可以在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務，以偵測偏差並計算特徵重要性。如需指示和範例筆記本，請參閱 [SageMaker Clarify 的公平性和可解釋性 (JSON 行格式)](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability_jsonlines_format.ipynb)。

## 分析表格式資料以取得 NLP 可解譯性
<a name="clarify-processing-job-run-tabular-nlp"></a>

SageMaker Clarify 支援自然語言處理 (NLP) 模型的說明。這些說明可協助您瞭解哪些文字區段對您的模型預測最為重要。您可以說明輸入資料集的單一執行個體之模型預測，或者說明基準資料集的模型預測。若要瞭解並視覺化模型的行為，您可以指定多個精細程度的層級。要做到這一點，定義文字段的長度，例如其權杖、句子、段落。

SageMaker Clarify NLP 可解譯性與分類和回歸模型相容。您還可以使用 SageMaker Clarify 來解譯模型在包含文字、分類或數值功能的多模態資料集上的行為。NLP 多模態資料集的可解譯性可協助您瞭解每個功能對模型輸出的重要性。SageMaker Clarify 支援 62 種語言，可以處理包含多種語言的文字。

下列範例說明用於運算 NLP 功能重要性的分析組態檔案。在此範例中，傳入資料集是 CSV 格式的表格式資料集，其中包含一個二進位標籤資料欄和兩個功能資料欄。

```
0,2,"Flavor needs work"
1,3,"They taste good"
1,5,"The best"
0,1,"Taste is awful"
...
```

下列組態範例說明如何指定 CSV 格式的輸入資料集，以及使用`DataConfig`物件的輸出資料路徑。

```
nlp_data_config = clarify.DataConfig(
    s3_data_input_path=nlp_dataset_s3_uri,
    dataset_type='text/csv',
    headers=['Target', 'Rating', 'Comments'],
    label='Target',
    s3_output_path=clarify_job_output_s3_uri,
)
```

在先前的組態範例中，`s3_data_input_path` 參數可以是資料集檔案的 URI，也可以是 Amazon S3 URI 字首。如果您提供 S3 URI 字首，SageMaker Clarify 處理工作會以遞迴方式收集位於字首下的所有 S3 檔案。`s3_output_path`的值應為 S3 URI 前置，以保存分析結果。SageMaker AI 在編譯時使用 `s3_output_path`，且無法取得 SageMaker AI 管道參數、屬性、運算式或 `ExecutionVariable` 的值，這些都是在執行時期使用的。

下列範例輸出是根據先前以輸入資料集訓練的二進位分類模型所建立。分類模型會接受 CSV 資料，並在`0`和`1`之間輸出單一分數。

```
0.491656005382537
0.569582343101501
...
```

以下範例說明如何設定 `ModelConfig` 物件來部署 SageMaker AI 模型。在此範例中，臨時端點會部署模型。此端點使用一個配備 GPU 的`ml.g4dn.xlarge`推論執行個體來加速推論。

```
nlp_model_config = clarify.ModelConfig(
    model_name=your_nlp_model_name,
    instance_type='ml.g4dn.xlarge',
    instance_count=1,
)
```

下面的範例說明如何設定`ModelPredictedLabelConfig`物件定位的第一欄機率 (分數) 與索引`0`。

```
probability_config = clarify.ModelPredictedLabelConfig(
    probability=0,
)
```

下列範例 SHAP 組態說明如何使用英文語言的模型和輸入資料集，來執行權杖的可解譯性分析。

```
text_config = clarify.TextConfig(
    language='english',
    granularity='token',
)
nlp_shap_config = clarify.SHAPConfig(
    baseline=[[4, '[MASK]']],
    num_samples=100,
    text_config=text_config,
)
```

在先前的範例中，`TextConfig`物件會啟動 NLP 可解譯性分析。`granularity`參數指示分析應該解析權杖。在英語中，每個權杖都是一個單詞。如需其他語言，請參閱 [針對權杖化的 spaCy 文件](https://spacy.io/usage/linguistic-features#tokenization)，SageMaker Clarify 將其用於NLP 處理。先前的範例也說明如何使用`Rating`的平均值`4`來設定就地SHAP基準執行個體。特殊的遮蔽權杖 `[MASK]` 用於取代 `Comments` 中的權杖 (字)。

在先前的範例中，如果執行個體是`2,"Flavor needs work"`，請將基準設定為具有下列基準`4`的平均值`Rating`。

```
4, '[MASK]'
```

在前面的範例中，SageMaker Clarify 解譯器會逐一查看每個權杖，並以遮蔽物取代它，如下所示。

```
2,"[MASK] needs work"

4,"Flavor [MASK] work"

4,"Flavor needs [MASK]"
```

然後，SageMaker Clarify 解譯器會將每一行發送到您的模型進行預測。這樣解譯器就可以學習帶有和沒有遮蔽詞的預測。然後，SageMaker Clarify 解譯器會使用此資訊來運算每個權杖的貢獻。

下列程式碼範例會啟動 SageMaker Clarify 處理任務以運算SHAP值。

```
clarify_processor.run_explainability(
    data_config=nlp_data_config,
    model_config=nlp_model_config,
    model_scores=probability_config,
    explainability_config=nlp_shap_config,
)
```

如需範例筆記本，其中包含如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務，以進行 NLP 可解釋性分析的指示，請參閱[使用 SageMaker Clarify 解釋文字情緒分析](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/text_explainability/text_explainability.ipynb)。

## 分析影像資料，確保電腦視覺可解釋性
<a name="clarify-processing-job-run-cv"></a>

SageMaker Clarify 產生熱度圖，提供有關您的電腦視覺模型如何分類和偵測您的影像中物件的深入分析。

在下列組態範例中，輸入資料集是由 JPEG 影像所組成。

```
cv_data_config = clarify.DataConfig(
    s3_data_input_path=cv_dataset_s3_uri,
    dataset_type="application/x-image",
    s3_output_path=clarify_job_output_s3_uri,
)
```

 在先前的組態範例中，`DataConfig` 物件包含設定為 Amazon S3 URI 字首的 `s3_data_input_path`。SageMaker Clarify 處理任務會以遞迴方式收集前置下的所有影像檔案。`s3_data_input_path`參數可以是資料集檔案的 URI，也可以是 Amazon S3 URI 前置。如果您提供 S3 URI 字首，SageMaker Clarify 處理工作會以遞迴方式收集位於字首下的所有 S3 檔案。`s3_output_path`的值應為 S3 URI 前置，以保存分析結果。SageMaker AI 在編譯時使用 `s3_output_path`，且無法取得 SageMaker AI 管道參數、屬性、運算式或 `ExecutionVariable` 的值，這些都是在執行時期使用的。

### 如何解譯影像分類模型
<a name="clarify-processing-job-run-tabular-cv-image-classification"></a>

SageMaker Clarify 處理任務會使用 KernelSHAP 演算法解譯影像，該演算法會將影像視為超像素的集合。在有由影像組成的資料集的情況下，處理任務會輸出影像資料集，其中每個影像都會說明相關超像素的熱度圖。

下列組態範例說明如何使用 SageMaker 影像分類模型設定可解釋性分析。如需更多資訊，請參閱[影像分類 - MXNet](image-classification.md)。

```
ic_model_config = clarify.ModelConfig(
    model_name=your_cv_ic_model,
    instance_type="ml.p2.xlarge",
    instance_count=1,
    content_type="image/jpeg",
    accept_type="application/json",
)
```

在之前的組態範例中，已訓練名為的模型`your_cv_ic_model`，可將輸入的 JPEG 影像上的動物分類。先前範例中的 `ModelConfig` 物件會指示 SageMaker Clarify 處理任務將 SageMaker AI 模型部署到臨時端點。為了加速推斷，端點使用一個配備 GPU 的`ml.p2.xlarge`推論執行個體。

將 JPEG 圖像發送到端點後，端點對其進行分類並返回分數清單。每個分數適用於一個類別。`ModelPredictedLabelConfig`物件提供每個類別的名稱，如下所示。

```
ic_prediction_config = clarify.ModelPredictedLabelConfig(
    label_headers=['bird', 'cat', 'dog'],
)
```

['鳥','貓','狗'] 先前的輸入範例輸出可以是 0.3,0.6,0.1，其中 0.3 代表將圖像分類為鳥的可信度分數。

下列範例SHAP組態說明如何產生影像分類問題的說明。它使用一個`ImageConfig`物件來啟動分析。

```
ic_image_config = clarify.ImageConfig(
    model_type="IMAGE_CLASSIFICATION",
    num_segments=20,
    segment_compactness=5,
)

ic_shap_config = clarify.SHAPConfig(
    num_samples=100,
    image_config=ic_image_config,
)
```

SageMaker Clarify 使用[簡單線性疊代叢集 (SLIC)](https://scikit-image.org/docs/dev/api/skimage.segmentation.html#skimage.segmentation.slic) 方法，從 scikit 學習庫中擷取功能進行圖像區隔。之前的組態範例`model_type`參數會指出影像分類問題的類型。參數`num_segments`會估計要將標示多少個近似區段數量到輸入影像中。然後將區段數量傳遞至 slic `n_segments` 參數。

影像的每個區段都會被視為超像素，且會針對每個區段運算局部SHAP值。參數`segment_compactness`可決定由 scikit-image slic 方法所產生的影像區段形狀和大小。然後將影像區段的大小和形狀傳遞至 slic `compactness` 參數。

下列程式碼範例會啟動 SageMaker Clarify 處理任務，以產生您的影像熱度圖。正熱度圖值說明該功能提高了偵測物件的可信度分數。負值表示該功能降低了可信度分數。

```
clarify_processor.run_explainability(
    data_config=cv_data_config,
    model_config=ic_model_config,
    model_scores=ic_prediction_config,
    explainability_config=ic_shap_config,
)
```

如需使用 SageMaker Clarify 的範例筆記本來分類影像並說明其分類，請參閱[使用 SageMaker Clarify 說明影像分類](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/image_classification/explainability_image_classification.ipynb)。

### 如何解譯物件檢測模型
<a name="clarify-processing-job-run-tabular-cv-object-detection"></a>

SageMaker Clarify 處理任務可以偵測並分類影像中的物件，然後為偵測到的物件提供說明。解譯的程序如下。

1. 影像物件首先分類為指定集合中的一個分類。例如，如果一個物件偵測模型可以識別貓，狗和魚，那麼這三個類是在一個集合。此集合由`label_headers`參數指定，如下所示。

   ```
   clarify.ModelPredictedLabelConfig(
   
   label_headers=object_categories,
   
   )
   ```

1. SageMaker Clarify 處理任務會為每個物件產生可信度分數。高可信度分數表示它屬於指定集合中的其中一個類別。SageMaker Clarify 處理任務也會產生分隔物件的邊界框座標。如需有關可信度分數和邊界框的更多相關資訊，請參閱[回應格式](object-detection-in-formats.md#object-detection-recordio)。

1. 然後，SageMaker Clarify 會提供在影像場景中偵測物件的說明。它會使用**如何解譯影像分類模型**一節中所述的方法。

在下列組態範例中，SageMaker AI 物件偵測模型 `your_cv_od_model` 會在 JPEG 影像進行訓練，以識別其上的動物。

```
od_model_config = clarify.ModelConfig(
    model_name=your_cv_ic_model,
    instance_type="ml.p2.xlarge",
    instance_count=1,
    content_type="image/jpeg",
    accept_type="application/json",
)
```

先前組態範例中的 `ModelConfig` 物件會指示 SageMaker Clarify 處理任務，將 SageMaker AI 模型部署到臨時端點。為了加速成像，此端點使用一個`ml.p2.xlarge`配備 GPU 的推論執行個體。

在下列範例組態中，`ModelPredictedLabelConfig`物件會提供分類的每個類別名稱。

```
ic_prediction_config = clarify.ModelPredictedLabelConfig(
    label_headers=['bird', 'cat', 'dog'],
)
```

下列範例SHAP組態說明如何產生物件偵測的說明。

```
od_image_config = clarify.ImageConfig(
    model_type="OBJECT_DETECTION",
    num_segments=20,
    segment_compactness=5,
    max_objects=5,
    iou_threshold=0.5,
    context=1.0,
)
od_shap_config = clarify.SHAPConfig(
    num_samples=100,
    image_config=image_config,
)
```

在前面的範例組態中，`ImageConfig`物件會啟動分析。`model_type`參數表示問題的類型是物件偵測。如需有關其他參數的詳細描述，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

下列程式碼範例會啟動 SageMaker Clarify 處理任務，以產生您的影像熱度圖。正熱度圖值說明該功能提高了偵測物件的可信度分數。負值表示該功能降低了可信度分數。

```
clarify_processor.run_explainability(
    data_config=cv_data_config,
    model_config=od_model_config,
    model_scores=od_prediction_config,
    explainability_config=od_shap_config,
)
```

如需使用 SageMaker Clarify 範例筆記本的來偵測影像中物件並說明其預測，請參閱[使用 Amazon SageMaker AI Clarify 解釋物件偵測模型](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/object_detection/object_detection_clarify.ipynb)。

## 分析時間序列預測模型的解釋
<a name="clarify-processing-job-run-ts"></a>

下列範例展示如何以 SageMaker AI JSON 密集格式設定資料，以解釋時間序列預測模型。如需 JSON 格式化的詳細資訊，請參閱[JSON 請求格式](cdf-inference.md#cm-json)。

```
[
    {
        "item_id": "item1",
        "timestamp": "2019-09-11",
        "target_value": 47650.3,
        "dynamic_feature_1": 0.4576,
        "dynamic_feature_2": 0.2164,
        "dynamic_feature_3": 0.1906,
        "static_feature_1": 3,
        "static_feature_2": 4
    },
    {
        "item_id": "item1",
        "timestamp": "2019-09-12",
        "target_value": 47380.3,
        "dynamic_feature_1": 0.4839,
        "dynamic_feature_2": 0.2274,
        "dynamic_feature_3": 0.1889,
        "static_feature_1": 3,
        "static_feature_2": 4
    },
    {
        "item_id": "item2",
        "timestamp": "2020-04-23",
        "target_value": 35601.4,
        "dynamic_feature_1": 0.5264,
        "dynamic_feature_2": 0.3838,
        "dynamic_feature_3": 0.4604,
        "static_feature_1": 1,
        "static_feature_2": 2
    },
]
```

### 資料組態
<a name="clarify-processing-job-run-ts-dataconfig"></a>

使用 `TimeSeriesDataConfig` 向您的可解釋性任務傳達如何從傳遞的輸入資料集正確剖析資料，如下列範例組態所示：

```
time_series_data_config = clarify.TimeSeriesDataConfig(
    target_time_series='[].target_value',
    item_id='[].item_id',
    timestamp='[].timestamp',
    related_time_series=['[].dynamic_feature_1', '[].dynamic_feature_2', '[].dynamic_feature_3'],
    static_covariates=['[].static_feature_1', '[].static_feature_2'],
    dataset_format='timestamp_records',
)
```

### 非對稱 Shapley 值組態
<a name="clarify-processing-job-run-ts-asymm"></a>

使用 `AsymmetricShapleyValueConfig` 定義時間序列預測模型解釋分析的引數，例如基準、方向、精細程度和範例數量。所有三種類型的資料都會設定基準值：相關時間序列、靜態共變數和目標時間序列。`AsymmetricShapleyValueConfig` 組態會通知 SageMaker Clarify 處理器如何一次計算一個項目的特徵歸因。下列程式碼顯示 `AsymmetricShapleyValueConfig` 的範例定義。

```
asymmetric_shapley_value_config = AsymmetricShapleyValueConfig(
    direction="chronological",
    granularity="fine-grained",
    num_samples=10,
    baseline={
        "related_time_series": "zero", 
        "static_covariates": {
            "item1": [0, 0], "item2": [0, 0]
        }, 
        "target_time_series": "zero"
    },
)
```

您提供給 `AsymmetricShapleyValueConfig` 的值會傳遞至分析組態，做為 `methods` 中的項目，金鑰為 `asymmetric_shapley_value`。

### 模型組態
<a name="clarify-processing-job-run-ts-model"></a>

您可以控制從 SageMaker Clarify 處理器傳送的承載結構。在下列程式碼範例中，`ModelConfig` 組態物件會引導時間序列預測可解釋性任務，將使用 JMESPath 語法的記錄彙總為 `'{"instances": $records}'`，其中每筆記錄的結構是使用下列 record\$1template `'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'` 定義的。請注意，`$start_time`、`$target_time_series`、`$related_time_series` 和 `$static_covariates` 是用來將資料集值對應至端點請求值的內部字符。

```
model_config = clarify.ModelConfig(
    model_name=your_model,
    instance_type='ml.m4.xlarge',
    instance_count=1,
    record_template='{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}',
    content_template='{"instances": $records}',,
    time_series_model_config=TimeSeriesModelConfig(
        forecast={'forecast': 'predictions[*].mean[:2]'}
    )
)
```

同樣地，`TimeSeriesModelConfig` 中的 `forecast` 屬性傳遞至金鑰為 `time_series_predictor_config` 的分析組態，用來從端點回應擷取模型預測。例如，範例端點批次回應可能如下：

```
{
    "predictions": [
        {"mean": [13.4, 3.6, 1.0]}, 
        {"mean": [23.0, 4.7, 3.0]}, 
        {"mean": [3.4, 5.6, 2.0]}
    ]
}
```

如果為 `forecast` 提供的 JMESPath 表達式是 \$1'predictions[\$1].mean[:2]'\$1\$1，則會剖析預測值，如下所示：

```
[[13.4, 3.6], [23.0, 4.7], [3.4, 5.6]]
```

## 如何執行平行 SageMaker Clarify 處理任務
<a name="clarify-processing-job-run-spark"></a>

處理大型資料集時，您可以使用 [Apache Spark](https://spark.apache.org/) 來提高 SageMaker Clarify 處理任務的速度。Spark 是用於大規模資料處理的統一分析引擎。當您要求每個 SageMaker Clarify 處理器多個執行個體時，SageMaker Clarify 會使用 Spark 的分散式運算功能。

下列組態範例說明如何使用`SageMakerClarifyProcessor`建立具有`5`運算執行個體的 SageMaker Clarify 處理器。若要執行與`SageMakerClarifyProcessor`相關聯的任何工作，SageMaker Clarify 使用 Spark 分散式處理。

```
from sagemaker import clarify

spark_clarify_processor = clarify.SageMakerClarifyProcessor(
    role=role,
    instance_count=5,
    instance_type='ml.c5.xlarge',
)
```

如果您將 [SHAPConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.SHAPConfig) 的`save_local_shap_values` 參數設定為`True`，SageMaker Clarify 處理任務會將本地SHAP值儲存為工作輸出位置的多個部分檔案。

若要將本地SHAP值與輸入資料集執行個體產生關聯，請使用的`joinsource`參數`DataConfig`。如果您新增更多運算執行個體，建議您同時增加臨時端點`instance_count`的 [ModelConfig](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.clarify.ModelConfig)。這樣可以防止 Spark 工作者的並行推論請求產生過多端點。具體而言，我們建議您使用端點對處理執行個體的一對一比例。

# 分析結果
<a name="clarify-processing-job-analysis-results"></a>

SageMaker Clarify 處理任務完成後，您可以下載輸出檔案來檢查它們，也可以在 SageMaker Studio Classic 中將結果視覺化。下列主題描述 SageMaker Clarify 產生的分析結果，例如偏差分析、SHAP 分析、電腦視覺可解釋性分析和部分相依性圖 (PDP) 分析所產生的結構描述和報告。如果組態分析包含用於運算多個分析的參數，則結果會彙總為一個分析和一個報告檔案。

SageMaker Clarify 處理任務輸出目錄包含下列檔案：
+ `analysis.json`— 包含 JSON 格式的偏差指標和功能重要性的檔案。
+ `report.ipynb`— 包含程式碼的靜態筆記本，可協助您視覺化偏差指標和功能重要性。
+ `explanations_shap/out.csv`— 建立並包含根據您的特定分析組態自動產生檔案的目錄。例如，如果您啟用`save_local_shap_values`參數，則每個執行個體的本地 SHAAP 值會儲存到`explanations_shap`目錄。另一個範例是，如果您的`analysis configuration`不包含 SHAP 基準參數的值，SageMaker Clarify 可解釋性工作會透過叢集輸入資料集來運算基準。然後，它會將產生的基準儲存到目錄中。

如需更多詳細資訊，請參閱下列幾節。

**Topics**
+ [偏差分析](#clarify-processing-job-analysis-results-bias)
+ [SHAP 分析](#clarify-processing-job-analysis-results-shap)
+ [電腦視覺 (CV) 可解譯性分析](#clarify-processing-job-analysis-results-cv)
+ [部分相依性繪圖 (PDP) 分析](#clarify-processing-job-analysis-results-pdp)
+ [非對稱 Shapley 值](#clarify-processing-job-analysis-results-asymmshap)

## 偏差分析
<a name="clarify-processing-job-analysis-results-bias"></a>

Amazon SageMaker Clarify 使用記錄在 [Amazon SageMaker Clarify 偏差和公平性條款](clarify-detect-data-bias.md#clarify-bias-and-fairness-terms) 中的術語來討論偏差和公平性。

### 分析檔案的結構描述
<a name="clarify-processing-job-analysis-results-bias-schema"></a>

分析檔案採用 JSON 格式，分為兩個區段：訓練前偏差指標和訓練後偏差指標。訓練前和訓練後偏差指標的參數如下。
+ **pre\$1training\$1bias\$1metrics** – 訓練前偏差指標的參數。如需更多資訊，請參閱[訓練前偏差指標](clarify-measure-data-bias.md)及[分析組態檔案](clarify-processing-job-configure-analysis.md)。
  + **label** – 由分析組態的`label`參數定義的 Ground Truth 標籤名稱。
  + **label\$1value\$1or\$1threshold** – 包含由分析組態參數定義的標籤值或間隔的字串。`label_values_or_threshold`例如，如果值`1`是為二進位分類問題提供的，那麼字串將為`1`。如果為多類問題提供了多值`[1,2]`，那麼該字串將是`1,2`。如果提供了一個閾值`40`用於回歸問題，那麼該字串將是像`(40, 68]`的內部，其中`68`是在輸入資料集中標籤的最大值。
  + **構面** – 區段包含數個鍵值對，其中鍵對應到構面組態參數 `name_or_index` 所定義的構面名稱，而該值為構面物件的陣列。每個構面物件具有下列項目：
    + **value\$1or\$1threshold** – 包含構面組態`value_or_threshold`參數所定義的構面值或間隔字串。
    + **metrics** – 區段包含一系列偏差指標元素，每個偏差指標元素都具有以下屬性：
      + **name** – 偏差測量結果的簡短名稱。例如 `CI`。
      + **description** – 偏差指標的完整名稱。例如 `Class Imbalance (CI)`。
      + **value** – 偏差指標值，或 JSON Null 值 (如果未因特定原因運算偏差指標)。值 ±∞ 表示為字串`∞`和`-∞`分別。
      + **error** – 選擇性錯誤訊息，說明未運算偏差指標的原因。
+ **post\$1training\$1bias\$1metrics** – 此區段包含訓練後偏差指標量，並遵循與訓練前部分類似的配置和結構。如需更多資訊，請參閱[訓練後資料和模型偏差指標](clarify-measure-post-training-bias.md)。

以下是分析組態的範例，可運算訓練前和訓練後偏差指標。

```
{
    "version": "1.0",
    "pre_training_bias_metrics": {
        "label": "Target",
        "label_value_or_threshold": "1",
        "facets": {
            "Gender": [{
                "value_or_threshold": "0",
                "metrics": [
                    {
                        "name": "CDDL",
                        "description": "Conditional Demographic Disparity in Labels (CDDL)",
                        "value": -0.06
                    },
                    {
                        "name": "CI",
                        "description": "Class Imbalance (CI)",
                        "value": 0.6
                    },
                    ...
                ]
            }]
        }
    },
    "post_training_bias_metrics": {
        "label": "Target",
        "label_value_or_threshold": "1",
        "facets": {
            "Gender": [{
                "value_or_threshold": "0",
                "metrics": [
                    {
                        "name": "AD",
                        "description": "Accuracy Difference (AD)",
                        "value": -0.13
                    },
                    {
                        "name": "CDDPL",
                        "description": "Conditional Demographic Disparity in Predicted Labels (CDDPL)",
                        "value": 0.04
                    },
                    ...
                ]
            }]
        }
    }
}
```

### 偏差分析報告
<a name="clarify-processing-job-analysis-results-bias-report"></a>

偏差分析報告包含數個包含詳細說明和描述的表格和圖表。其中包含但不限於標籤值的分布、構面值的分布、高階模型效能圖表、偏差指標表及其描述。如需有關偏差指標以及如何解譯它們的更多資訊，請參閱[了解 Amazon SageMaker Clarify 如何協助偵測偏差](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias/)。

## SHAP 分析
<a name="clarify-processing-job-analysis-results-shap"></a>

SageMaker Clarify 處理任務使用核心 SHAP 演算法來運算功能屬性。SageMaker Clarify 處理任務會產生本地和整體 SHAP 值。這有助於確定每個功能對模型預測的貢獻。本地 SHAP 值代表每個個別執行個體的功能重要性，而整體 SHAP 值會彙總資料集在所有執行個體中的本地 SHAP 值。如需 SHAP 值和如何解譯它們的更多資訊，請參閱[使用塑形值的特徵屬性](clarify-shapley-values.md)。

### SHAP 分析檔案的結構描述
<a name="clarify-processing-job-analysis-results-shap-schema"></a>

整體 SHAP 分析結果儲存在`kernel_shap`方法下的分析檔案說明區段中。SHAP 分析檔案的不同參數如下：
+ **explanations** – 包含功能重要性分析結果的分析檔案區段。
  + **kernal\$1shap** – 分析檔案中包含整體 SHAP 分析結果的區段。
    + **global\$1shap\$1values** – 分析檔案的一個區段，其中包含數個鍵值對。鍵值組中的每個鍵都代表輸入資料集中的功能名稱。鍵值組中的每個值都對應到功能的整體 SHAP 值。整體 SHAP 值是透過使用`agg_method`組態彙總功能的每個執行個體 SHAP 值來取得。如果啟動`use_logit`組態，則會使用邏輯迴歸係數來運算該值，該係數可解譯為對數-賠率比率。
    + **expected\$1value** – 基準資料集的平均預測。如果啟動`use_logit`組態，則使用邏輯迴歸係數運算該值。
    + **global\$1top\$1shap\$1text** - 用於 NLP 可解釋性分析。分析檔案的一個區段，其中包含一組鍵值對。SageMaker Clarify 處理任務會彙總每個權杖的 SHAP 值，然後根據其整體 SHAP 值選取常用權杖。`max_top_tokens` 組態定義了要選取的權杖的數量。

      每個選定的常用權杖都有一個鍵值組。鍵值組中的鍵對應到常用權杖的文字功能名稱。鍵值對中的每個值都是常用權杖的整體 SHAP 值。如需 `global_top_shap_text` 鍵值對的範例，請參閱下列輸出。

以下範例顯示來自表格式資料集的 SHAP 分析的輸出。

```
{
    "version": "1.0",
    "explanations": {
        "kernel_shap": {
            "Target": {
                 "global_shap_values": {
                    "Age": 0.022486410860333206,
                    "Gender": 0.007381025261958729,
                    "Income": 0.006843906804137847,
                    "Occupation": 0.006843906804137847,
                    ...
                },
                "expected_value": 0.508233428001
            }
        }
    }
}
```

以下範例顯示來自文字資料集的 SHAP 分析的輸出。與欄`Comments`對應的輸出是在文字功能分析之後產生的輸出範例。

```
{
    "version": "1.0",
    "explanations": {
        "kernel_shap": {
            "Target": {
               "global_shap_values": {
                    "Rating": 0.022486410860333206,
                    "Comments": 0.058612104851485144,
                    ...
                },
                "expected_value": 0.46700941970297033,
                "global_top_shap_text": {
                    "charming": 0.04127962903247833,
                    "brilliant": 0.02450240786522321,
                    "enjoyable": 0.024093569652715457,
                    ...
                }
            }
        }
    }
}
```

### 產生的基準檔案的結構描述
<a name="clarify-processing-job-analysis-results-baseline-schema"></a>

未提供 SHAP 基準組態時，SageMaker Clarify 處理任務會產生基準資料集。SageMaker Clarify 使用以距離為基礎的叢集演算法，從輸入資料集建立的叢集產生基準資料集。產生的基準資料集會儲存在 CSV 檔案中，位於`explanations_shap/baseline.csv`。此輸出檔案包含標題列和數個以分析組態中指定的`num_clusters`參數為基礎的執行個體。基準資料集僅由功能欄組成。以下範例顯示透過叢集化輸入資料集所建立的基準。

```
Age,Gender,Income,Occupation
35,0,2883,1
40,1,6178,2
42,0,4621,0
```

### 表格式資料集解譯性分析中的本地 SHAP 值結構描述
<a name="clarify-processing-job-analysis-results-tabular-schema"></a>

對於表格式資料集，如果使用單一運算執行個體，SageMaker Clarify 處理任務會將本地 SHAP 值儲存到名為`explanations_shap/out.csv`的 CSV 檔案。如果您使用多個運算執行個體，本地 SHAP 值會儲存到`explanations_shap`目錄中的數個 CSV 檔案。

包含本地 SHAP 值的輸出檔案具有一列，其中包含由標題定義的每欄本地 SHAP 值。標題遵循功能名稱後面加底線後跟目標變數的名稱的`Feature_Label`命名慣例。

對於多類別問題，標題中的功能名稱會先變更，然後是標籤。例如，兩個功能`F1, F2`和兩個類`L1`和`L2`，在標題中為`F1_L1`、`F2_L1`、`F1_L2`、和`F2_L2`。如果分析組態包含`joinsource_name_or_index`參數的值，則連接中使用的鍵欄會附加到標題名稱的末尾。這允許將本地 SHAP 值映射到輸入資料集的執行個體。以下是包含 SHAP 值的輸出檔案範例。

```
Age_Target,Gender_Target,Income_Target,Occupation_Target
0.003937908,0.001388849,0.00242389,0.00274234
-0.0052784,0.017144491,0.004480645,-0.017144491
...
```

### 來自 NLP 解譯性分析的本地 SHAP 值的結構描述
<a name="clarify-processing-job-analysis-results-nlp-schema"></a>

對於 NLP 解譯性分析，如果使用單一運算執行個體，SageMaker Clarify 處理任務會將本地 SHAP 值儲存到名為 JSON 行的檔案中。`explanations_shap/out.jsonl`如果您使用多個運算執行個體，本地 SHAP 值會儲存到`explanations_shap`目錄中的數個 JSON 行檔案。

包含本地 SHAP 值的每個檔案都有多個資料行，每行都是一個有效的 JSON 物件。JSON 物件具有下列屬性：
+ **explanations** – 分析文件的部分，其中包含單一執行個體的核心 SHAP 說明陣列。陣列中的每個元素都具有下列項目：
  + **feature\$1name** – 由標題組態提供的功能標題名稱。
  + **data\$1type** – 由 SageMaker Clarify 處理任務推斷的功能類型。文字特徵的有效值包含 `numerical`、`categorical`、和 `free_text` (對於文字特徵)。
  + **attributions** – 功能特定的歸因物件陣列。文字功能可以有多個歸因多重屬性物件，每個屬性物件用於`granularity`組態所定義的單位。屬性物件具有下列項目：
    + **attribution** – 類別特定的機率值陣列。
    + **description** – (針對文字特徵) 文字單位的描述。
      + **partial\$1text** – SageMaker Clarify 處理任務說明的文字部分。
      + **start\$1idx** – 從零開始的索引，用來識別指出部分文字片段開始的陣列位置。

以下是本地 SHAP 值文件中的單行的範例，範例有美化以增強其可讀性。

```
{
    "explanations": [
        {
            "feature_name": "Rating",
            "data_type": "categorical",
            "attributions": [
                {
                    "attribution": [0.00342270632248735]
                }
            ]
        },
        {
            "feature_name": "Comments",
            "data_type": "free_text",
            "attributions": [
                {
                    "attribution": [0.005260534499999983],
                    "description": {
                        "partial_text": "It's",
                        "start_idx": 0
                    }
                },
                {
                    "attribution": [0.00424190349999996],
                    "description": {
                        "partial_text": "a",
                        "start_idx": 5
                    }
                },
                {
                    "attribution": [0.010247314500000014],
                    "description": {
                        "partial_text": "good",
                        "start_idx": 6
                    }
                },
                {
                    "attribution": [0.006148907500000005],
                    "description": {
                        "partial_text": "product",
                        "start_idx": 10
                    }
                }
            ]
        }
    ]
}
```

### SHAP 分析報告
<a name="clarify-processing-job-analysis-results-shap-report"></a>

SHAP 分析報告提供`10`常用整體 SHAP 最大值的長條圖。下列圖表範例說明常用`4`功能的 SHAP 值。

![\[針對前四個功能的目標變數運算整體 SHAP 值的水平長條圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify/shap-chart.png)


## 電腦視覺 (CV) 可解譯性分析
<a name="clarify-processing-job-analysis-results-cv"></a>

SageMaker Clarify 電腦視覺可解譯功能會取得由影像組成的資料集，並將每個影像視為超像素的集合。分析之後，SageMaker Clarify 處理任務會輸出影像資料集，其中每個影像都會說明超像素的熱度圖。

以下範例說明了左側的輸入速度限制符號，以及右側的 SHAP 散量的大小的熱度圖。這些 SHAP 值是由影像辨識工具 Resnet-18 模型運算，該模型經過訓練，可識別[德國交通標誌](https://benchmark.ini.rub.de/gtsrb_news.html)。德國交通標誌識別基準 (GTSRB) 資料集提供於紙本的 [Man vs. computer: Benchmarking machine learning algorithms for traffic sign recognition (人與電腦：交通標誌識別機器學習演算法的基準)](https://www.sciencedirect.com/science/article/abs/pii/S0893608012000457?via%3Dihub)。在範例輸出中，較大的正值表示超像素與模型預測具有很強的正相互關聯。較大的負值表示超像素與模型預測具有很強的負相互關聯。熱度圖中說明的 SHAP 值的絕對值越大，超像素和模型預測之間的關係越強。

![\[輸入輸入速度限制標誌的圖像和 Resnet-18 模型的 SHAP 值產生的熱度圖。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify/shap_speed-limit-70.png)


如需更多資訊，請參閱範例筆記本[使用 SageMaker Clarify 解譯影像分類](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/image_classification/explainability_image_classification.ipynb)和[使用 Amazon SageMaker Clarify 解譯物件偵測模型](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/object_detection/object_detection_clarify.ipynb)。

## 部分相依性繪圖 (PDP) 分析
<a name="clarify-processing-job-analysis-results-pdp"></a>

部分相依性繪圖說明預測目標回應對一組感興趣的輸入功能之相依性。與所有其他輸入功能的值相比，這些值會被邊界化，稱為補碼功能。直覺上，您可以將部分依賴性解譯為目標回應，該回應作為感興趣的每個輸入功能的函式。

### 分析檔案的結構描述
<a name="clarify-processing-job-analysis-results-pdp-schema"></a>

PDP 值儲存在`pdp`方法下的`explanations`分析檔案區段中。`explanations`參數的設定方式如下：
+ **explanations** – 包含功能重要性分析結果的分析檔案區段。
  + **pdp** – 分析檔案的區段，其中包含單一執行個體的 PDP 說明陣列。陣列的每個元素都有下列項目：
    + **feature\$1name** – `headers` 組態所提供之功能標題名稱。
    + **data\$1type** – 由 SageMaker Clarify 處理任務推斷的功能類型。`data_type`的有效值包含數值和分類。
    + **feature\$1values** – 包含功能中存在的值。如果 SageMaker Clarify 所推斷的 `data_type` 是分類，則 `feature_values` 會包含該功能可能的所有唯一值。如果 SageMaker Clarify 所推論的 `data_type` 是數字，則 `feature_values` 會包含所產生儲存貯體的中心值清單。`grid_resolution`參數決定用於群組功能資料欄值的儲存貯體數。
    + **data\$1distribution** – 百分比陣列，其中每個值都是儲存貯體所包含執行個體的百分比。`grid_resolution`參數決定儲存貯體數。功能欄值會分組到這些儲存貯體中。
    + **model\$1predictions** – 模型預測的陣列，其中陣列的每個元素是對應到模型輸出中一個類別的預測陣列。

      **label\$1headers** – 由`label_headers`組態提供的標籤標題。
    + **error** – 如果未因特定原因運算 PDP 值，則會產生錯誤訊息。此錯誤訊息會取代包含於`feature_values`、`data_distributions`和`model_predictions`欄位中的內容。

以下是從包含 PDP 分析結果的分析檔案輸出的範例。

```
{
    "version": "1.0",
    "explanations": {
        "pdp": [
            {
                "feature_name": "Income",
                "data_type": "numerical",
                "feature_values": [1046.9, 2454.7, 3862.5, 5270.2, 6678.0, 8085.9, 9493.6, 10901.5, 12309.3, 13717.1],
                "data_distribution": [0.32, 0.27, 0.17, 0.1, 0.045, 0.05, 0.01, 0.015, 0.01, 0.01],
                "model_predictions": [[0.69, 0.82, 0.82, 0.77, 0.77, 0.46, 0.46, 0.45, 0.41, 0.41]],
                "label_headers": ["Target"]
            },
            ...
        ]
    }
}
```

### PDP 分析報告
<a name="clarify-processing-job-analysis-results-pdp-report"></a>

您可以為每個功能產生包含 PDP 圖表的分析報告。PDP 圖表`feature_values`沿著 X 軸繪製，並且其沿著 y 軸繪製`model_predictions`。對於多類模型，`model_predictions`是一個陣列，並且該陣列的每個元素對應到模型預測類中之一。

以下是該功能`Age`的 PDP 圖表範例。在範例輸出中，PDP 會說明群組到儲存貯體中的功能值數量。儲存貯體數由`grid_resolution`確定。功能值的儲存貯體會根據模型預測繪製。在此範例中，較高的功能值具有相同的模型預測值。

![\[折線圖說明模型預測與10單一網格點feature_values之間的散度。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify/pdp-chart.png)


## 非對稱 Shapley 值
<a name="clarify-processing-job-analysis-results-asymmshap"></a>

SageMaker Clarify 處理任務會使用非對稱 Shapley 值演算法，計算時間序列預測模型解釋歸因。此演算法會確定輸入特徵在每個時間步驟對預測的貢獻。

### 非對稱 Shapley 值分析檔案的結構描述
<a name="clarify-processing-job-analysis-results-shap-schema-assym"></a>

非對稱 Shapley 值結果會存放在 Amazon S3 儲存貯體中。您可以在分析檔案的*解釋*區段中找到此儲存貯體的位置。此區段包含特徵重要性分析結果。下列參數包含在非對稱 Shapley 值分析檔案中。
+ **asymmetric\$1shapley\$1value** - 分析檔案的區段，其中包含有關解釋任務結果的中繼資料，包括下列內容：
  + **explanation\$1results\$1path** - 具有解釋結果的 Amazon S3 位置
  + **direction** - 使用者提供的組態，組態值為 `direction`
  + **granularity** - 使用者提供的組態，組態值為 `granularity`

下列程式碼片段顯示範例分析檔案中先前提到的參數：

```
{
    "version": "1.0",
    "explanations": {
        "asymmetric_shapley_value": {
            "explanation_results_path": EXPLANATION_RESULTS_S3_URI,
           "direction": "chronological",
           "granularity": "timewise",
        }
    }
}
```

下列幾節描述解釋結果結構如何取決於組態中的 `granularity` 值。

#### 時間精細程度
<a name="clarify-processing-job-analysis-results-shap-schema-timewise"></a>

當精細程度為 `timewise` 時，輸出會以下列結構表示。`scores` 值代表每個時間戳記的歸因。`offset` 值代表模型對基準資料的預測，並描述模型未接收資料時的行為。

下列程式碼片段顯示模型的範例輸出，該模型對兩個時間步驟做出預測。因此，所有歸因都是兩個元素的清單，其中第一個項目是指第一個預測的時間步驟。

```
{
    "item_id": "item1",
    "offset": [1.0, 1.2],
    "explanations": [
        {"timestamp": "2019-09-11 00:00:00", "scores": [0.11, 0.1]},
        {"timestamp": "2019-09-12 00:00:00", "scores": [0.34, 0.2]},
        {"timestamp": "2019-09-13 00:00:00", "scores": [0.45, 0.3]},
    ]
}
{
    "item_id": "item2",
    "offset": [1.0, 1.2],
    "explanations": [
        {"timestamp": "2019-09-11 00:00:00", "scores": [0.51, 0.35]},
        {"timestamp": "2019-09-12 00:00:00", "scores": [0.14, 0.22]},
        {"timestamp": "2019-09-13 00:00:00", "scores": [0.46, 0.31]},
    ]
}
```

#### 精細程度
<a name="clarify-processing-job-analysis-results-shap-schema-fine"></a>

下列範例示範精細程度為 `fine_grained` 時的歸因結果。`offset` 值具有與上一節中所述相同的意義。歸因是在目標時間序列和相關時間序列的每個時間戳記針對每個輸入特徵 (如果可用) 計算，以及針對每個靜態共變數 (如果可用) 計算。

```
{
    "item_id": "item1",
    "offset": [1.0, 1.2],
    "explanations": [
        {"feature_name": "tts_feature_name_1", "timestamp": "2019-09-11 00:00:00", "scores": [0.11, 0.11]},
        {"feature_name": "tts_feature_name_1", "timestamp": "2019-09-12 00:00:00", "scores": [0.34, 0.43]},
        {"feature_name": "tts_feature_name_2", "timestamp": "2019-09-11 00:00:00", "scores": [0.15, 0.51]},
        {"feature_name": "tts_feature_name_2", "timestamp": "2019-09-12 00:00:00", "scores": [0.81, 0.18]},
        {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-11 00:00:00", "scores": [0.01, 0.10]},
        {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-12 00:00:00", "scores": [0.14, 0.41]},
        {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-13 00:00:00", "scores": [0.95, 0.59]},
        {"feature_name": "rts_feature_name_1", "timestamp": "2019-09-14 00:00:00", "scores": [0.95, 0.59]},
        {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-11 00:00:00", "scores": [0.65, 0.56]},
        {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-12 00:00:00", "scores": [0.43, 0.34]},
        {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-13 00:00:00", "scores": [0.16, 0.61]},
        {"feature_name": "rts_feature_name_2", "timestamp": "2019-09-14 00:00:00", "scores": [0.95, 0.59]},
        {"feature_name": "static_covariate_1", "scores": [0.6, 0.1]},
        {"feature_name": "static_covariate_2", "scores": [0.1, 0.3]},
    ]
}
```

對於 `timewise` 和 `fine-grained` 使用案例，會以 JSON 行 (.jsonl) 格式存放結果。

# 故障診斷 SageMaker Clarify 處理任務
<a name="clarify-processing-job-run-troubleshooting"></a>

 如果您遇到與 SageMaker Clarify 處理任務失敗，請參閱以下情況以幫助確定問題。

**注意**  
失敗原因和退出訊息旨在包含在執行時間描述性訊息和例外狀況 (如果遇到)。錯誤的常見原因是參數遺失或無效。如果您遇到不清楚、令人困惑或誤導的訊息，或無法找到解決方案，請提交意見回饋。

**Topics**
+ [處理任務無法完成](#clarify-troubleshooting-job-fails)
+ [處理任務執行時間太長](#clarify-troubleshooting-job-long)
+ [處理任務完成時沒有結果，且您會收到 CloudWatch 警告訊息](#clarify-troubleshooting-no-results-and-warning)
+ [無效分析組態的錯誤訊息](#clarify-troubleshooting-invalid-analysis-configuration)
+ [多個或所有指標的偏差指標運算失敗](#clarify-troubleshooting-bias-metric-computation-fails)
+ [分析設定與資料集／模型輸入／輸出不相符](#clarify-troubleshooting-mismatch-analysis-config-and-data-model)
+ [模型已傳回 500 個內部伺服器錯誤或容器因模型錯誤而退回到每個記錄預測](#clarify-troubleshooting-500-internal-server-error)
+ [執行角色無效](#clarify-troubleshooting-execution-role-invalid)
+ [無法下載資料](#clarify-troubleshooting-data-download)
+ [無法連線至 SageMaker AI](#clarify-troubleshooting-connection)

## 處理任務無法完成
<a name="clarify-troubleshooting-job-fails"></a>

如果處理任務無法完成，您可以嘗試下列方法：
+ 直接在您執行工作的筆記本中檢查任務日誌。任務日誌位於您起始執行的筆記本儲存格輸出中。
+ 檢查 CloudWatch 任務日誌。
+ 在筆記本中新增下列行，以描述上一個處理任務，並尋找失敗原因和退出訊息：
  + `clarify_processor.jobs[-1].describe()`
+ 執行下列 AWS CLI命令來描述處理任務，並尋找失敗原因並結束訊息：
  + `aws sagemaker describe-processing-job —processing-job-name <processing-job-id>`

## 處理任務執行時間太長
<a name="clarify-troubleshooting-job-long"></a>

如果您的處理任務執行時間太長，請使用下列方法找出根本原因。

檢查您的資源設定是否足以處理您的運算負載。為加速您的工作，請嘗試下列操作：
+ 請使用較大的執行個體類型。SageMaker Clarify 會重複查詢模型，而較大的執行個體可以顯著減少您的運算時間。如需可用的執行個體清單、記憶體大小、頻寬和其他效能詳細資訊，請參閱 [Amazon SageMaker AI 定價](https://aws.amazon.com/sagemaker/pricing/)。
+ 新增更多的執行個體。SageMaker Clarify 可以使用多個執行個體來解譯多個平行輸入資料點。若要啟用平行運算，當呼叫 `SageMakerClarifyProcessor` 時，請將您的 `instance_count` 設定為超過 `1`。如需更多資訊，請參閱[如何執行平行 SageMaker Clarify 處理任務](clarify-processing-job-run.md#clarify-processing-job-run-spark)。如果您增加執行個體計數，請監控端點的效能，以檢查端點是否可以部署增加的負載。如需更多資訊，請參閱[從即時端點擷取資料](model-monitor-data-capture-endpoint.md)。
+ 如果您正在運算 SHapley Additive exPlanations (SHAP)值，請減少分析組態檔案中的 `num_samples` 參數。樣本數量直接影響以下內容：
  + 傳送至端點的綜合資料集大小
  + 工作執行期

  減少樣本數量也會導致估算SHAP值的準確性降低。如需更多資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

## 處理任務完成時沒有結果，且您會收到 CloudWatch 警告訊息
<a name="clarify-troubleshooting-no-results-and-warning"></a>

如果處理的工作完成但找不到任何結果，CloudWatch 記錄會產生一則警告訊息，指出訊號 15 已接收、清理。此警告指出工作已停止，可能是因為客戶要求呼叫 `StopProcessingJob` API，或工作已經超過指定的完成時間。在後一種情況下，請檢查工作組態 (`max_runtime_in_seconds`) 中的執行期上限，並根據需要增加它。

## 無效分析組態的錯誤訊息
<a name="clarify-troubleshooting-invalid-analysis-configuration"></a>
+  如果您收到錯誤訊息無法將分析組態載入為 JSON。這表示處理任務的分析組態輸入檔案不包含有效的 JSON 物件。使用 JSON 線性檢查 JSON 物件的有效性。
+ 如果您收到錯誤訊息分析組態結構描述驗證錯誤。這代表處理任務的分析組態輸入文件包含未知的欄位或某些欄位值的無效類型。檢閱檔案中的組態參數，並使用分析組態檔案中列出的參數進行交叉檢查。如需詳細資訊，請參閱[分析組態檔案](clarify-processing-job-configure-analysis.md)。

## 多個或所有指標的偏差指標運算失敗
<a name="clarify-troubleshooting-bias-metric-computation-fails"></a>

如果您收到下列其中一個錯誤訊息預測標籤欄中沒有標籤值，則正值預測索引序列會包含所有錯誤的值，或預測標籤欄系列的資料類型是不一樣的標籤欄系列。，請嘗試下列操作：
+ 檢查是否正在使用正確的資料集。
+ 檢查資料集大小是否太小；例如，它是否只包含幾個資料列。這可能會導致模型輸出具有相同的值，或者不正確地推斷資料類型。
+ 檢查標籤或構面是否被視為連續型或分類。SageMaker Clarify 使用啟發式法來確定[https://github.com/aws/amazon-sagemaker-clarify/blob/master/src/smclarify/bias/metrics/common.py#L114)](https://github.com/aws/amazon-sagemaker-clarify/blob/master/src/smclarify/bias/metrics/common.py#L114))。對於訓練後偏差指標，模型傳回的資料類型可能與資料集中的資料類型不符，否則 SageMaker Clarify 可能無法正確轉換資料類型。
  + 在偏差報表中，您應該會看到分類欄的單一值，或是連續欄的間隔。
  + 例如，如果資料行的值 0.0 和 1.0 為浮點數，即使唯一值太少，也會將其視為連續型值。

## 分析設定與資料集／模型輸入／輸出不相符
<a name="clarify-troubleshooting-mismatch-analysis-config-and-data-model"></a>
+ 檢查分析設定中的基準格式是否與資料集格式相同。
+ 如果您收到錯誤訊息無法將字串轉換為浮點數，檢查格式是否正確指定。它也可能表示模型預測的格式與標籤欄的格式不同，或者可能表示標籤或機率的組態不正確。
+ 如果您收到錯誤訊息無法找到構面，或標題必須包含標籤。，或設定中的標題不符合資料集中的欄數，或找不到功能名稱。，檢查標題是否與欄相符。
+ 如果您收到錯誤訊息資料必須包含功能，檢查 JSON 行的內容範本，並將其與資料集範例 (如果有的話) 進行比較。

## 模型已傳回 500 個內部伺服器錯誤或容器因模型錯誤而退回到每個記錄預測
<a name="clarify-troubleshooting-500-internal-server-error"></a>

如果您收到錯誤訊息，因為模型錯誤而回退至每個記錄的預測。這可能表示模型無法處理批次大小，或者由於序列化問題而不接受容器傳遞的輸入。您應該檢閱 SageMaker AI 端點的 CloudWatch 日誌，並尋找錯誤訊息或追溯。對於模型調節情況，使用不同的執行個體類型或增加端點的執行個體數量可能會有所幫助。

## 執行角色無效
<a name="clarify-troubleshooting-execution-role-invalid"></a>

這表示提供的角色不正確或缺少必要的權限。檢查用來設定處理任務的角色及其權限，並驗證角色的權限和信任政策。

## 無法下載資料
<a name="clarify-troubleshooting-data-download"></a>

這表示無法下載任務輸入以開始工作。檢查資料集的儲存貯體名稱和權限及組態輸入。

## 無法連線至 SageMaker AI
<a name="clarify-troubleshooting-connection"></a>

這指出任務無法連線到 SageMaker AI 服務端點。檢查處理任務的網路組態，並驗證虛擬私有雲端 (VPC) 組態。

## 範例筆記本
<a name="clarify-fairness-and-explainability-sample-notebooks"></a>

下列各節包含筆記本以協助您開始使用 SageMaker Clarify，將其用於特殊任務，包括分散式任務內的任務，以及將其用於電腦視覺。

### 開始使用
<a name="clarify-fairness-and-explainability-sample-notebooks-getting-started"></a>

下列範例筆記本說明如何使用 SageMaker Clarify 來開始使用可解釋性和模型偏差任務。這些任務包括建立處理任務、訓練機器學習 (ML) 模型，以及監控模型預測：
+ [使用 Amazon SageMaker Clarify 進行可解釋性和偏差偵測](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html) - 使用 SageMaker Clarify 建立處理任務，以偵測偏差和解釋模型預測。
+ [監控偏差偏離和功能屬性偏離 Amazon SageMaker Clarify](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html) — 使用 Amazon SageMaker Model Monitor 監控隨著時間的偏差偏離和功能屬性偏離。
+ 如何[將 JSON Lines 格式的資料集讀入](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability_jsonlines_format.html) SageMaker Clarify 處理任務。
+ [緩解偏差、訓練另一個無偏差的模型，並將其放入模型登錄](https://github.com/aws/amazon-sagemaker-examples/blob/master/end_to_end/fraud_detection/3-mitigate-bias-train-model2-registry-e2e.ipynb) – 使用[虛擬少數類別過抽樣技術 (SMOTE)](https://arxiv.org/pdf/1106.1813.pdf) 和 SageMaker Clarify 來緩解偏差、訓練另一個模型，然後將新模型放入模型註冊庫。此範例筆記本也會說明如何將新的模型成品，包括資料、程式碼和模型中繼資料，放入模型註冊庫中。此筆記本是系列的一部分，說明如何將 SageMaker Clarify 整合至 SageMaker AI 管道，其描述在[透過 AWS設計和建置完整的機器學習生命週期](https://aws.amazon.com/blogs/machine-learning/architect-and-build-the-full-machine-learning-lifecycle-with-amazon-sagemaker/)部落格文章中。

### 特殊案例
<a name="clarify-post-training-bias-model-explainability-sample-notebooks"></a>

下列筆記本說明如何將 SageMaker Clarify 用於您自己容器內包括的特殊案例，以及用於自然語言處理任務：
+ [使用 SageMaker Clarify 實現公平性和可解釋性 (自帶容器)](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability_byoc.ipynb) - 建置您自己的模型和容器，其可與 SageMaker Clarify 整合，以測量偏差並產生可解釋性分析報告。此範例筆記本也會介紹關鍵術語，並說明如何透過 SageMaker Studio Classic 存取報告。
+ [使用 SageMaker Clarify Spark 分散式處理實現公平性和可解釋性](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability_spark.ipynb) - 使用分散式處理來執行 SageMaker Clarify 任務，測量資料集的訓練前偏差和模型的訓練後偏差。此範例筆記本也說明如何取得模型輸出上輸入特徵重要性的解釋，以及透過 SageMaker Studio Classic 存取可解釋性分析報告。
+ [使用 SageMaker Clarify - 部分相依性圖 (PDP) 實現可解釋性](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/explainability_with_pdp.html) - 使用 SageMaker Clarify 產生 PDP 並存取模型可解釋性報告。
+  [使用 SageMaker Clarify 自然語言處理 (NLP) 可解釋性來解釋文字情緒分析](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/text_explainability/text_explainability.html) - 使用 SageMaker Clarify 進行文字情緒分析。
+ 使用電腦視覺 (CV) 可解釋性進行[影像分類](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/computer_vision/image_classification/explainability_image_classification.html)和[物件偵測](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/computer_vision/object_detection/object_detection_clarify.html)。

這些筆記本已通過驗證，可在 Amazon SageMaker Studio Classic 中執行。如果您需要有關如何在 Studio Classic 中開啟筆記本的指示，請參閱[建立或開啟 Amazon SageMaker Studio Classic 筆記本](notebooks-create-open.md)。如果系統提示您選擇核心，請選擇 **Python 3 (資料科學)**。

# 訓練前資料偏差
<a name="clarify-detect-data-bias"></a>

演算法偏差、識別性、公平性和相關主題已經跨領域 (例如法律，政策和電腦科學) 進行研究。一個電腦系統可能會被認為是偏差，如果它能識別某些個人或個人群體。支援這些應用程式的機器學習模型會從資料中學習，而這些資料可能反映散度或其他固有的偏差。例如，訓練資料可能無法對各種人口統計群組具有足夠的代表性，或者可能包含偏差的標籤。對表現出這些偏差的資料集進行訓練的機器學習模型最終可能會學習它們，然後再現或加劇預測中的偏差。機器學習領域提供了解決偏差的機會，方法是在機器學習 (ML) 生命週期的每個階段進行偵測並對其進行測量。您可以使用 Amazon SageMaker Clarify 來判斷用於訓練模型的資料是否對任何偏差進行編碼

您可以在訓練前和訓練後衡量偏差，並在將模型部署到端點以進行推論，之後對照基準進行監控。訓練前偏差指標的設計目的是在使用原始資料訓練模型之前，先偵測和衡量其偏差。使用的指標與模型無關，因為它們不依賴任何模型輸出。但是，有不同的公平性概念需要採取不同的偏差量值。Amazon SageMaker Clarify 提供偏差指標，以量化各種公平性標準。

有關偏差指標的其他資訊，請參閱[了解 Amazon SageMaker Clarify 如何協助偵測偏差](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias)和[機器學習在金融領域的公平性量值](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)。

## Amazon SageMaker Clarify 偏差和公平性條款
<a name="clarify-bias-and-fairness-terms"></a>

SageMaker Clarify 使用下列術語來討論偏差和公平性。

**功能**  
一個被觀察現象的個體可衡量屬性或特徵，包含於用於表格式資料的列。

**標籤**  
訓練機器學習模型的目標的功能。稱為*觀察標籤*或觀察*結果*。

**預測標籤**  
如模型所預測的標示。也稱為*預測結果*。

**樣本**  
由功能值和標籤值描述的觀察實體，包含於表格式資料的列中。

**資料集**  
樣本的集合。

**偏差**  
訓練資料中的不平衡或模型跨不同群組 (例如年齡或收入等級) 的預測行為。偏差可能是由用於訓練您模型的資料或演算法所產生的。例如，如果機器學習 (ML) 模型主要針對中年人的資料進行訓練，則在進行涉及年輕人和老年人的預測時，可能會較不準確。

**偏差指標**  
傳回指示潛在偏差數值的函式。

**偏差報告**  
指定資料集的偏差指標集合，或是資料集和模型的組合。

**正標籤值**  
對樣本中觀察人口統計組有利的標籤值。換句話說，將樣本指定為具有*正值的結果*。

**負標籤值**  
對樣本中觀察人口組不利的標籤值。換句話說，將樣本指定為具有*負結果*。

**群變數**  
形成用於衡量條件人口統計差距 (CDD) 子組的資料集的分類欄。僅對於此指標關於辛普森的悖論是必需的。

**構面**  
包含與衡量偏差相關之屬性的欄或功能。

**構面值**  
偏差可能有利或不有利屬性的功能值。

**預測機率**  
正如模型所預測的，具有正值或負面結果的樣本的機率。

## 範例筆記本
<a name="clarify-data-bias-sample-notebooks"></a>

Amazon SageMaker Clarify 提供下列用於偏差偵測的範例筆記本：
+ 使用 [Amazon SageMaker Clarify 的可解譯性和偏差偵測](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/fairness_and_explainability/fairness_and_explainability.html) – 使用 SageMaker Clarify 建立處理任務，以偵測偏差並使用功能屬性說明模型預測。

此筆記本已透過驗證，只能在 Amazon SageMaker Studio 中執行。如果您需要有關如何在 Amazon SageMaker Studio 中打開筆記本的說明，請參閱[建立或開啟 Amazon SageMaker Studio Classic 筆記本](notebooks-create-open.md)。如果系統提示您選擇核心，請選擇 **Python 3 (資料科學)**。

**Topics**
+ [Amazon SageMaker Clarify 偏差和公平性條款](#clarify-bias-and-fairness-terms)
+ [範例筆記本](#clarify-data-bias-sample-notebooks)
+ [訓練前偏差指標](clarify-measure-data-bias.md)
+ [產生在 SageMaker Studio 訓練前資料中的偏差報告](clarify-data-bias-reports-ui.md)

# 訓練前偏差指標
<a name="clarify-measure-data-bias"></a>

在機器學習 (ML) 模型中測量偏差是減輕偏差的第一步。每種偏差指標都對應到不同的公平概念。即使考慮簡單的公平概念，也會導致適用於各種情況下的許多不同量值。例如，考慮與年齡相關的公平性，為了簡單起見，中年人和其他年齡組是兩個相關的人口統計，稱為*構面*。在用於貸款的機器學習 (ML) 模型的情況下，我們可能希望小企業放貸款給相等的兩個人口統計數量。或者，在處理求職者時，我們可能希望看到每個受聘人口統計的項目數量相等。但是，這種方法可能會假設兩個年齡組的相等數量適用於這些工作，因此我們可能希望根據適用的數量進行調整。此外，我們可能要考慮的是否同等的數量是否適用，而是我們是否有相同的合格申請人數量。或者，我們可能認為公平性是在兩個年齡人口統計學上，合格申請人的同等接受率，或者同等的拒絕率，或兩者兼而有之。您可以在感興趣的屬性上使用具有不同比例資料的資料集。這種不平衡可能會使您選擇的偏差量值混淆。在分類一個構面時，模型可能會比另一個構面更準確。因此，您需要選擇在概念上適合應用程式和情況的偏差指標。

我們使用下面的符號來討論偏差指標。描述的概念性模型用於二進位分類，其中事件被標籤為在其範例空間中只有兩個可能的結果，稱為正 (值為 1) 和負 (值為 0)。該框架通常可以直接擴展到多類別分類，或者在需要時涉及連續性有價值結果的案例。在二進位分類案例中，正值和負值標籤會指派給原始資料集中記錄的結果，以及有利構面 *a* 和不利構面 *d*。這些標籤 y 稱為*觀察標籤*，用來區分它們與機器學習模型在機器學習 (ML) 生命週期的訓練或推論階段期間指派的*預測標籤* y'。這些標籤用於定義機率分布 Pa(y) 和 Pd(y) 為其各自的構面結果。
+ 標籤：
  + y 代表訓練資料集中事件結果的 n 個觀察標籤。
  + y' 代表經過訓練的模型在資料集中 n 個觀察標籤的預測標籤。
+ 成果：
  + 樣本的正值結果 (值為 1)，例如申請接受。
    + n(1) 是正結果 (接受) 的觀察標籤數目。
    + n'(1) 是正結 果(接受) 的預測標籤數目。
  + 樣本的負值結果 (值為 0)，例如申請拒絕。
    + n(0) 是負結果 (接受) 的觀察標籤數目。
    + n'(0) 是負結果 (接受) 的預測標籤數目。
+ 構面值：
  + 構面 *a* – 定義對偏差有利人口統計特徵值。
    + na 是有利構面值的觀察標籤數目：na = na(1) \$1 na(0) 構面 *a* 值的正值和負值觀察標籤總和。
    + n'a 是有利構面值的預測標籤數目：n'a = n'a(1) \$1 n'a(0) 構面 *a* 值的正值和負值預測標籤總和。請注意，n'a = na。
  + 構面 *d* — 定義對偏差不利人口統計特徵值。
    + nd 是不利構面值的觀察標籤數目：nd = nd(1) \$1 nd(0) 構面 *d* 值的正值和負值觀察標籤總和。
    + n'd 是不利構面值的預測標籤數目：n'd = n'd(1) \$1 n'd(0) 構面 *a* 值的正值和負值預測標籤總和。請注意，n'd = nd。
+ 標籤構面資料結果的結果機率分布：
  + Pa(y) 是構面 *a* 的觀察標籤機率分布。對於二進位標籤的資料，此分布由標籤為總數正結果的構面 *a* 中的樣本數目比率，Pa(y1) = na(1)/ na，以及總數負結果的樣本數比率，Pa(y0) = na(0)/ na。
  + Pd(y) 是構面 *d* 的觀察標籤機率分布。對於二進位標籤的資料，此分布由構面 *d* 中標有正結果到總數的樣本數，Pd(y1) = nd(1)/ nd，以及負結果與總數的樣本數的比率，Pd(y0) = nd(0)/ nd。

根據人口統計散度的偏差資料進行訓練的模型可能會學習甚至加劇它們。為了在花費資源訓練模型之前找出資料中的偏差，SageMaker Cresent 提供了資料偏差指標，您可以於訓練之前在原始資料集上運算這些指標。所有的預先訓練指標都與模型無關，因為它不依賴模型輸出，因此對任何模型都有效。第一個偏差指標會檢查構面不平衡，但不會檢查結果。其根據應用程式的需求，決定不同構面中訓練資料量的代表程度。剩餘的偏差指標會以各種方式比較資料中構面 *a* 和 *d* 的結果標籤分布。範圍超過負值的指標可以檢測負偏差。下表包含快速指引的備忘單，以及訓練前偏差指標的連結。

訓練前偏差指標


| 偏差指標 | Description | 範例問題 | 解譯指標值 | 
| --- | --- | --- | --- | 
| [類別不平衡 (CI)](clarify-bias-metric-class-imbalance.md) | 衡量不同構面值之間的項目數量不平衡。 |  由於沒有足夠的資料供中年人口以外的人口統計，是否會出現基於年齡的偏差？   |  標準化範圍：[-1, \$11] 解譯： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [標籤比例的差異](clarify-data-bias-metric-true-label-imbalance.md) | 衡量不同構面值之間正值結果的不平衡。 | 由於在資料中構面值有偏差標籤，機器學習 (ML) 預測中是否會存在年齡的偏差？ |  標準化二進位和多範疇構面標籤的範圍：[-1, \$11] 連續型標籤的範圍：(-∞, \$1∞) 解譯： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Kullback-Leibler 散度 (KL)](clarify-data-bias-metric-kl-divergence.md) | 衡量不同構面的結果分布熵間的發散程度。 | 不同人口組別的貸款申請結果分布有何不同？ |  二進位，多範疇，連續型的範圍：[0, \$1∞) 解譯： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [Jensen-Shannon 偏差 (JS)](clarify-data-bias-metric-jensen-shannon-divergence.md)  | 衡量不同構面的結果分布熵間的發散程度。 | 不同人口組別的貸款申請結果分布有何不同？ |  二進位，多範疇，連續型的範圍：[0, \$1∞) 解譯： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [L p-規範 (LP)](clarify-data-bias-metric-lp-norm.md)  | 衡量與資料集中不同構面相關聯的結果，其不同人口分布之間的 p-範數差異。 | 不同人口統計資料的貸款申請結果分配有何不同？ |  二進位，多範疇，連續型的範圍：[0, \$1∞) 解譯： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [總變化距離 (TVD)](clarify-data-bias-metric-total-variation-distance.md)  | 衡量與資料集中與不同構面關聯的結果，其不同人口分布之間的 L 1-範數的一半。 | 不同人口統計資料的貸款申請結果分配有何不同？ |  二進位，多範疇和連續型結果的範圍：[0, \$1∞) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 
| [柯爾莫哥洛夫-斯米爾諾夫 (KS)](clarify-data-bias-metric-kolmogorov-smirnov.md)  | 衡量資料集中不同構面分布結果之間的最大散度。 | 哪些大學申請結果顯示出人口統計組最大的散度？ | 二進位、多範疇和連續型結果的 KS 值範圍：[0, \$11][\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html) | 
| [條件式的人口統計差異 (CDD)](clarify-data-bias-metric-cddl.md)  | 衡量整個不同構面之間結果的散度，也可以透過子組來衡量。 | 有些組大學錄取結果的拒絕比例是否比他們的接受比例更大？ |  CDD 的範圍：[-1, \$11] [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-data-bias.html)  | 

有關偏差指標的其他資訊，請參閱[機器學習在金融的公平性量值](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)。

**Topics**
+ [類別不平衡 (CI)](clarify-bias-metric-class-imbalance.md)
+ [標籤比例的差異](clarify-data-bias-metric-true-label-imbalance.md)
+ [Kullback-Leibler 散度 (KL)](clarify-data-bias-metric-kl-divergence.md)
+ [Jensen-Shannon 偏差 (JS)](clarify-data-bias-metric-jensen-shannon-divergence.md)
+ [L p-規範 (LP)](clarify-data-bias-metric-lp-norm.md)
+ [總變化距離 (TVD)](clarify-data-bias-metric-total-variation-distance.md)
+ [柯爾莫哥洛夫-斯米爾諾夫 (KS)](clarify-data-bias-metric-kolmogorov-smirnov.md)
+ [條件式的人口統計差異 (CDD)](clarify-data-bias-metric-cddl.md)

# 類別不平衡 (CI)
<a name="clarify-bias-metric-class-imbalance"></a>

*與資料集中的另一個構面 a 相比，當構面值 *d* 具有較少的訓練範例時，就會發生類別不平衡 (CI) 偏差。**這是因為模型會優先配合較大的構面，但會犧牲較小的構面，因此可能會導致構面 d 較高的訓練誤差。**模型也有較高風險過度擬合較小的資料集，這可能會導致構面 d 較大的測試誤差。*考慮機器學習模型主要根據中年人 (構面 a) 的資料進行訓練的範例，在進行涉及年輕人和老年人的預測時 (構面 d) 可能不太準確。

(標準化) 構面不平衡衡量的公式：

        CI = (na - nd)/(na \$1 nd)

其中 an 是構面 *a* 的項目數量和 nd 的構面 *d* 的數量。其值範圍在間隔 [-1, 1] 內。
+ *正 CI 值表示構面 *a* 在資料集中有更多訓練範例，值 1 表示資料只包含構面 a 的項目。*
+  CI 接近零的值表示多構面之間的項目的分布，且零值表示構面之間的完全相等的分區，並表示訓練資料樣本中的平衡分布。
+ *負 CI 值表示構面 *d* 在資料集中具有更多訓練範例，值為 -1 表示資料僅包含構面 d 的項目。*
+ 接近任一極端值 -1 或 1 的 CI 值非常不平衡，並且存在做出偏差預測的重大風險。

如果發現多構面之間存在明顯的多構面不平衡，您可能想要重新平衡樣本，然後再繼續在其上訓練模型。

# 標籤比例的差異
<a name="clarify-data-bias-metric-true-label-imbalance"></a>

標籤比例的散度 (DPL) 會將觀察結果與構面 *d* 的正值標籤的比例，以及訓練資料集中構面 *a* 正值標籤的觀察結果的比例進行比較。例如，您可以使用它來比較中年人 (構面 *a*) 和其他年齡組別 (構面 *d*) 核准用於金融貸款的比例。機器學習模型會嘗試盡可能模擬訓練資料決策。因此，在 DPL 較高的資料集上訓練的機器學習模型可能會在未來的預測中反映出相同的不平衡。

標籤比例差異的公式如下：

        DPL = (qa - qd)

其中：
+ qa = na(1)/na 是具有觀察標籤值為 1 的構面 *a* 的比例。例如，獲得貸款核准的中年人口的比例。*這裡 na(1) 代表構面的項目數量 *a*，其得到正值結果和 na 是構面 a 的項目數量。*
+ qd = nd(1)/nd 是具有觀察標籤值為 1 的構面 *d* 的比例。例如，中年人口以外誰獲得貸款核准的比例。*這裡 nd(1) 代表得到一個正值的結果的構面 *d* 項目數量和 n d 是構面 d* 的項目數量。

如果 DPL 足夠接近 0，那麼我們說*人口平等性*已經實現了。

對於二進位和多範疇構面標籤，DPL 值會在間隔範圍內 (-1, 1)。對於連續型標籤，我們設定一個閾值將標籤折疊為二進位。
+ *正 DPL 值表示構面 *a* 與構面 d 相比，具有較高的正值結果比例。*
+ DPL 的值接近零表示多構面和零值之間的正值結果更相等比例，表示完美的人口統計同位。
+ *負 DPL 值表示，與構面 a 相比，構面 *d* 具有較高的正值結果比例。*

高散量 DPL 是否有問題因情況而異。在有問題的情況下，高散量 DPL 可能是資料中潛在問題的訊號。例如，具有高 DPL 的資料集可能反映出對基於年齡的人口群體的歷史偏差或偏差，而這些偏差對模型來說是不可取的。

# Kullback-Leibler 散度 (KL)
<a name="clarify-data-bias-metric-kl-divergence"></a>

*Kullback-Leibler 散度 (KL) 指標觀察構面 *a*、P (y) 的標籤分布與構面 d、P a (y) 的分布有多少偏離。* d它也被稱為 P(y) 相對於 P(y) a的相對熵，並量化從 P(y) d移動到 P(y) a時丟失的資訊量。d

Kullback-Leibler 散度的公式如下：

        KL(Pa \$1\$1 Pd) = ∑yPa(y)\$1log[Pa(y)/Pd(y)]

它是機率 Pa(y) 和 Pd(y)，其中期望由機率 Pa(y) 加權之間的對數差的期望值。這不是分布之間的真實距離，因為它是非對稱的，並且不滿足三角形不等式。執行程序使用自然對數，以 nats 為單位給 KL。使用不同的對數基數會產生比例結果，但使用不同的單位。例如，使用基數 2 給出 KL 的位元單位。

例如，假設一組貸款申請人的核准率為 30% (構面 *d*)，而其他申請人 (構面 *a*) 的核准率為 80%。Kullback-Leibler 公式為您提供了構面 a** 與構面 *d* 的標籤分布散度，如下所示：

        KL = 0.8\$1ln(0.8/0.3) \$1 0.2\$1ln(0.2/0.7) = 0.53

公式中有兩個術語，因為在這個例子中標籤為二進位。除了二進位標籤之外，此指標還可以應用於多個標籤。例如，在大學招生情況下，假設可能分配申請人三個類別標籤之一：y i = \$1y0, y1, y2\$1 = \$1被拒絕，等候清單，已接受\$1。

二進位、多範疇和連續型結果的 KL 指標值範圍為 [0, \$1∞)。
+ 接近零的值代表結果是不同構面的相似分布。
+ 正值代表標籤分布散度，正值越大散度越大。

# Jensen-Shannon 偏差 (JS)
<a name="clarify-data-bias-metric-jensen-shannon-divergence"></a>

Jensen-Shannon 散度 (JS) 衡量了不同構面的標籤分布彼此間的散度程度。其基於 Kullback-Leibler 散度，但它是對稱的。

Jensen-Shannon 散度公式如下：

        JS = ½\$1[KL(Pa \$1\$1 P) \$1 KL(Pd \$1\$1 P)]

其中 P = ½( Pa \$1 Pd )，跨構面 *a* 和 *d* 的平均標籤分布。

JS 值的二進位，多範疇，連續型型結果的範圍是 [0, ln(2))。
+ 接近零的值表示標籤的分布類似。
+ 正值代表標籤分布散度，正值越大散度越大。

此指標指出跨多構面的其中一個標籤是否存在很大的散度。

# L p-規範 (LP)
<a name="clarify-data-bias-metric-lp-norm"></a>

L p-範數 (LP) 衡量訓練資料集中觀察標籤的構面分布間的 p-範數距離。此指標為非負數，因此無法偵測到反向偏差。

L p-規範的公式如下：

        Lp(Pa, Pd) = ( ∑y\$1\$1Pa - Pd\$1\$1p)1/p

其中點 x 和 y 之間的 p-範數距離定義如下：

        Lp(x, y) = (\$1x1-y1\$1p \$1 \$1x2-y2\$1p \$1 … \$1\$1xn-yn\$1p)1/p 

2-範數是歐氏範數。假設您在大學招生多範疇案例中有三個類別的結果分布，例如，y i = \$1y0, y1, y2\$1 = \$1接受、等候清單、拒絕\$1。您需要平構面 *a 和 *d* 的結果計數之間的散度的平方*。產生的歐氏距離運算方式如下所示：

        L2(Pa, Pd) = [(na(0) - nd(0))2 \$1 (na(1) - nd(1))2 \$1 (na(2) - nd(2))2]1/2

其中：
+ na(i) 是構面 *a* 中第 i 個類別結果的數目：例如 n a(0) 是構面 *a* 的接受數目。
+ nd(i) 是構面 *d* 中第 i 個類別結果的數目：例如 nd(2) 是構面 *d* 的拒絕數目。

  二進位、多類別和連續性結果的 LP 值範圍為 [0, √2)，其中：
  + 接近零的值表示標籤的分布類似。
  + 正值表示標籤分布發散，正值越大發散越大。

# 總變化距離 (TVD)
<a name="clarify-data-bias-metric-total-variation-distance"></a>

總變化距離資料偏差指標 (TVD) 是 L1-範數的一半。TVD 是構面 *a* 和*d* 標籤結果的機率分布之間可能的最大差異。L1-範數是 Hamming 距離，透過確定將一個字串更改為另一個字串所需的最小替代數，比較兩個二進位資料字串的指標。如果這些字串是彼此的副本，它會決定複製時發生的錯誤數量。在偏置偵測環境中，TVD 會量化構面 *a* 必須變更多少個才能符合構面 *d* 的結果。

總變化距離的公式如下：

        TVD = ½\$1L1(Pa, Pd)

例如，假設您在大學招生多類情況中具有三個類別的結果分布，yi = \$1y0, y1, y2\$1 = \$1接受、候補清單、拒絕\$1。您可以根據每個結果的構面 *a* 和 *d* 計數之間的差異來計算 TVD。結果如下所示：

        L1(Pa, Pd) = \$1na(0) - nd(0)\$1 \$1 \$1na(1) - nd(1)\$1 \$1 \$1na(2) - nd(2)\$1

其中：
+ na(i) 是構面 *a* 中第 i 個類別結果的數目：例如 n a(0) 是構面 *a* 的接受數目。
+ nd(i) 是構面 d 中第 i 個類別結果的數目：例如 nd(2) 是構面 *d* 的拒絕數目。

  二進位、多類別和連續性結果的 TVD 值範圍為 [0, 1)，其中：
  + 接近零的值表示標籤的分布類似。
  + 正值表示標籤分布發散，正值越大發散越大。

# 柯爾莫哥洛夫-斯米爾諾夫 (KS)
<a name="clarify-data-bias-metric-kolmogorov-smirnov"></a>

柯爾莫哥洛夫-斯米爾諾夫偏差量指標 (KS) 等於資料集構面 *a* 和 *d* 的分布中標籤的最大發散。SageMaker Clarify 進行的兩樣本 KS 檢定透過找到最不平衡的標籤補充標籤不平衡的其他量值。

柯爾莫哥洛夫-斯米爾諾夫指標的公式如下：

        KS = max(\$1Pa(y) - Pd(y)\$1)

例如，假設一組申請人 (構面 *a*) 被大學拒絕，候補或接受分別為 40％、40％、20％，其他申請人 (構面 *d*) 的比率為 20％、10％、70％。然後，柯爾莫哥洛夫-斯米爾諾夫偏差指標值如下所示：

KS = max(\$10.4-0.2\$1, \$10.4-0.1\$1, \$10.2-0.7\$1) = 0.5

這告訴我們構面分布之間的最大發散是 0.5，且發散是發生在接受率。方程式中有三項，因為標籤是基數 3 的多元分類。

二進位、多類別和連續性結果的 LP 值範圍為 [0, \$11]，其中：
+ 接近零的值顯示標籤在所有結果類別的構面之間均勻分布。例如，申請貸款的兩個構面都獲得了 50％ 的接受率和 50％ 的拒絕。
+ 一個附近的值顯示一個結果的標籤都在一個構面。例如，構面 *a* 獲得了 100％ 的接受，而構面 *d* 沒有。
+ 間歇值顯示最大標籤不平衡的相對程度。

# 條件式的人口統計差異 (CDD)
<a name="clarify-data-bias-metric-cddl"></a>

人口統計差異指標 (DD) 會決定構面在資料集中的拒絕結果是否比接受結果有更大的比例。在二進位情況下，有兩個構面，例如男性和女性，構成了資料集，不利構面被標籤為構面 *d*，有利被標籤為構面 *a*。例如，大學入學的案例，如果女性申請人佔被拒絕的申請人中的 46％，並且僅佔被接受的申請人中的 32％，我們認為存在*人口統計的差異*，因為女性被拒絕的比率超過被接受的比率。在這種情況下，女性申請人的標籤為構面 *d*。如果男性申請人佔被拒絕的申請人中的 54%，並且佔被接受的申請人中的 68% 獲接納的申請人，那麼在這構面並沒有人口統計上的差異，因為拒絕率低於接受率。在這種情況下，男性申請人的標籤為構面 *a*。

不太有利構面 *d* 之人口統計差異的公式如下：

        DDd = nd(0)/n(0) - nd(1)/n(1) = PdR(y0) - PdA(y1) 

其中：
+ n(0) = na(0) \$1 nd(0) 是有利構面 *a* 和弱勢構面 *d* 資料集中拒絕結果的總數。
+ n(1) = na(1) \$1 nd(1) 是資料集中接受結果的有利構面 *a* 和弱勢構面 *d* 的總數。
+ PdR(y0) 是構面 *d* 中被拒絕結果(值為 0)的比例。
+ PdA(y1) 是在構面 *d* 中接受的結果(值 1)的比例。

在大學入學的例子中，女性的人口統計差異為 DDd = 0.46 - 0.32 = 0.14。男性為 DDa = 0.54 - 0.68 = - 0.14。

一個條件式人口統計差異 (CDD) 指標標準，需要調控對定義資料集上一層子組屬性的 DD，以排除辛普森悖論。重組可以為不太有利構面提供明顯人口統計差異的原因分析。經典案例出現在柏克萊入學的情況下，男性被接受的比率比女性更高。在 DD 的範例計算中使用這個案例的統計資料。然而，當檢查系所子組時，證明女性的入學率高於男性，當以系所為條件的情況下。說明女性申請系所的接受率低於男性。檢查子組接受率顯示，對於接受率較低的系所，女性實際上的接受率高於男性。

CDD 指標透過平均資料集屬性定義的子組中發現的所有差異，提供了一個單一量值。其被定義為每個子組的人口統計差異 (DDi) 加權平均值，每個子組差異與包含的觀察數呈加權比例。條件式人口統計差異的公式如下：

        CDD = (1/n)\$1∑ini \$1DDi 

其中：
+ ∑ini = n 是觀察的總數且 ni 是每個子組的觀察值數目。
+ DDi = ni(0)/n(0) - ni(1)/n(1) = PiR(y0) - PiA(y1) 是第 i 個子組的人口統計差異。

一個子組 (DDi) 的人口統計差異是拒絕結果的比例，和每個子組接受結果的比例之間差異。

對於完整資料集 DDd 或其條件化子組 DDi 的二進位結果 DD 值的範圍是 [-1, \$11]。
+ \$11：當構面 *a* 或子組沒有拒絕，且構面 *d* 或子組中沒有接受時
+ 正值顯示存在人口統計差異，因為構面 *d* 或子組在資料集中被拒絕的結果比例大於接受的結果比例。值越高，構面越不利，差異越大。
+ 負值顯示沒有人口統計差異，因為構面 *d* 或子組在資料集中的接受結果比例比被拒絕的結果更大。值越低，構面越有利。
+ -1：當構面 *d* 或子組中沒有拒絕，且在構面 *a* 或子組中沒有接受時

如果您沒有設定任何條件，那麼 CDD 為零，如果且僅當 DPL 為零。

該指標對於探索歐盟和英國非歧視法律和法理中的直接和間接歧視，以及客觀理由的概念非常有用。有關其他資訊，請參閱[為什麼不能自動化公平性](https://arxiv.org/abs/2005.05906)。本文件還包含柏克萊招生案例的相關資料和分析，該案例顯示如何條件化系所入學率子組說明辛普森悖論。

# 產生在 SageMaker Studio 訓練前資料中的偏差報告
<a name="clarify-data-bias-reports-ui"></a>

SageMaker Clarify 與 Amazon SageMaker Data Wrangler 整合，可協助您在資料準備過程中找出偏差，而不必撰寫自己的程式碼。Data Wrangler 提供端對端解決方案，可透過 Amazon SageMaker Studio 匯入、準備、轉換、特徵化和分析資料。有關 Data Wrangler 資料準備工作流程的概觀，請參閱[使用 Amazon SageMaker Data Wrangler 準備機器學習資料](data-wrangler.md)。

您可以指定感興趣的屬性，例如性別或年齡，SageMaker Clarify 會執行一組演算法來偵測這些屬性中是否存在偏差。執行演算法後，SageMaker Clarify 會提供視覺化報告，其中包含可能的偏差來源和偏差嚴重性說明，以便您可以規劃緩解的步驟。例如，相較於其他年齡組，在財務資料集中包含一個年齡群組的商業貸款範例，SageMaker AI 會標記不平衡，以便您可以避免使用該年齡層的模型。

**分析和報告資料偏差**

要開始使用 Data Wrangler，請參閱[開始使用 Data Wrangler](data-wrangler-getting-started.md)。

1. 在 Amazon SageMaker Studio Classic 中，從左側面板的**首頁** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/studio/icons/house.png)) 功能表導覽至**資料**節點，然後選擇 **Data Wrangler**。這會在 Studio Classic 中開啟**Data Wrangler 登陸頁面**。

1. 選擇 **\$1 匯入資料**按鈕以建立新流程。

1. 在流程頁面的**匯入**索引標籤，選擇 Amazon S3，導覽至 Amazon S3 儲存貯體，找到您的資料集，然後選擇**匯入**。

1. 匯入您的資料後，在**資料流量**索引標籤的流程圖上，選擇**資料類型**節點右側的 **\$1** 號。

1. 選擇 **新增分析**。

1. 在**建立分析**頁面上，選擇**偏差報告**作為**分析類型**。

1. 透過提供報告**名稱**、要預測的欄，以及其是值還是閾值、要分析偏差 (構面) 的欄，以及其是值還是閾值，設定偏差報告。

1. 選擇偏差指標，繼續設定偏差報告。  
![\[選擇偏差指標。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify-data-wrangler-configure-bias-metrics.png)

1. 選擇**檢查偏差**，以產生並檢視偏差報告。向下捲動以檢視全部的報告。  
![\[產生並檢視偏差報告。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify-data-wrangler-create-bias-report.png)

1. 選擇每個偏差指標說明右側的插入記號，參閱可協助您解讀指標值重要性的文件。

1. 若要檢視偏差指標值的表格摘要，請選擇**資料表**切換按鈕。若要儲存報告，請選擇頁面右下角的**儲存**。您可以在**資料流量**索引標籤的流程圖上查看報告。按兩下報告以開啟之。

# 訓練後資料和模型偏差
<a name="clarify-detect-post-training-bias"></a>

訓練後偏差分析有助於揭示可能因資料中的偏差，或分類和預測演算法引入的偏差而產生偏差。這些分析會考量資料，包括標籤和模型的預測。您可以透過分析預測標籤，或將與資料中觀察目標值預測與具有不同屬性的群組進行比較，以評估效能。有差別公平性概念，每個概念都需要差別偏差指標來衡量。

有一些公平性的法律概念可能不容易顯示，因為它們很難偵測。例如，會發生美國差別影響概念，當採取的方法似乎是公平的，一個組 (稱為不太有利構面 *d*) 也會發生副作用。這種類型的偏差可能不是由於機器學習模型造成的，但可能仍然可以透過訓練後偏差分析來檢測。

Amazon SageMaker Clarify 會嘗試確保術語使用的一致性。有關術語及其定義的清單，請參閱[Amazon SageMaker Clarify 偏差和公平性條款](clarify-detect-data-bias.md#clarify-bias-and-fairness-terms)。

如需有關訓練後偏差指標的其他資訊，請參閱[了解 Amazon SageMaker Clarify 如何協助偵測偏差](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias/)及[機器學習在金融領域的公平性量值](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)。

# 訓練後資料和模型偏差指標
<a name="clarify-measure-post-training-bias"></a>

Amazon SageMaker Clarify 提供十一個訓練後資料和模型偏差指標，以協助量化各種公平性概念。這些概念無法全部同時滿足，並且選擇取決於涉及分析潛在偏差情況下的具體情況。這些指標中的大多數都是從不同人口統計組的二進位分類混淆矩陣中，獲得的數字的組合。由於公平性和偏差可以透過廣泛的指標來定義，因此需要人為判斷來了解和選擇與個別使用案例相關的指標，客戶應諮詢適當的利害關係人，以確定申請使用適當的公平性量值。

我們使用下面的符號來討論偏差指標。描述的概念性模型用於二進位分類，其中事件被標籤為在其範例空間中只有兩個可能的結果，稱為正 (值為 1) 和負 (值為 0)。該框架通常可以直接擴展到多類別分類，或者在需要時涉及連續性有價值結果的案例。在二進位分類案例中，正值和負值標籤會指派給原始資料集中記錄的結果，以及有利構面 *a* 和不利構面 *d*。這些標籤 y 稱為*觀察標籤*，用來區分它們與機器學習模型在機器學習 (ML) 生命週期的訓練或推論階段期間指派的*預測標籤* y'。這些標籤用於定義機率分布 Pa(y) 和 Pd(y) 為其各自的構面結果。
+ 標籤：
  + y 代表訓練資料集中事件結果的 n 個觀察標籤。
  + y' 代表經過訓練的模型在資料集中 n 個觀察標籤的預測標籤。
+ 成果：
  + 樣本的正值結果 (值為 1)，例如申請接受。
    + n(1) 是正結果 (接受) 的觀察標籤數目。
    + n'(1) 是正結 果(接受) 的預測標籤數目。
  + 樣本的負值結果 (值為 0)，例如申請拒絕。
    + n(0) 是負結果 (接受) 的觀察標籤數目。
    + n'(0) 是負結果 (接受) 的預測標籤數目。
+ 構面值：
  + 構面 *a* – 定義對偏差有利人口統計特徵值。
    + na 是有利構面值的觀察標籤數目：na = na(1) \$1 na(0) 構面 *a* 值的正值和負值觀察標籤總和。
    + n'a 是有利構面值的預測標籤數目：n'a = n'a(1) \$1 n'a(0) 構面 *a* 值的正值和負值預測標籤總和。請注意，n'a = na。
  + 構面 *d* — 定義對偏差不利人口統計特徵值。
    + nd 是不利構面值的觀察標籤數目：nd = nd(1) \$1 nd(0) 構面 *d* 值的正值和負值觀察標籤總和。
    + n'd 是不利構面值的預測標籤數目：n'd = n'd(1) \$1 n'd(0) 構面 *a* 值的正值和負值預測標籤總和。請注意，n'd = nd。
+ 標籤構面資料結果的結果機率分布：
  + Pa(y) 是構面 *a* 的觀察標籤機率分布。對於二進位標籤的資料，此分布由標籤為總數正結果的構面 *a* 中的樣本數目比率，Pa(y1) = na(1)/ na，以及總數負結果的樣本數比率，Pa(y0) = na(0)/ na。
  + Pd(y) 是構面 *d* 的觀察標籤機率分布。對於二進位標籤的資料，此分布由標籤為總數正結果的構面 *d* 中的樣本數目比率，Pd(y1) = nd(1)/ nd，以及總數負結果的樣本數比率，Pd(y0) = nd(0)/ nd。

下表包含快速指引的備忘單，以及訓練後偏差指標的連結。

訓練後偏差指標


| 訓練後偏差指標 | Description | 範例問題 | 解譯指標值 | 
| --- | --- | --- | --- | 
| [預測標籤中正值比例的差異 (DPPL)](clarify-post-training-bias-metric-dppl.md) | 測量有利構面 a 和不利構面 d 之間的正預測比例差異。 |  在可能出現偏差的預測正值結果中，人口統計組是否存在不平衡？  |  標準化二進位和多類別構面標籤的範圍：`[-1,+1]` 連續性標籤的範圍：(-∞, \$1∞) 解釋： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html)  | 
| [差別影響 (DI)](clarify-post-training-bias-metric-di.md) | 測量有利構面 a 和不利構面 d 的預測標籤比例。 | 在可能出現偏差的預測正值結果中，人口統計組是否存在不平衡？ |  標準化二進位、多類別構面和連續性標籤的範圍：[0,∞) 解釋： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html)  | 
| [預測標籤 (CDDPL) 中的條件人口統計差異](clarify-post-training-bias-metric-cddpl.md)  | 測量整體構面之間的預測標籤差異，也可以按子組進行測量。 | 有些人口統計組別的貸款申請結果被拒絕比例是否比其接受比例更大？ |  二進位、多類別和連續性結果的 CDDPL 值範圍：`[-1, +1]` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html)  | 
| [反事實翻轉測試 (FT)](clarify-post-training-bias-metric-ft.md)  | 檢查構面 d 的每個項目，並評估構面 a 的類似項目是否具有差別模型預測。 | 一組特定年齡的人口統計是否與不同年齡組別的所有特徵密切相符，但平均支付的費用卻更高？ | 二進位和多類別構面標籤的範圍為[-1, \$11]。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 
| [準確度差異 (AD)](clarify-post-training-bias-metric-ad.md)  | 測量有利和不有利構面的預測準確度之間的差異。 | 該模型是否準確地預測所有人口統計群組的申請的標籤？ | 二進位和多類別構面標籤的範圍為[-1, \$11]。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 
| [召回差異 (RD)](clarify-post-training-bias-metric-rd.md)  | 比較有利和不有利構面的模型重新召回。 | 貸款是否由於相比於一個年齡組別的模型，另一個年齡組別的召回率較高，而存在年齡的偏差？ |  二進位和多類別分類的範圍：`[-1, +1]`。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html)  | 
| [條件式接受的差異 (DCAcc)](clarify-post-training-bias-metric-dcacc.md)  | 比較觀察標籤與模型預測標籤。評估預測正值結果 (接受) 的各個構面是否相同。 | 將比較一個年齡組別與另一個年齡組別時，接受貸款的頻率是否比預期的要低 (根據資格)？ |  二進位、多類別構面和連續性標籤的範圍：(-∞, \$1∞)。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html)  | 
| [接受率 (DAR) 差異](clarify-post-training-bias-metric-dar.md)  | 衡量觀察正值結果 (TP) 與預測正值 (TP \$1 FP) 的有利和不利構面之間比率的差異。 | 在預測所有年齡段的合格申請人貸款接受時，該模型是否具有相同的精確度？ | 二進位、多類別構面和連續性標籤的範圍為[-1, \$11]。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 
| [特異性差異 (SD)](clarify-post-training-bias-metric-sd.md)  | 比較有利構面和不有利構面之間模型的特異性。 | 貸款是否因為該模型預測一個年齡組與另一個年齡組相比具有更高的特異性，而存在年齡的偏差？ |  二進位和多類別分類的範圍：`[-1, +1]`。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html)  | 
| [條件式拒絕的差異 (DCR)](clarify-post-training-bias-metric-dcr.md)  | 比較觀察標籤與模型預測標籤，並評估負值結果 (拒絕) 的各個構面是否相同。 | 根據資格條件，與另一個年齡組別相比，一個年齡組別的貸款申請的拒絕次數是否多於或少於預期數目？ | 二進位、多類別構面和連續性標籤的範圍：(-∞, \$1∞)。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 
| [拒絕率差異 (DRR)](clarify-post-training-bias-metric-drr.md)  | 測量觀察負值結果 (TN) 與預測負值 (TN \$1 FN) 在不利和有利構面之間的比率的差異。 | 在預測所有年齡層的不合格申請人其貸款拒絕時，該模型是否具有相同的精確度？ | 二進位、多類別構面和連續性標籤的範圍為[-1, \$11]。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 
| [處理方式平等 (TE)](clarify-post-training-bias-metric-te.md)  | 測量有利和不利構面之間偽陽性與偽陰性比率的差異。 | 在貸款申請中，所有年齡的人口統計學中偽陽性與偽陰性的相對比率是否相同？  | 二進位和多類別構面標籤的範圍：(-∞, \$1∞)。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 
| [廣義熵 (GE)](clarify-post-training-bias-metric-ge.md)  | 測量模型預測b指派給每個輸入優點的不平等性。 | 在兩種貸款申請分類的候選模式中，其中一種模式是否會導致期望結果的分布比另一種更不均勻？ | 二進位和多類別標籤的範圍：(0, 0.5)。當模型僅預測偽陰性時，GE 為未定義。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/clarify-measure-post-training-bias.html) | 

有關訓練後偏差指標的其他資訊，請參閱[機器學習在金融領域的一系列公平量值](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)。

**Topics**
+ [預測標籤中正值比例的差異 (DPPL)](clarify-post-training-bias-metric-dppl.md)
+ [差別影響 (DI)](clarify-post-training-bias-metric-di.md)
+ [條件式接受的差異 (DCAcc)](clarify-post-training-bias-metric-dcacc.md)
+ [條件式拒絕的差異 (DCR)](clarify-post-training-bias-metric-dcr.md)
+ [特異性差異 (SD)](clarify-post-training-bias-metric-sd.md)
+ [召回差異 (RD)](clarify-post-training-bias-metric-rd.md)
+ [接受率 (DAR) 差異](clarify-post-training-bias-metric-dar.md)
+ [拒絕率差異 (DRR)](clarify-post-training-bias-metric-drr.md)
+ [準確度差異 (AD)](clarify-post-training-bias-metric-ad.md)
+ [處理方式平等 (TE)](clarify-post-training-bias-metric-te.md)
+ [預測標籤 (CDDPL) 中的條件人口統計差異](clarify-post-training-bias-metric-cddpl.md)
+ [反事實翻轉測試 (FT)](clarify-post-training-bias-metric-ft.md)
+ [廣義熵 (GE)](clarify-post-training-bias-metric-ge.md)

# 預測標籤中正值比例的差異 (DPPL)
<a name="clarify-post-training-bias-metric-dppl"></a>

預測標籤 中正值比例的差異 (DPPL) 指標決定模型是否針對每個構面預測差別結果。其被定義為構面 *a* 正值預測的比例 (y’ = 1) 與構面 *d* 的正值預測 (y’ = 1) 的比例之間的差異。例如，如果模型預測將放貸給 60％ 的中年人群 (構面 *a*) 和 50％ 的其他年齡組 (構面 *d*)，則可能會偏向構面 *d*。在此範例中，您必須判斷 10% 的差異是否是案例的重要偏差。

標籤比例差異 (DPL) (訓練前偏差的測量) 與 DPPL (訓練後偏差的測量) 的比較，會評估初始存在於資料集中的正比例偏差在訓練後是否變更。如果 DPPL 大於 DPL，則正比例中的偏差會在訓練後增加。如果 DPPL 小於 DPL，則模型在訓練後不會增加正比例中的偏差。比較 DPL 與 DPPL 並不保證模型會減少所有維度的偏差。例如，在考慮 [反事實翻轉測試 (FT)](clarify-post-training-bias-metric-ft.md) 或 [準確度差異 (AD)](clarify-post-training-bias-metric-ad.md) 等其他指標時，模型可能仍會有偏差。如需偏差偵測的詳細資訊，請參閱部落格文章[了解 Amazon SageMaker Clarify 如何協助偵測偏差](https://aws.amazon.com/blogs/machine-learning/learn-how-amazon-sagemaker-clarify-helps-detect-bias/)。如需 DPL 的詳細資訊，請參閱[標籤比例的差異](clarify-data-bias-metric-true-label-imbalance.md)。

DPPL 的公式為：



        DPPL = q'a - q'd

其中：
+ q'a = n'a(1)/na 是得到值 1 正值結果的構面 *a* 預測比例。在我們的例子中，預計獲得貸款核准的中年構面的比例。這裡 n'a(1) 代表面 *a* 的項目數目，其得值 1 和的正值預測結果，且 na 是構面 *a* 的項目數目。
+ q'd = n'd(1)/nd 是得到值 1 正值結果的構面 *d* 預測比例。在我們的例子中，老年人和年輕人的構面預計將獲得貸款核准。這裡 n'd(1) 代表構面 *d* 的項目數目，其得到一個正值預測結果。且 nd 是構面 *d* 的項目數目。

如果 DPPL 足夠接近 0，這表示已經達成了訓練後的*人口統計奇偶性*。

對於二進位和多類別構面標籤，標準化 DPL 值的範圍在間隔 [-1, 1] 內。對於連續性標籤，值隨間隔 (-∞, \$1∞) 而變化。
+ 正 DPPL 值顯示構面 *a* 與構面 *d* 相比，具有較高的預測正結果比例。

  這被稱為*正偏差*。
+ DPPL 接近零的值顯示構面 *a* 和 *d* 間預測正值更相等的結果比例，值為零顯示完美的人口統計奇偶性。
+ 負 DPPL 值顯示構面 *d* 與構面 *a* 相比，具有較高的預測正結果的比例。這被稱為*負偏差*。

# 差別影響 (DI)
<a name="clarify-post-training-bias-metric-di"></a>

預測標籤指標中的正值比例差異可以用比例的形式評估。

預測標籤指標中正比例的比較可以用比例的形式進行評估，而不是差異，就像使用[預測標籤中正值比例的差異 (DPPL)](clarify-post-training-bias-metric-dppl.md)。差別影響 (DI) 指標被定義為構面 *d* 的正值預測的比例 (y = 1) 超過構面 *a* 的正值預測 (y' = 1)。例如，如果模型預測將放貸給 60％ 的中年人群 (構面 *a*) 和 50％ 的其他年齡組 (構面 *d*)，則 DI = .5/.6 = 0.8，這顯示構面 *d* 代表的其他年齡組產生正偏差和副影響。

對於預測標籤的比例公式：



        DI = q'd/q'a

其中：
+ q'a = n'a(1)/na 是得到值 1 正值結果的構面 *a* 預測比例。在我們的例子中，預計獲得貸款核准的中年構面的比例。這裡 n'a(1) 代表構面 *a* 的項目數目，其得到一個正值預測結果。且 na 是構面 *a* 的項目數目。
+ q'd = n'd(1)/nd 是得到值 1 正值結果的構面 *d* 預測比例。在我們的例子中，老年人和年輕人的構面預計將獲得貸款核准。這裡 n'd(1) 代表構面 *d* 的項目數目，其得到一個正值預測結果。且 nd 是構面 *d* 的項目數目。

對於二進位、多類別構面和連續性標籤，DI 值範圍內的間隔 [0, ∞)。
+ 小於 1 的值顯示構面 *a* 的預測正值結果比構面 *d* 更高比例。這被稱為*正偏差*。
+ 1 值顯示人口統計奇偶性。
+ 大於 1 的值顯示構面 *d* 的預測正值結果比構面 *a* 更高比例。這被稱為*負偏差*。

# 條件式接受的差異 (DCAcc)
<a name="clarify-post-training-bias-metric-dcacc"></a>

此指標將比較觀察標籤與模型預測標籤，並評估各個構面獲得預測正值結果是否相同。此指標接近模仿人類偏差，因為與訓練資料集中的標籤 (標籤 y) 相比，它量化模型在某個構面的正面結果 (標籤 y') 了多少。例如，如果與包含其他年齡組 (構面 *d*) 相比，在中年組 (構面 *a*) 的貸款申請訓練資料集中觀察接受次數 (正值結果)，比不同資格的模型預測要多。這可能表示貸款核准方式存在有利於中年族群的潛在偏差。

條件式接受差異的公式：

        DCAcc = ca - cd

其中：
+ ca = na(1)/ n'a(1) 是構面 *a* 的值 1 (接受) 的觀察正值結果數目，與構面 *a* 的預測的正結果 (接受) 數目比率。
+ cd = nd(1)/ n'd(1) 是構面 *d* 值 1 (接受) 觀察正值結果數目，與構面 *d* 的預測正結果 (接受) 的預測數目比率。

DCAcc 指標可以擷取正值和負偏差，這些偏差可根據資格揭露偏好的待遇。考慮以下不同年齡的貸款接受偏差情況。

**範例 1：正偏差** 

假設我們的資料集有 100 個中年人 (構面 *a*) 和來自其他年齡組的 50 人 (構面 *d*) 申請貸款，其中模型建議構面 *a* 有 60 和構面 *d* 有 30 給予貸款。因此，相對於 DPPL 指標，預測比例是無偏差，但觀察標籤顯示構面 *a* 有 70 和構面 *d* 有 20 獲得了貸款。換句話說，比訓練資料建議的 (70/60 = 1.17) 觀察標籤，模型允許中年構面多 17% 的貸款，並且比觀察標籤建議的 (20/30 = 0.67)，允許其他年齡組多 33% 的貸款。DCAcc 值的計算提供以下內容：

        DCAcc = 70/60 - 20/30 = 1/2

正值表示對中年構面 *a* 有潛在偏差，與其他構面 *d* 相比，接受率低於觀察資料 (視為無偏差)。

**範例 2：負偏差** 

假設我們的資料集有 100 個中年人 (構面 *a*) 和來自其他年齡組的 50 人 (構面 *d*) 申請貸款，其中模型建議構面 *a* 有 60 和構面 *d* 有 30 給予貸款。因此，相對於 DPPL 指標，預測比例是無偏差，但觀察標籤顯示構面從面 *a* 有 50 而構面 *d* 有 40 獲得了貸款。換句話說，比訓練資料建議的 (50/60 = 0.83) 觀察標籤，模型允許中年構面多 17% 的貸款，並且比觀察標籤建議的 (40/30 = 1.33)，允許其他年齡組多 33% 的貸款。DCAcc 值的計算提供以下內容：

        DCAcc = 50/60 - 40/30 = -1/2

負值顯示與中年構面 *a* 相比，觀察資料 (視為無偏差) 顯示構面 *d* 具有較低接受率的潛在偏差。

請注意，您可以使用 DCAcc 來協助您偵測潛在的 (非刻意) 偏差，方法是以人力介入設定監督模型預測。例如，假設模型的預測 y' 是無偏差，但最終決定是由一個人 (可能使用其他功能) 做出的，他們可以改變模型預測以生成 y' 的新版本和最終版本。人類的額外處理可能會無意中拒絕一個構面不成比例數字的貸款。DCAcc 可協助偵測此類潛在的偏差。

二進位、多類別構面和連續性標籤的條件式接受差異值範圍是 (-∞, \$1∞)。
+ 當與構面 *a* 的預測接受次數相比，觀察接受次數比率高於構面 *d* 的相同比率時，會出現正值。這些值顯示對構面 *a* 的合格申請人可能存在偏差。比率的差異越大，偏差越明顯越極端。
+ 當構面 *a* 的預測接受數目與構面 *d* 的預測接受數目相似時，會出現接近零的值。這些值顯示預測的接受率與標籤資料中的觀察值一致，並且兩個構面的合格申請人都以類似的方式被接受。
+ 當觀察接受次數與構面 *a* 的預測接受次數小於構面 *d* 的比率時，會出現負值。這些值顯示對構面 *d* 的合格申請人可能存在偏差。比率的差異值越負，明顯的偏差就越極端。

# 條件式拒絕的差異 (DCR)
<a name="clarify-post-training-bias-metric-dcr"></a>

此指標比較觀察標籤與模型預測標籤，並評估負值結果 (拒絕) 的各個構面是否相同。此指標接近模仿人類偏差，因為與訓練資料集中的標籤 (觀察標籤 y) 建議的結果相比，它量化模型在某個構面的負面結果 (預測標籤 y’) 了多少。例如，如果與包含其他年齡組別的構面相比 (構面 *d*)，中年組 (構面 *a*) 的貸款申請觀察拒絕 (負結果) 多於模型所預測的偏差，這可能顯示貸款被拒絕的方式可能有利於中年人組勝過其他組的潛在偏差。

條件式接受差異的公式：

        DCR = rd - ra

其中：
+ rd = nd(0)/ n'd(0) 是構面 *d* 的值 0 (拒絕) 負結果觀察數目，與構面 *d* 的預測負結果 (拒絕) 數目的比率。
+ ra = na(0)/ n'a(0) 是構面 *a* 的值 0 (拒絕) 負結果觀察數目，與構面 *a* 的預測負結果 (拒絕) 數目的比率。

DCR 指標可以擷取正值和負偏差，這些偏差顯示不同資格的偏好待遇。考慮以下不同年齡的偏差對貸款拒絕的情況。

**範例 1：正偏差** 

假設我們的資料集有 100 個中年人 (構面 *a*) 和來自其他年齡組的 50 人 (構面 *d*) 申請貸款，其中模型建議構面 *a* 有 60 和構面 *d* 有 30 被拒絕貸款。因此，DPPL 指標的預測比例無偏差，但觀察標籤顯示構面 *a* 有 50，且構面 *d* 有 40 被拒絕。換句話說，比訓練資料建議的 (50/60 = 0.83) 觀察標籤，模型拒絕中年構面多 17% 的貸款，並且比觀察標籤建議的 (40/30 = 1.33)，拒絕其他年齡組多 33% 的貸款。DCR 值以構面之間的觀察和預測拒絕率的比率來量化此差異。正值顯示，與其他組相比，存在有利於中年組的潛在偏差，其拒絕率低於觀察資料 (視為無偏差)。

        DCR = 40/30 - 50/60 = 1/2

**範例 2：負偏差** 

假設我們的資料集有 100 個中年人 (構面 *a*) 和來自其他年齡組的 50 人 (構面 *d*) 申請貸款，其中模型建議構面 *a* 有 60 和構面 *d* 有 30 被拒絕貸款。因此，DPPL 指標的預測比例不偏差，但是觀察標籤顯示構面 *a* 有 70，且構面 *d* 中有 20 被拒絕。換句話說，比訓練資料建議的 (70/60 = 1.17) 觀察標籤，模型拒絕中年構面多 17% 的貸款，並且比觀察標籤建議的 (20/30 = 0.67)，拒絕其他年齡組多 33% 的貸款。負值顯示與中年構面 *a* 相比，觀察資料 (視為無偏差) 顯示對具有較低的拒絕率構面 *a* 有利的潛在偏差。

        DCR = 20/30 - 70/60 = -1/2

二進位、多類別構面和連續性標籤的條件式拒絕差異值範圍是 (-∞, \$1∞)。
+ 當觀察拒絕次數與構面 *d* 的預測拒絕數比大於構面 *a* 的比率時，會出現正值。這些值顯示對構面 *a* 的合格申請人可能存在偏差。DCR 指標的值越大，明顯偏差越極端。
+ 觀察拒絕次數與構面 *a* 的預測接受次數的比率與構面 *d* 的比率相似，則會出現接近零的值。這些值顯示預測拒絕率與標籤資料中的觀察值一致，並且兩個構面有資格的申請人都以類似的方式被拒絕。
+ 觀察拒絕次數與構面 *d* 的預測拒絕次數的比率小於該比率構面 *a* 時，會出現負值。這些值顯示對構面 *d* 的合格申請人可能存在偏差。負 DCR 指標的大小越大，明顯偏差越極端。

 

# 特異性差異 (SD)
<a name="clarify-post-training-bias-metric-sd"></a>

特異性差異 (SD) 是有利構面 *a* 和不利構面 *d* 之間的特異性差異。特異性測量模型正確預測負值結果的頻率 (y'=0)。這些特異性的任何差異都是一種潛在的偏差形式。

如果所有 y = 0 情況都正確地預測了該構面，那麼特異性對於構面來說是完美的。當模型最小化偽陽性 (稱為第一型錯誤) 時，特異性會更大。例如，向構面 *a* 貸款的低特異性和向構面 *d* 貸款的高特異性之間的差異是針對構面 *d* 的偏差量值。

以下公式用於構面 *a* 和 *d* 的特異性之間的差異。

        SD = TNd/(TNd \$1 FPd) - TNa/(TNa \$1 FPa) = TNRd - TNRa

下列用於計算 SD 的變數定義如下：
+ TNd 是構面 *d* 預測的真陰性。
+ FPd 是構面 *d* 預測的偽陽性。
+ TNd 是構面 *a* 預測的真陰性。
+ TNd 是構面 *a* 預測的偽陽性。
+ TNRa = TNa/(TNa \$1 FPa) 是真陰性率，也稱為特異性，針對構面 *a*。
+ TNRd = TNd/(TNd \$1 FPd) 是真陰性率，也稱為特異性，針對構面 *d*。

例如，請考慮下列構面 *a* 和 *d* 的混淆矩陣。

混淆矩陣針對有利構面 `a`


| 類別 a 預測 | 實際結果 0 | 實際結果 1 | 總計  | 
| --- | --- | --- | --- | 
| 0 | 20 | 5 | 25 | 
| 1 | 10 | 65 | 75 | 
| 總計 | 30 | 70 | 100 | 

混淆矩陣針對不利構面 `d`


| 類別 d 預測 | 實際結果 0 | 實際結果 1 | 總計  | 
| --- | --- | --- | --- | 
| 0 | 18 | 7 | 25 | 
| 1 | 5 | 20 | 25 | 
| 總計 | 23 | 27 | 50 | 

特異性差異的值為`SD = 18/(18+5) - 20/(20+10) = 0.7826 - 0.6667 = 0.1159`，顯示對構面 *d* 的偏差。

對於二進位和多類別分類的構面 *a* 和 *d* 之間特異性差值的範圍是 `[-1, +1]`。此指標不適用於連續性標籤的情況。下述 SD 的不同值意義：
+ 當構面 *d* 的特異性高於構面 *a* 的特異性時，會獲得正值。這表明模型在構面 *d* 發生的偽陽性比構面 *a* 少。正值顯示構面 *d* 的偏差。
+ 接近零的值顯示正在比較的構面特異性相似。這表明模型在這兩個構面都發現了相似數目的偽陽性，並且沒有偏差。
+ 當構面 *a* 的特異性高於構面 *d* 時，會獲得負值。這表明模型在構面 *a* 發生的偽陽性比構面 *d* 多。負值顯示構面 *a* 的偏差。

# 召回差異 (RD)
<a name="clarify-post-training-bias-metric-rd"></a>

召回差異 (RD) 指標是有利構面 *a* 和不利構面 *d* 之間模型的召回差異。這些召回中的任何差異都是一種潛在的偏差形式。召回是真陽性率 (TPR)，其測量模型多久正確預測應該得到一個正值結果的情況。如果所有 y=1 情況都正確預測為該構面的 y'=1，那麼召回對於構面來說是完美的。當模型最小化稱為第二型錯誤的偽陰性時，召回更大。例如，模型會正確偵測到兩個不同組 (構面 *a* 和 *d*) 中有多少人符合貸款資格？ 如果貸給構面 *a* 的召回率很高，但貸給構面 *d* 的召回率低，則差異提供了對屬於構面 *d* 組的偏差指標。

構面 *a* 和 *d* 的召回率差異的公式：

        RD = TPa/(TPa \$1 FNa) - TPd/(TPd \$1 FNd) = TPRa - TPRd 

其中：
+ TPa 是構面 *a* 預測的真陽性。
+ FNa 是構面 *a* 預測的偽陰性。
+ TPd 是構面 *d* 預測的真陽性。
+ FNd 是構面 *d* 預測的偽陰性。
+ TPRa = TPa/(TPa \$1 FNa) 是構面 *a* 的召回，或其真陽性率。
+ TPRd = TPd/(TPd \$1 FNd) 是構面 *d* 的召回，或其真陽性率。

例如，請考慮下列構面 *a* 和 *d* 的混淆矩陣。

混淆矩陣針對有利構面 a


| 類別 a 預測 | 實際結果 0 | 實際結果 1 | 總計  | 
| --- | --- | --- | --- | 
| 0 | 20 | 5 | 25 | 
| 1 | 10 | 65 | 75 | 
| 總計 | 30 | 70 | 100 | 

混淆矩陣針對不利構面 d


| 類別 d 預測 | 實際結果 0 | 實際結果 1 | 總計  | 
| --- | --- | --- | --- | 
| 0 | 18 | 7 | 25 | 
| 1 | 5 | 20 | 25 | 
| 總計 | 23 | 27 | 50 | 

召回差異的值是 RD = 65/70 - 20/27 = 0.93 - 0.74 = 0.19，這顯示對構面 *d* 的偏差。

二進位和多類別分類的構面 *a* 和 *d* 之間的召回差異值範圍是 [-1, \$11]。此指標不適用於連續性標籤的情況。
+ 當構面 *a* 的召回率高於構面 *d* 時，會獲得正值。這表明模型在構面 *a* 找到更多真陽性，而不是構面 *d*，此為一種偏差形式。
+ 接近零的值顯示正在比較構面的召回類似。這表明模型在這兩個構面中發現大約相同數目的真陽性，並且沒有偏差。
+ 當構面 *d* 的召回率高於構面*a* 時，會獲得負值。這表明模型在構面 *d* 找到更多真陽性，而不是構面 *a*，此為一種偏差形式。

# 接受率 (DAR) 差異
<a name="clarify-post-training-bias-metric-dar"></a>

接受率差異 (DAR) 指標是在真陽性 (TP) 預測與構面 *a* 和 *d* 的差異觀察陽性 (TP \$1 FP) 的比率差異。此指標會測量模型精確度的差異，以預測這兩個構面的接受次數。精確度會測量由模型定義的合格申請人池，其中的合格申請人分數。如果用於預測合格申請人的模型精確度在各個構面之間發生偏差，此為一種偏差，其幅度由 DAR 測量。

構面 *a* 和 *d* 間的接受率差異公式：

        DAR = TPa/(TPa \$1 FPa) - TPd/(TPd \$1 FPd) 

其中：
+ TPa 是構面 *a* 預測的真陽性。
+ FPa 是構面 *a* 預測的偽陽性。
+ TPd 是構面 *d* 預測的真陽性。
+ FPd 是構面 *d* 預測的偽陽性。

例如，假設該模型接受 70 名中年申請人(構面 *a*)的貸款申請 (預測正值標籤)，其中只有 35 人實際接受 (觀察正值標籤)。還假設該模型接受其他年齡人口統計學 (構面 *d*) 的 100 位申請人貸款 (預測陽性標籤)，其中只有 40 人實際接受 (觀察正值標籤)。然後 DAR = 35/70 - 40/100 = 0.10，這顯示對第二個年齡組 (構面 *d*) 的合格人士存在潛在偏差。

二進位、多類別構面和連續性標籤的 DAR 值範圍為 [-1, \$11]。
+ 當構面 *a* 的預測陽性 (接受次數) 與觀察正值結果 (合格申請人) 的比率大於構面 *d* 的相同比率時，會出現正值。這些值顯示由於在構面 *d* 中發生相對較多偽陽性，導致對不利構面 *d* 可能產生偏差。比率的差異越大，明顯的偏差越極端。
+ 當構面s *a* 和 *d* 的預測陽性 (接受次數) 與觀察正值結果 (合格的申請人) 的比率具有類似的值，表示正值結果的觀察標籤以具有相等精確度的模型預測，會出現接近零的值。
+ 當構面 *d* 的預測陽性 (接受次數) 與觀察正結果 (合格申請人) 的比率大於構面 *a* 的比率時，會出現負值。這些值顯示由於在構面 *a* 中發生相對較多偽陽性，導致對有利構面 *a* 可能產生偏差。比率的差異值越負，明顯的偏差就越極端。

# 拒絕率差異 (DRR)
<a name="clarify-post-training-bias-metric-drr"></a>

拒絕率差異 (DRR) 指標是在真陰性 (TN) 預測與構面 *a* 和 *d* 的差異觀察負值 (TP \$1 FP) 的比率差異。此指標會測量模型精確度的差異，以預測這兩個構面的拒絕情況。精確度會測量由模型定義的不合格申請人池，其中的不合格申請人分數。如果用於預測不合格申請人的模型精確度在各個構面之間發生偏差，此為一種偏差，其幅度由 DAR 測量。

構面 *a* 和 *d* 間的拒絕率差異公式：

        DRR = TNd/(TNd \$1 FNd) - TNa/(TNa \$1 FNa) 

先前 DRR 方程式的元件如下。
+ TNd 是構面 *d* 預測的真陰性。
+ FNd 是構面 *d* 預測的偽陰性。
+ TNa 是構面 *a* 預測的真陰性。
+ FNa 是構面 *a* 預測的偽陰性。

例如，假設該模型拒絕 100 名中年申請人 (構面 *a*) 的貸款申請 (預測負值標籤)，其中只有 80 人實際不符合資格 (觀察負值標籤)。還假設該模型拒絕 50 申請人來自其他年齡的人口統計學 (構面 *d*) 貸款 (預測負值標籤)，其中只有 40 實際上是不合格的 (觀察負值標籤)。然後 DRR = 40/50-80 /100 = 0，所以沒有指示偏差。

二進位、多類別構面和連續性標籤 DRR 的值範圍為 [-1, \$11]。
+ 當構面 *d* 的預測負值(拒絕)與觀察負值結果 (不合格申請人) 的比率大於構面 *a* 的相同比率時，會出現正值。這些值顯示由於在構面 *a* 中發生相對較多偽陰性，導致對有利構面 *a* 可能產生偏差。比率的差異越大，明顯的偏差越極端。
+ 當構面s *a* 和 *d* 的預測負值(拒絕)與觀察負值結果 (不合格申請人) 的比率具有類似的值時，會出現接近零的值，這表示模型會以相等的精確度預測負值結果的觀察標籤。
+ 當預測的負值 (拒絕) 與觀察負值結果的比率 (不合格的申請人) 為構面 *a* 大於比面 *d* 大時，會發生負值。這些值顯示由於在構面 *d* 中發生相對較多偽陽性所，導致對不利構面 *d* 可能產生偏差。比率的差異值越負，明顯的偏差就越極端。

# 準確度差異 (AD)
<a name="clarify-post-training-bias-metric-ad"></a>

準確度差異 (AD) 指標是不同構面的預測準確度之間的差異。此指標決定模型的分類對於一個構面是否比另一個更精確。AD 指出一個構面是否會產生類第一型和類第二型錯誤的比例較大。但它無法區分第一型和第二型錯誤。例如，模型對於不同年齡人口統計資料可能具有相同的準確性，但對於一個基於年齡的羣體來說，誤差主要是偽陽性 (第一型錯誤)，另一個組的誤差大多為偽陽性 (第二型錯誤)。

此外，如果中年人口的貸款核准 (構面 *a*) 的準確性要高於其他年齡基於人口 (構面 *d*)，則第二組合格申請人中有更多比例被拒絕貸款 (FN) 或該組的不合格申請人中有更大比例獲得貸款 (FP) 或兩者兼而有之。這些指標中的大多數都是從不同人口統計組的二進位分類混淆矩陣中，獲得的數字的組合。

AD 指標的公式是構面 *a*、ACCa 的預測準確度減去構面 *d*、ACC d的預測準確度之間的差異：

        AD = 累積 a-累積 d

其中：
+ ACCa = (TPa \$1 TNa)/(TPa \$1 TNa \$1 FPa \$1 FNa) 
  + TPa 是構面 *a* 預測的真陽性
  + TNa 是構面 *a* 預測的真陰性
  + FPa 是構面 *a* 預測的偽陽性
  + FNa 是構面 *a* 預測的偽陰性
+ ACCd = (TPd \$1 TNd)/(TPd \$1 TNd \$1 FPd \$1 FNd)
  + TPd 是構面 *d* 預測的真陽性
  + TNd 是構面 *d* 預測的真陰性
  + FPd 是構面 *d* 預測的偽陽性
  + FNd 是構面 *d* 預測的偽陰性

例如，假設一個模型核准構面 *a* 100 位申請人中的 70 位申請人的貸款，而拒絕了另外 30 人。10 位不應該被提供貸款 (FPa) 和 60 本應該被核准的被核准 (TPa)。20 位本應該被核准的被拒絕 (FNa) 和 10 為被正確拒絕 (TNa)。構面 *a* 的精確度如下：

        ACCa = (60 \$1 10)/(60 \$1 10 \$1 20 \$1 10) = 0.7

例如，假設一個模型核准構面 *d* 100 位申請人中的 50 位申請人的貸款，而拒絕了另外 50 人。10 位不應該被提供貸款 (FPa) 和 40 本應該被核准的被核准 (TPa)。40 位本應該被核准的被拒絕 (FNa) 和 10 為被正確拒絕 (TNa)。構面 *a* 的精確度決定如下：

        ACCd= (40 \$1 10)/(40 \$1 10 \$1 40 \$1 10) = 0.5

因此，精確度差異是 AD = ACCa - ACCd = 0.7 - 0.5 = 0.2。這是由於指標為正值，因此對構面 *d* 存在偏差。

二進位和多類別構面標籤 AD 的值範圍為 [-1, \$11]。
+ 當構面 *a* 的預測準確度大於構面 *d* 的預測準確度時，會出現正值。這表示構面 *d* 受到一些偽陽性 (第一型錯誤) 或偽陰性 (第二型錯誤) 組合更多的影響。這表示對不利構面 *d* 存在潛在的偏差。
+ 當構面 *a* 的預測精確度與構面 *d* 的預測準確度相似時，會出現接近零的值。
+ 當構面 *d* 的預測精確度大於構面 *a* 的預測精確度時，會出現負值。這表示構面 *a* 受到一些偽陽性 (第一型錯誤) 或偽陰性 (第二型錯誤) 組合的影響更多。這表示對有利構面 *a* 具有偏差。

# 處理方式平等 (TE)
<a name="clarify-post-training-bias-metric-te"></a>

處理方式平等 (TE) 是構面 *a* 和 *d* 間的偽陰性與偽陽性比率差異。這個指標的主要目的是評估，即使群組之間的準確性相同，錯誤對一個群組的危害是否比另一個群組高？ 錯誤率來自偽陽性和偽陽性的總數，但總數的明細在構面間可能會有很大的不同。TE 測量錯誤是否以相似或不同的方式補償構面。

處理方式平等的公式：

        TE = FNd/FPd - FNa/FPa

其中：
+ FNd 是構面 *d* 預測的偽陰性。
+ FPd 是構面 *d* 預測的偽陽性。
+ FNa 是構面 *a* 預測的偽陰性。
+ FPa 是構面 *a* 預測的偽陽性。

請注意，如果 FP a 或 FP d 為零，則指標將變為無界。

例如，假設有構面 *a* 的 100 位貸款申請人和構面 *d* 的 50 位貸款申請人。對於構面 *a*，8 為被錯誤拒絕了貸款 (FNa)，另外 6 位被錯誤核准 (FPa)。其餘的預測是真實的，所以 TPa \$1 TNa = 86。對於構面 *d*，5 位被錯誤拒絕 (FNd)，2 位被錯誤核准 (FPd)。其餘的預測是真實的，所以 TPd \$1 TNd = 43。針對 構面 *a*，偽陰性與偽陽性的比率等於 8/6 = 1.33，而構面 *d* 則為 5/2 = 2.5。因此 TE = 2.5 - 1.33 = 1.167，即使兩個構面具有相同的精確度：

        ACCa = (86)/(86\$1 8 \$1 6) = 0.86

        ACCd = (43)/(43 \$1 5 \$1 2) = 0.86

二進位和多類別構面標籤的條件式拒絕差異值範圍為 (-∞, \$1∞)。TE 指標未定義為連續性標籤。此指標的解釋取決於偽陽性 (第一型誤差) 和偽陰性 (第二型誤差) 的相對重要性。
+ 當構面 *d* 的偽陰性與偽陽性比率大於構面 *a* 時，會出現正值。
+ 當構面 *a* 的偽陰性與偽陽性比率與構面 *d* 的比率相似時，會出現接近零的值。
+ 當構面 *d* 的偽陰性與偽陽性的比率小於構面 *a* 時，會發生負值。

**注意**  
先前版本列出的處理方式相等指標計算方式為 FPa / FNa - FPd / FNd 而不是 FNd / FPd - FNa / FPa。雖然任何一個版本都可以使用。如需詳細資訊，請參閱[https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf](https://pages.awscloud.com/rs/112-TZM-766/images/Fairness.Measures.for.Machine.Learning.in.Finance.pdf)。

# 預測標籤 (CDDPL) 中的條件人口統計差異
<a name="clarify-post-training-bias-metric-cddpl"></a>

人口統計差異指標 (DDPL) 決定構面 *d* 在預測拒絕的標籤中是否比預測接受標籤有更大的比例。它可以比較預測拒絕比例和構面的預測接受比例的差異。此指標與預訓練 CDD 指標完全相同，不同之處在於它是用預測標籤而不是觀察標籤上運算的。此指標位於範圍 (-1, \$11)。

構面 *d* 標籤的人口統計差異預測公式如下：

        DDPLd = n'd(0)/n'(0) - n'd(1)/n'(1) = PdR(y'0) - PdA(y'1) 

其中：
+ n'(0) = n'a(0) \$1 n'd(0) 是構面 *a* 和 *d* 的預測拒絕標籤數目。
+ n'(1) = n'a(1) \$1 n'd(1) 是構面 *a* 和 *d* 的預測接受標籤數目。
+ PdR(y'0) 是預測拒絕標籤 (值 0) 在構面 *d* 中的比例。
+ PdA(y'1) 是預測接受標籤 (值 1) 在構面 *d* 中的比例。

預測標籤的條件式人口統計差異 (CDDPL) 指標中，需要在定義資料集上子組階層的屬性上調控 DDPL，以排除辛普森悖論。重組可以為不太有利構面提供明顯人口統計差異的原因分析。經典案例出現在柏克萊入學的情況下，男性被接受的比率比女性更高。但是，當檢查系所的子組時，證明個系所的女性的入學率高於男性。說明女性申請系所的接受率低於男性。檢視子組接受率發現，對於接受率較低的系所來說，女性的實際接受率高於男性。

CDDPL 指標針對資料集屬性所定義的子組中所有差異提供的單一量值，方法是將它們平均。它被定義為每個子組的預測標籤 (DDPLi) 中人口統計差異的加權平均值，每個子組差異均按照包含的觀察次數呈比例加權。預測標籤的條件式人口統計差異公式如下：

        CDDPL = (1/n)\$1∑ini \$1DDPLi 

其中：
+ ∑ini = n 是觀察的總數且 ni 是每個子組的觀察值數目。
+ DDPLi = n'i(0)/n(0) - n'i(1)/n(1) = PiR(y'0) - PiA(y'1) 是子組預測標籤中的人口統計差異。

因此，預測標籤 (DDPLi) 中的子組的人口統計差異是預測拒絕標籤的比例，與每個子組預測接受標籤的比例間差異。

二進位、多類別和連續性結果的 DDPL 值範圍為 [-1, \$11]。
+ \$11：當構面 *a* 或子組沒有預測拒絕標籤，且構面 *d* 或子組沒有預測接受標籤時。
+ 正值顯示預測標籤中存在人口統計差異，因為構面 *d* 或子組在預測拒絕的標籤中比預測接受標籤的比例大。值越大差異越大。
+ 接近零的值顯示平均而言沒有人口統計差異。
+ 負值顯示預測標籤中存在人口統計差異，因為構面 *a* 或子組在預測拒絕標籤中的比例大於預測的接受標籤的比例。值越低差異越大。
+ -1：當構面 *d* 或子組沒有預測的拒絕襟扣，並且構面 *a* 或子組沒有預測的接受襟扣時。

# 反事實翻轉測試 (FT)
<a name="clarify-post-training-bias-metric-ft"></a>

翻轉測試是一種查看構面 *d* 的每個項目，並評估構面 *a* 的相似項目是否具有不同的模型預測方法。構面 *a* 的項目被選作在構面 *d* 觀察的 k-最近鄰。我們評估相反群體有多少最近鄰接收到不同的預測，其中翻轉的預測可以從正向變為負向，反之亦然。

對於反事實翻轉測試的公式是在兩個集合的基數除以構面 *d* 項目數量的差異：

        FT = (F\$1 - F-)/nd

其中：
+ F\$1 = 是具有不利結果的不利構面 *d* 項目的數量，其最近鄰在有利面 *a* 取得了有利的結果。
+ F- = 是具有有利結果的不利構面 *d* 項目的數量，其最近鄰在有利面 *a* 取得了不利的結果。
+ n d 是構面 *d* 的樣本大小。

二進制和多類構面標籤的反事實翻轉測試的範圍值是 [-1, \$11]。對於連續性標籤，我們設定一個閾值將標籤折疊為二進制。
+ 當不利的構面 *d* 其不利反事實翻轉測試決定的數量超過有利的數量出現正值。
+ 當不利和有利的反事實翻轉測試決定平衡出數量時，會出現接近零的值。
+ 當不利的構面 *d* 其不利的反事實翻轉測試決定數量小於有利的時候，會發生負值。

# 廣義熵 (GE)
<a name="clarify-post-training-bias-metric-ge"></a>

廣義熵指數 (GE) 測量與觀察到的標籤相比，預測標籤的效益`b`不平等。當預測為偽陽性時，會出現效益。當負面觀測 (y=0) 具有正面預測 (y'=1) 時，就會發生偽陽性。當觀察標籤和預測標籤相同 (也稱為真陽性和真陰性) 時，也會出現效益。當預測為偽陰性時，不會出現效益。當正面觀測 (y=1) 預測會有負面結果 (y'=0) 時，就會出現偽陰性。效益`b`的定義如下。

```
 b = y' - y + 1
```

使用此定義時，偽陽性會收到 `2` 的效益 `b`，而偽陰性會收到 `0` 的效益。真正值和真負值都會獲得`1`的效益。

GE 指標的計算方式是遵循[廣義熵指數](https://en.wikipedia.org/wiki/Generalized_entropy_index) (GE)，且權重`alpha`設定為`2`。此權重控制對不同效益值的敏感度。較小`alpha`表示對較小值的敏感度增加。

![\[方程式用 alpha 參數設定為 2 定義廣義熵指數。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify-post-training-bias-metric-ge.png)


以下用於計算 GE 的變數定義如下：
+ bi 是由`ith`資料點獲得的效益。
+ b' 是所有效益的平均值。

GE 的範圍可以介於 0 到 0.5 之間，其中零值表示所有資料點的效益不平等。當所有輸入都正確預測或所有預測都為偽陽性時，即會發生這種情況。當所有預測都是偽陰性時，GE 是未定義的。

**注意**  
指標 GE 不依賴於有利或不利的構面值。

# 模型可解釋性
<a name="clarify-model-explainability"></a>

Amazon SageMaker Clarify 提供各種工具，協助說明機器學習 (ML) 模型如何進行預測。這些工具可協助機器學習 (ML) 建模者、開發人員以及其他內部利害關係人在部署之前瞭解整個模型特性，並在部署模型之後對模型提供的預測進行偵錯。
+ 若要取得資料集和模型的解釋，請參閱[使用 SageMaker Clarify 進行公平性、模型可解釋性和偏差偵測](clarify-configure-processing-jobs.md)。
+ 若要從 SageMaker AI 端點即時取得解釋，請參閱[SageMaker Clarify 線上可解釋性](clarify-online-explainability.md)。

關於機器學習 (ML) 模型如何達到預測的透明度對於消費者和監管機構來說也是至關重要的。如果他們要接受出自於模型的決定，他們需要信任模型預測。SageMaker Clarify 使用與模型無關的特徵歸因方法。您可以使用此特徵來瞭解模型在訓練後進行預測的原因，並在推論期間提供每個執行個體的說明。該操作包括 [SHAP](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf) 的可擴展性和高效能操作。這是基於合作賽局理論領域的夏普利值概念，該值為每個特徵分配一個特定預測的重要性值。

Clarify 會產生部分依賴圖 (PDP)，顯示特徵對機器學習模型預測結果的邊際影響。部分的依賴性有助於解釋特定一組輸入特徵的目標回應。它還支援電腦視覺 (CV) 和自然語言處理 (NLP) 可解釋性，使用與表格式資料解釋相同的夏普利值 (SHAP) 算法。

機器學習環境中的可解釋性特徵是什麼？ 可以將可解釋性視為*為什麼問題*的答案，該問題可以幫助人類了解預測的原因。在機器學習 (ML) 模型的環境中，您可能有興趣回答以下問題：
+ 為什麼該模型預測了負面結果，例如特定申請人拒絕貸款？ 
+ 模型如何做出預測？
+ 為什麼模型做出不正確的預測？
+ 哪些特徵對模型行為的影響最大？

您可以使用說明用以稽核和符合法規需求、建立對模型的信任以及支援人為決策，以及偵錯和改善模型效能。

滿足人類對機器學習 (ML) 推論性質和結果的理解需求是可解釋性所需的關鍵。哲學和認知科學學科的研究表明，人們特別關心對比性解釋，或解釋為什麼事件 X 發生而不是其他未發生的事件 Y 發生。在這裡，X 可能是未預期或令人驚訝的事件，Y 對應到以其現有作為心理模型*基準*的期望。請注意，對於同一個事件 X，不同的人可能會根據他們的觀點或心理模型 Y 尋求不同的可解釋性。在可解釋的 AI 的環境中，您可以將 X 視為解釋完的範例，Y 作為通常選擇代表資料集中資訊不足或平均範例的基準。有時候，例如，在對影像進行機器學習 (ML) 建模的情況下，基準可能是隱性的，其中都是相同顏色像素的影像可以用作基準。

## 範例筆記本
<a name="clarify-model-explainability-sample-notebooks"></a>

Amazon SageMaker Clarify 提供以下模型可解釋性的範例筆記本：
+ [Amazon SageMaker Clarify 處理](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-clarify/index.html#sagemaker-clarify-processing) — 使用 SageMaker Clarify 來建立用於偵測偏差的處理任務，並使用特徵歸因說明模型預測。範例包括使用 CSV 和 JSON 行資料格式、使用您自己的容器，以及使用 Spark 執行處理中的任務。
+ [使用 SageMaker Clarify 解釋影像分類](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-clarify/computer_vision/image_classification/explainability_image_classification.ipynb) — SageMaker Clarify 可為您提供有關電腦視覺模型如何分類影像的深入分析。
+ [使用 SageMaker Clarify 說明物件偵測模型](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-clarify/computer_vision/object_detection/object_detection_clarify.ipynb) — SageMaker Clarify 可提供您電腦視覺模型如何偵測物件的深入分析。

此筆記本已透過驗證，僅可在 Amazon SageMaker Studio 中執行。如果您需要有關如何在 Amazon SageMaker Studio 中打開筆記本的說明，請參閱[建立或開啟 Amazon SageMaker Studio Classic 筆記本](notebooks-create-open.md)。如果系統提示您選擇核心，請選擇 **Python 3 (資料科學)**。

**Topics**
+ [範例筆記本](#clarify-model-explainability-sample-notebooks)
+ [使用塑形值的特徵屬性](clarify-shapley-values.md)
+ [非對稱 Shapley 值](clarify-feature-attribute-shap-asymm.md)
+ [用於可解釋性的 SHAP 基準](clarify-feature-attribute-shap-baselines.md)

# 使用塑形值的特徵屬性
<a name="clarify-shapley-values"></a>

SageMaker Clarify 會根據[夏普利值](https://en.wikipedia.org/wiki/Shapley_value)的概念提供特徵屬性。您可以使用夏普利值來決定每個特徵對模型預測所做的貢獻。可以針對特定的預測和整體模型的全體層級提供這些屬性。例如，如果您使用機器學習 (ML) 模型計算大學入學率，這些說明可以幫助確定 GPA 或 SAT 分數是否與模型預測最有關的特徵，然後您可以確定每個特徵與對決定特定學生入學決定有關。

SageMaker Clarify 使用賽局理論中的夏普利值的概念，將其部署在機器學習環境中。夏普利值提供了一種量化每個玩家對遊戲貢獻的方法，因此可以根據他們的貢獻將遊戲產生的總收益分配給玩家。在此機器學習環境中，SageMaker Clarify 會將特定執行個體上的模型預測視為*遊戲*，並將模型中包含的特徵視為*玩家*。*對於第一個近似值，您可能會試圖透過量化從模型中捨棄該特徵或從模型中*捨棄*所有其他特徵的結果，來確定每個特徵的邊際貢獻或效果。*但是，此方法並不考慮模型中包含的特徵通常彼此不獨立。例如，如果兩個特徵高度相關，則捨棄其中一個特徵可能不會大幅改變模型預測。

為了解決這些潛在的相依性，夏普利值請求必須考慮每個可能特徵組合 (或結合) 的結果，以確定每個特徵的重要性。特定 *d* 特徵，有 2 d 這種可能的特徵組合，每個都對應到一個潛在的模型。若要確定特定特徵 *f* 的歸因，請考慮在所有不包含 *f* 的特徵組合 (和關聯的模型) 中包含 *f* 的邊際貢獻，並取平均值。可以證明，夏普利值是分配滿足某些所需屬性之每個特徵的貢獻或重要性的獨特方式。特別是，每個特徵的夏普利值總和對應到模型預測與無特徵的虛擬模型之間的差異。然而，即使對於合理的價值 *d*，比如說 50 個特徵，計算上是無法負擔且不切實際訓練 2d 可能的模型。因此，SageMaker Clarify 需要使用各種近似技術。為了達到這個目的，SageMaker Clarify 使用 Shapley Additive exPlanations (SHAP)，其中包含了這種近似值，並透過其他最佳化設計了核心 SHAP 演算法的可擴展性且有效率的實作。

有關夏普利值的其他資訊，請參閱[模型預測的統一解釋方法](https://papers.nips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf)。

# 非對稱 Shapley 值
<a name="clarify-feature-attribute-shap-asymm"></a>

SageMaker Clarify 時間序列預測模型解釋解決方案是植根於[合作博弈論](https://en.wikipedia.org/wiki/Cooperative_game_theory)的特徵歸因方法，其精神與 SHAP 相似。具體而言，Clarify 在機器學習和可解釋性中使用[隨機順序群組值](http://www.library.fa.ru/files/Roth2.pdf#page=121)，也稱為[非對稱 Shapley 值](https://proceedings.neurips.cc/paper/2020/file/0d770c496aa3da6d2c3f2bd19e7b9d6b-Paper.pdf)。

## 背景介紹
<a name="clarify-feature-attribute-shap-asymm-setting"></a>

目標是計算指定預測模型 *f* 的輸入特徵歸因。預測模型採用下列輸入：
+ 過去時間序列 *(目標 TS)*。例如，這可能是巴黎柏林路線過去每日的火車乘客，以 *xt* 表示。
+ (選用) 共變數時間序列。例如，這可能是節日和天氣資料，以 *zt* ​∈ RS 表示。使用時，共變數 TS 只能用於過去時間步驟，或者也可以用於未來時間步驟 (包含在節日行事曆中)。
+ (選用) 靜態共變數，例如服務品質 (例如一流或二流)，以 *u* ∈ RE 表示。

可以省略靜態共變數、動態共變數或兩者，取決於特定應用程式案例。假設預測範圍 K ≥ 0 (例如 K=30 天)，則可以透過下列公式描述模型預測的特徵：*f(x[1:T], z[1:T\$1K], u) = x[T\$11:T \$1K\$11]*。

下圖顯示典型預測模型的相依性結構。時間 *t\$11* 的預測取決於先前提到的三種輸入類型。

![\[典型預測模型的相依性結構。\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/images/clarify/clarify-forecast-dependency.png)


## Method
<a name="clarify-feature-attribute-shap-asymm-explan"></a>

透過在原始輸入衍生的一系列點上查詢時間序列模型 *f* 來計算解釋。在博弈理論建構之後，Clarify 會平均預測中迭代地計算輸入混淆 (亦即，設定為基準值) 部分所導致的差異。時間結構可以按時間順序或反時間順序或兩者進行導覽。按時間順序的解釋是透過從第一個時間步驟開始迭代地新增資訊來建置的，而按反時間順序的解釋則是從最後一個步驟開始。在出現近期性偏差的情況下，後者模式可能更合適，例如預測股票價格時。計算解釋的一個重要屬性是，如果模型提供確定性輸出，它們會加總到原始模型輸出。

## 產生的歸因
<a name="clarify-feature-attribute-shap-asymm-attr"></a>

產生的歸因是分數，標記特定時間步驟或輸入特徵對每個預測時間步驟最終預測的個別貢獻。Clarify 提供以下兩個精細程度進行解釋：
+ 時間解釋成本低廉，且僅提供特定時間步驟的相關資訊，例如了解過去第 19 天的資訊對預測未來第 1 天有多少貢獻。這些歸因不會個別解釋靜態共變數，也不會彙總目標和共變數時間序列的解釋。歸因是矩陣 *A*，其中每個 *Atk* 都是時間步驟 *t* 對預測時間步驟 *T\$1k* 的歸因。請注意，如果模型接受未來的共變數，*t* 可以大於 *T*。
+ 精細解釋在運算上更為密集，並會提供輸入變數所有歸因的完整明細。
**注意**  
精細解釋僅支援按時間順序排序。

  產生的歸因是由下列項目組成的三元組：
  + 與輸入時間序列相關的矩陣 *Ax* ∈ RT×K，其中 *Atkx​* 是 *xt* 對預測步驟 *T\$1k* 的歸因
  + 與共變數時間序列相關的張量 *Az* ∈ *RT\$1K×S×K*，其中 *Atskz​* 是 *zts​* (即 sth 共變數 TS) 對預測步驟 *T\$1k* 的歸因
  + 與靜態共變數相關的矩陣 *Au* ∈ RE×K，其中 *Aeku* 是 *ue* (eth 靜態共變數) 對預測步驟 *T\$1k* 的歸因

無論精細程度為何，解釋也會包含偏移向量 *B* ∈ *RK*，在所有資料混淆時，代表模型的「基本行為」。

# 用於可解釋性的 SHAP 基準
<a name="clarify-feature-attribute-shap-baselines"></a>

如前所述，可解釋性通常是相反的 (也就是說，其說明偏離基準的情況)。因此，對於相同的模型預測，您可以期望獲得相對於不同基準的不同解釋。因此，您選擇的基準至關重要。在機器學習 (ML) 的情境中，基準會對應至可能*無資訊*或*資訊豐富*的假設執行個體。在運算夏普利值期間，SageMaker Clarify 會在基準和指定的執行個體之間產生數個新執行個體，其中缺少特徵的情況下，可透過將特徵值設定為基準值來建模，並透過將特徵值設定為基準值來建構特徵。因此，沒有所有特徵對應到基準，並且所有特徵的存在對應到特定執行個體。

您如何選擇好的基準？ 通常需要選擇具有非常低資訊內容的基準。例如，您可以透過取得數值特徵的中位數或平均值以及分類特徵的模式，從訓練資料集建構平均執行個體。對於大學招生的範例，您可能有興趣解釋與平均申請人的基準接受率相比，為什麼特定申請人被接受了。如果未提供，則 SageMaker Clarify 使用輸入資料集中的 K 平均值或 K 原型自動計算基準。

或者，您也可以選擇產生資訊基準的說明。對於大學招生的情況，您可能想解釋為什麼與有相似人口統計背景的其他申請人相比，某特定申請人被拒絕了。在這種情況下，您可以選擇代表關注的申請人基準，即有類似人口統計背景的申請人。因此，您可以使用資訊性基準，將分析集中在特定模型預測的特定面向。您可以將人口統計屬性和其他不符合您的特徵設定為與指定執行個體相同的值，以隔離要評估的特徵。