

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 分类器训练输出
<a name="train-classifier-output"></a>

Amazon Comprehend 完成自定义分类器模型训练后，它会在您在 API 请求或等效控制台请求[CreateDocumentClassifier](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_CreateDocumentClassifier.html)中指定的 Amazon S3 输出位置创建输出文件。

当您训练纯文本模型或原生文档模型时，Amazon Comprehend 会创建一个混淆矩阵。训练原生文档模型时，它可以创建其他的输出文件。

**Topics**
+ [混淆矩阵](#conf-matrix)
+ [原生文档模型的其他输出](#train-class-output-native)

## 混淆矩阵
<a name="conf-matrix"></a>

当您训练自定义分类器模型时，Amazon Comprehend 会创建一个混淆矩阵，该矩阵提供模型在训练中的表现的指标。该矩阵显示了模型预测的标签矩阵，并与实际文档标签进行比较。Amazon Comprehend 使用部分训练数据来创建混淆矩阵。

混淆矩阵可以显示哪些类可以使用更多数据来提高模型性能。正确预测值比例较高的类在矩阵对角线上的结果数量最多。如果对角线上的数字较小，则该类的正确预测比例较低。您可以为该类添加更多训练示例，然后再次训练模型。例如，如果标签 A 的样本中有 40% 被归类为标签 D，则为标签 A 和标签 D 添加更多样本会增强分类器的性能。

在 Amazon Comprehend 创建分类器模型后，混淆矩阵将显示在 S3 输出位置 `confusion_matrix.json` 的文件中。

混淆矩阵的格式会有所不同，具体取决于您是使用多类模式还是多标签模式训练分类器。

**Topics**
+ [多类模式的混淆矩阵](#m-c-matrix)
+ [多标签模式的混淆矩阵](#m-l-matrix)

### 多类模式的混淆矩阵
<a name="m-c-matrix"></a>

在多类模式下，各个类别是互斥的，因此分类器会为每个文档分配一个标签。例如，动物可以是狗或猫，但不能同时是两者。

考虑以下多类训练分类器的混淆矩阵示例：

```
  A B X Y <-(predicted label)
A 1 2 0 4
B 0 3 0 1
X 0 0 1 0
Y 1 1 1 1
^
|
(actual label)
```

在本例中，模型预测了以下内容：
+ 一个“A”标签被准确预测，两个“A”标签被错误地预测为“B”标签，四个“A”标签被错误地预测为“Y”标签。
+ 三个“B”标签被准确预测，一个“B”标签被错误地预测为“Y”标签。
+ 一个“X”被准确预测。
+ 一个“Y”标签被准确预测，一个“Y”标签被错误预测为“A”标签，一个被错误预测为“B”标签，一个被错误预测为“X”标签。

矩阵中的对角线（A:A、 B:B X:X、和 Y:Y）显示了准确的预测。预测误差是对角线以外的值。在本例中，矩阵显示以下预测误差率：
+ A 标签：86%
+ B 标签：25%
+ X 个标签：0%
+ Y 标签：75%

分类器以 JSON 格式的文件形式返回混淆矩阵。以下 JSON 文件代表前面示例的矩阵。

```
{
 "type": "multi_class",
 "confusion_matrix": [
 [1, 2, 0,4],
 [0, 3, 0, 1],
 [0, 0, 1, 0],
 [1, 1, 1, 1]],
 "labels": ["A", "B", "X", "Y"],
 "all_labels": ["A", "B", "X", "Y"]
}
```

### 多标签模式的混淆矩阵
<a name="m-l-matrix"></a>

在多标签模式下，分类可以为文档分配一个或多个类别。考虑以下多类训练分类器的混淆矩阵示例。

在此示例中，有三个可能的标签：`Comedy`、`Action`、和 `Drama`。多标签混淆矩阵为每个标签创建一个 2x2 矩阵。

```
Comedy                   Action                   Drama 
     No Yes                   No Yes                   No Yes   <-(predicted label)                                      
 No  2   1                No  1   1                No  3   0                                                         
Yes  0   2               Yes  2   1               Yes  1   1   
 ^                        ^                        ^
 |                        |                        |
 |-----------(was this label actually used)--------|
```

在本例中，模型返回 `Comedy` 标签的以下内容：
+ 准确预测 `Comedy` 标签存在的两个实例。真阳性 (TP)。
+ 准确预测 `Comedy` 标签不存在的两个实例。真阴性 (TN)。
+ 没有错误地预测 `Comedy` 标签存在的实例。假阳性 (FP)。
+ 一个错误地预测 `Comedy` 标签不存在的实例。假阴性 (FN)。

与多类混淆矩阵一样，每个矩阵中的对角线显示准确的预测。

在这种情况下，模型在 80% 的时间内准确预测了 `Comedy` 标签（TP 加 TN），在 20% 的时间内错误地预测了标签（FP 加 FN）。



分类器以 JSON 格式的文件形式返回混淆矩阵。以下 JSON 文件代表前面示例的矩阵。

```
{
"type": "multi_label",
"confusion_matrix": [
 [[2, 1],        
 [0, 2]],
 [[1, 1],        
 [2, 1]],      
 [[3, 0],        
 [1, 1]]
], 
"labels": ["Comedy", "Action", "Drama"]
"all_labels": ["Comedy", "Action", "Drama"]
}
```

## 原生文档模型的其他输出
<a name="train-class-output-native"></a>

当您训练原生文档模型时，Amazon Comprehend 可以创建其他输出文件。

### Amazon Textract 输出
<a name="textract-output"></a>

如果 Amazon Comprehend 调用 Amazon Textract API 来提取任何xu文档的文本，它会将Amazon Textract 的输出文件保存在 S3 的输出位置。它使用以下目录结构：
+ **训练文件：**

  `amazon-textract-output/train/<file_name>/<page_num>/textract_output.json` 
+ **测试文件：**

  `amazon-textract-output/test/<file_name>/<page_num>/textract_output.json`

如果您在 API 请求中提供了测试文档，Amazon Comprehend 会填充测试文件夹。

### 文档注释失败
<a name="failed-files-output"></a>

 如果有任何注释失败，Amazon Comprehend 会在 Amazon S3 输出位置（在 **skipped\_documents/** 文件夹中）创建以下文件：
+ failed\_annotations\_train.jsonl

  如果训练数据中的任何注释失败，则文件存在。
+ failed\_annotations\_test.jsonl

  如果请求包含测试数据，并且测试数据中的任何注释失败，则文件存在。

失败的注释文件是 JSONL 文件，格式如下：

```
{
     "File": "String", "Page": Number, "ErrorCode": "...", "ErrorMessage": "..."}
    {"File": "String", "Page": Number, "ErrorCode": "...", "ErrorMessage": "..."
  }
```