你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
数据集分为两部分:一组用于训练,一组用于测试。 训练集用于训练模型,而测试集用作训练后的模型测试,以计算模型性能和评估。 测试集不会通过训练过程引入到模型中,以确保模型在新数据上进行测试。
成功完成训练后,将自动触发模型评估。 评估过程首先使用经过训练的模型预测测试集中文档的用户定义实体,并将其与提供的数据标记进行比较(这将建立真实的基线)。 返回结果,以便可以查看模型的性能。 对于评估,自定义 NER 使用以下指标:
精准率:度量模型的精确度/准确度。 它是正确识别的正数(真正值)与所有已识别的正值之间的比率。 精准率指标显示正确标记的预测实体的数量。
Precision = #True_Positive / (#True_Positive + #False_Positive)召回率:度量模型预测实际正类的能力。 它是预测的真正值与标记的结果之间的比率。 召回率指标显示正确的预测实体的数量。
Recall = #True_Positive / (#True_Positive + #False_Negatives)F1 分数:F1 分数是在准确率和召回率之间寻求平衡时使用的函数。
F1 Score = 2 * Precision * Recall / (Precision + Recall)
注意
精度、召回率和 F1 分数分别针对每个实体(实体级评估)单独计算,以及针对模型(模型级评估)整体计算。
模型级和实体级评估指标
分别为每个实体(实体级评估)和整个模型计算(模型级评估)的精准率、召回率和 F1 分数。
对于实体级评估和模型级评估,精准率、召回率和计算的定义是相同的。 但是,真正、假正和假负的计数可能有所不同。 例如,请考虑以下文本。
示例
此合同的第一方是 John Smith,居住于内布拉斯加州弗雷德里克市 Main Rd 5678 号。 第二方是 Forrest Ray,居住于新墨西哥州科罗那市 Integer Rd 123-345 号。 还有 Fannie Thomas,居住于科罗拉多州科罗拉多斯普林斯市 River Road 7890 号。
从此文本中提取实体的模型可以有以下预测:
| 实体 | 预测为 | 实际类型 |
|---|---|---|
| John Smith | 人员 | 人员 |
| Frederick | 人员 | 城市 |
| Forrest | 城市 | 人员 |
| 范妮·托马斯 | 人员 | 人员 |
| 科罗拉多斯普林斯 | 城市 | 城市 |
人员实体的实体级评估
该模型将针对人员实体进行以下实体级评估:
| 键 | Count | 说明 |
|---|---|---|
| 真正 | 2 | John Smith 和 Fannie Thomas 正确预测为人员。 |
| 假正 | 1 | 弗雷德里克 被错误地预测为 人 ,而应该是 城市。 |
| 假负 | 1 | Forrest 被错误地预测为城市,它应为人员。 |
-
精准率:
#True_Positive / (#True_Positive + #False_Positive)=2 / (2 + 1) = 0.67 -
召回率:
#True_Positive / (#True_Positive + #False_Negatives)=2 / (2 + 1) = 0.67 -
F1 分数:
2 * Precision * Recall / (Precision + Recall)=(2 * 0.67 * 0.67) / (0.67 + 0.67) = 0.67
城市实体的实体级评估
该模型将针对城市实体进行以下实体级评估:
| 密钥 | Count | 说明 |
|---|---|---|
| 真正 | 1 | Colorado Springs 被正确预测为城市。 |
| 假正 | 1 | Forrest 被错误地预测为城市,它应为人员。 |
| 假负 | 1 | Frederick 被错误地预测为人员,它应为城市。 |
-
精准率 =
#True_Positive / (#True_Positive + #False_Positive)=1 / (1 + 1) = 0.5 -
召回率 =
#True_Positive / (#True_Positive + #False_Negatives)=1 / (1 + 1) = 0.5 -
F1 分数 =
2 * Precision * Recall / (Precision + Recall)=(2 * 0.5 * 0.5) / (0.5 + 0.5) = 0.5
对整体模型进行模型级评估
该模型将针对整个模型进行以下评估:
| 密钥 | Count | 说明 |
|---|---|---|
| 真正 | 3 | John Smith 和 Fannie Thomas 正确预测为人员。 Colorado Springs 被正确预测为城市。 此数字是所有实体的真实正数之和。 |
| 假正 | 2 | 福里斯特 被错误地预测为 城市 ,而它应该是 人物。 弗雷德里克 被错误地预测为 人 ,而应该是 城市。 此数字是所有实体的误报总和。 |
| 假负 | 2 | 福里斯特 被错误地预测为 城市 ,而它应该是 人。 弗雷德里克 被错误地预测为 人,实际应为 城市。 此数字是所有实体的误报总和。 |
-
精准率 =
#True_Positive / (#True_Positive + #False_Positive)=3 / (3 + 2) = 0.6 -
召回率 =
#True_Positive / (#True_Positive + #False_Negatives)=3 / (3 + 2) = 0.6 -
F1 分数 =
2 * Precision * Recall / (Precision + Recall)=(2 * 0.6 * 0.6) / (0.6 + 0.6) = 0.6
解释实体级评估指标
那么,对于某个实体来说,具有高精准率或高召回率实际上意味着什么?
| 召回率 | Precision | 解释 |
|---|---|---|
| 高 | 高 | 该模型标识了实体。 |
| 低 | 高 | 模型不能总是提取该实体,但一旦提取成功,其置信度很高。 |
| 高 | 低 | 模型很好地提取了这个实体,但它的置信度较低,因为有时会被提取成另一种类型。 |
| 低 | 低 | 模型不会标识此实体类型,因为它通常不会提取。 如果提取,也不会有高置信度。 |
指南
训练模型后,你将看到有关如何改进模型的一些指导和建议。 建议使用涵盖指南部分所有点的模型。
训练集有足够的数据:当实体类型在训练数据中标记的示例少于 15 个时,模型的准确性会下降。 之所以出现此结果,是因为系统对这些案例的处理不够充分。 在此情况下,请考虑在训练集中添加更多标记数据。 可以查看“数据分布”选项卡获取更多指南。
测试集中存在所有实体类型:当测试数据缺少实体类型的标记实例时,由于未测试的方案,模型的测试性能可能不太全面。 可以查看“测试集数据分布”选项卡获取更多指南。
实体类型在训练和测试集内平衡:当采样偏差导致实体类型频率不准确表示时,由于模型期望实体类型发生得太频繁或太少,因此可能会导致准确性降低。 可以查看“数据分布”选项卡获取更多指南。
实体类型在训练集和测试集之间均匀分布:当实体类型的混合在训练集和测试集之间不匹配时,可能会导致测试准确性降低,因为模型在训练方式与测试方式不同。 可以查看“数据分布”选项卡获取更多指南。
训练集中实体类型之间的区别不明确:多个实体类型的训练数据相似时,由于实体类型可能经常被错误分类为彼此,可能会导致准确性降低。 查看以下实体类型,如果它们相似,请考虑合并它们。 否则,请添加更多示例以更好地区分它们。 可以查看“混淆矩阵”选项卡获取更多指南。
混淆矩阵
混淆矩阵是用于模型性能评估的 N x N 矩阵,其中 N 是实体数目。 该矩阵将预期标签与模型预测的标签进行比较。 此矩阵可全面了解模型的性能以及它正在发生的错误类型。
可以使用混淆矩阵来识别彼此之间过于接近且经常被弄错(歧义)的实体。 在这种情况下,请考虑将这些实体类型合并在一起。 如果无法做到这一点,请考虑添加这两个实体的更多标记示例,帮助模型区分它们。
下图中突出显示的对角线是正确预测的实体,其中预测标记与实际标记相同。
可以根据混淆矩阵计算实体级别和模型级别的评估指标:
- 对角线的值是每个实体的真正值。
- 实体行中值的总和(不包括对角线)是模型的假正值。
- 实体列中值的总和(不包括对角线)是模型的假负值。
同样,
- 模型的真正值为所有实体的真正值的总和。
- 模型的假正值为所有实体的假正值的总和。
- 模型的假负值为所有实体的假负值的总和。