0 / 0
Go back to the English version of the documentation
漂移指标
Last updated: 2024年10月25日
漂移指标

当您配置漂移评估时,您可以生成指标,帮助您确定模型随着时间的推移预测结果的好坏。

您可以在Insights 面板上查看漂移评估的结果。 要查看结果,您可以选择模型部署磁贴,然后单击 漂移 评估部分中的箭头 导航箭头 以显示上次评估的漂移度量的摘要。 有关更多信息,请参阅 查看漂移结果

漂移指标的计算方法是分析模型的行为并建立自己的模型,以预测模型是否能对数据点进行准确预测。 此漂移检测模型会处理有效内容数据,以确定模型对其进行不准确预测的记录数,并生成模型的预测准确性。

漂移仅支持结构化数据,不支持 Python 函数。

受支持的漂移度量

漂移评估支持以下漂移指标:

准确性下降

漂移评估估计的是与训练数据相比,模型在运行时的准确度下降情况。 如果与模型在训练数据中未正确评估的事务类似的事务有所增加,那么模型准确性会下降。

运作方式

漂移监视器在预生产环境和生产环境中的工作方式不同。

在预生产环境中,上载带标签的测试数据时,会将数据添加到反馈和有效内容表中。 标注的数据将作为注释添加到有效内容表中。 使用有效内容表中的标注数据列和预测列计算准确性。

在生产环境中,漂移检测模型是通过查看用于训练和测试模型的数据创建的。 例如,如果模型针对测试数据的准确性为 90%,这意味着它针对 10% 的测试数据提供了不正确的预测。 建立的二元分类模型接受一个数据点,并预测该数据点是否与模型错误(10%)或准确(90%)预测的数据相似。

漂移检测模型创建后,在运行时,该模型会使用客户端模型接收到的所有数据进行评分。 例如,如果客户端模型在过去 3 小时内收到 1000 条记录,漂移检测模型就会在这 1000 个数据点上运行。 它会计算有多少记录类似于该模型在训练时犯错的 10% 的记录。 如果这些记录中有 200 个类似于这 10%,那么意味着模型准确性很可能是 80%。 由于训练时的模型准确性为 90%,这意味着模型存在 10% 的准确性漂移。

在检测到漂移后,要想减轻漂移,就必须构建一个能修复问题的新版本模型。 最好从突出显示为漂移原因的数据点着手进行修复。 在手动标记漂移的事务并使用这些事务来重新训练模型之后,将新数据引入到预测模型中。

数值计算

准确性下降指标仅针对结构化二元和多类分类模型计算。 对每笔交易进行分析,以估计模型预测是否准确。 如果模型预测不准确,该事务将标记为漂移。 然后将估算的准确性计算为非漂移事务占所分析事务总数的比例。 “基本准确性”是基于测试数据的模型准确性。 精度漂移的程度是根据基准精度和估计精度之间的差值计算得出的。 然后,计算所有漂移的交易,并根据每个特征对准确度漂移的贡献的相似性对交易进行分组。 在每个群组中,估算出导致准确度漂移的重要特征,并将其特征影响分为较大、部分和较小。

数据一致性下降

运作方式

通过将运行时的事务与训练数据中的事务模式进行比较,分析每个事务的数据是否不一致。 如果事务违反了一个或多个训练数据模式,那么会将该事务标识为不一致。 计算数据一致性下降的方法是,用交易总数除以被识别为不一致的交易数。 例如,如果将 10 个事务标识为与一组 100 个事务不一致,那么数据一致性下降 10%。

数值计算

为了识别数据的不一致性,在配置漂移检测时会生成一个模式,通过创建一个constraints.json文件来指定输入数据必须遵循的规则。 该模式通过识别不符合指定约束条件的异常值来评估数据漂移。 该模式被指定为具有 columnsconstraints 数组的 JSON 对象,用于描述训练数据,如以下示例中所示:

{
      "columns": [
        {
            "name": "CheckingStatus",
            "dtype": "categorical",
            "count": 5000,
            "sparse": false,
            "skip_learning": false
        },
      "constraints": [
        {
            "name": "categorical_distribution_constraint",
            "id": "f0476d40-d7df-4095-9be5-82564511432c",
            "kind": "single_column",
            "columns": [
                "CheckingStatus"
            ],
            "content": {
                "frequency_distribution": {
                    "0_to_200": 1304,
                    "greater_200": 305,
                    "less_0": 1398,
                    "no_checking": 1993
                }
            }
        }

namedtypecountsparseskip_learning键指定值,以描述列。

namedtype 键描述列的标签和数据类型。 使用 dtype 键指定的以下值描述数据类型:

  • categorical
  • numeric_discrete
  • numeric_continuous

指定的数据类型确定是否使用键描述了更多统计属性,例如 minmaxmean。 例如,指定 numeric_discretenumeric_continuous 数据类型时,将按以下示例中所示描述属性:

{
            "name": "LoanDuration",
            "dtype": "numeric_discrete",
            "count": 5000,
            "sparse": false,
            "skip_learning": false,
            "min": 4,
            "max": 53,
            "mean": 21.28820697954272,
            "std": 10.999096037050032,
            "percentiles": [
                13.0,
                21.0,
                29.0
            ],
            "count_actual": 4986
        }

count 键指定列的行数。 布尔值用于描述列的sparseskip_learning键。 sparse 键指定列是否稀疏, skip_learning 键指定列是否跳过学习模式中描述的任何规则。 如果25th百分位数和75th百分位数的值相同,则该列为稀疏列。

约束

name 键指定约束类型。 指定了以下值来描述约束类型:

  • categorical_distribution_constraint
  • numeric_range_constraint
  • numeric_distribution_constraint
  • catnum_range_constraint
  • catnum_distribution_constraint
  • catcat_distribution_constraint

id 键标识具有通用唯一标识 (UUID) 的约束。 kind 键指定约束是 single_column 还是 two-column 约束。

columns 键指定列名数组。 如果指定了带single_column键的kind约束,数组中就会包含一个与要描述的列相关的值。 如果指定了带kind键的two-column约束,数组中的值就会与包含相关数据的列相关联。

content 键指定用于描述数据统计特征的属性。 使用 name 键指定的约束类型确定在 content 键中指定的属性,如下表中所示:

属性 约束
频率分发 categorical_distribution_constraint
范围 numeric_range_constraint 和 catnum_range_constraint
分布 numeric_distribution_constraint 和 catnum_distribution_constraint
Rare_组合 catcat_distribution_constraint
source_column catcat_distribution_constraint , catnum_range_constraint 和 catnum_distribution_constraint
目标列 catcat_distribution_constraint , catnum_range_constraint 和 catnum_distribution_constraint

以下部分提供了如何指定每种约束类型的示例:

分类分布约束

        {
            "name": "categorical_distribution_constraint",
            "id": "f0476d40-d7df-4095-9be5-82564511432c",
            "kind": "single_column",
            "columns": [
                "CheckingStatus"
            ],
            "content": {
                "frequency_distribution": {
                    "0_to_200": 1304,
                    "greater_200": 305,
                    "less_0": 1398,
                    "no_checking": 1993
                }
            }
        }

在训练数据中, CheckingStatus 列包含使用 frequency_distribution 属性指定的四个值。 frequency_distribution 属性指定具有类别值的频率计数,例如 0_to_200。 如果在有效载荷数据中发现指定值与frequency_distribution属性值不同的记录,这些记录将被识别为漂移。

数字范围约束

   {
            "name": "numeric_range_constraint",
            "id": "79f3a1f5-30a1-4c7f-91a0-1613013ee802",
            "kind": "single_column",
            "columns": [
                "LoanAmount"
            ],
            "content": {
                "ranges": [
                    {
                        "min": 250,
                        "max": 11676,
                        "count": 5000
                    }
                ]
            }
        }

LoanAmount 列包含通过 ranges 属性指定的最小值和最大值,用于设置训练数据的范围。 ranges 属性指定列的高密度区域。 不包括训练数据中很少出现的任何范围。 如果在有效载荷数据中发现不符合范围和预定义缓冲区的记录,这些记录就会被识别为漂移。

数字分布约束

{
            "name": "numeric_distribution_constraint",
            "id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
            "kind": "single_column",
            "columns": [
                "LoanAmount"
            ],
            "content": {
                "distribution": {
                        "name": "norm",
                        "parameters": {
                            "loc": 3799.62,
                            "scale": 1920.0640064678398
                        },
                        "p-value": 0.22617155797563282
                }
            }
        }

LoanAmount 列包含使用 distribution 属性指定的值,用于设置训练数据的正态分布。 如果在有效载荷数据中发现不符合正态分布的记录,这些记录将被识别为漂移记录。 拟合的分布是均匀分布、指数分布或正态分布。 如果找不到符合这些分布的记录,则不会学习该限制条件。

分类-分类分布约束

    {
            "name": "catcat_distribution_constraint",
            "id": "99468600-1924-44d9-852c-1727c9c414ee",
            "kind": "two_column",
            "columns": [
                "CheckingStatus",
                "CreditHistory"
            ],
            "content": {
                "source_column": "CheckingStatus",
                "target_column": "CreditHistory",
                "rare_combinations": [
                    {
                        "source_value": "no_checking",
                        "target_values": [
                            "no_credits"
                        ]
                    }
                ]
            }
        }

对于 CheckingStatusCreditHistory 列, rare_combinations 属性指定在训练数据中很少出现的值的组合。 如果在有效载荷数据中发现包含该组合的记录,则将其识别为漂移记录。

分类-数字范围约束

        {
            "name": "catnum_range_constraint",
            "id": "f252033c-1635-4974-8976-3f7904d0c37d",
            "kind": "two_column",
            "columns": [
                "CheckingStatus",
                "LoanAmount"
            ],
            "content": {
                "source_column": "CheckingStatus",
                "target_column": "LoanAmount",
                "ranges": {
                    "no_checking": [
                        {
                            "min": 250,
                            "max": 11676,
                            "count": 1993
                        }
                    ],
                    "less_0": [
                        {
                            "min": 250,
                            "max": 7200,
                            "count": 1398
                        }
                    ],
                    "0_to_200": [
                        {
                            "min": 250,
                            "max": 9076,
                            "count": 1304
                        }
                    ],
                    "greater_200": [
                        {
                            "min": 250,
                            "max": 9772,
                            "count": 305
                        }
                    ]
                }
            }
        }

ranges 属性指定用于设置训练数据范围的 CheckingStatusLoanAmount 列的最小值和最大值。 如果在有效载荷数据中发现不包含符合范围和预定义缓冲区的LoanAmountCheckingStatus列值的记录,这些记录将被识别为漂移。

分类-数字分布约束

        {
            "name": "catnum_distribution_constraint",
            "id": "3a97494b-0cd7-483e-a1c6-adb7755c1cb0",
            "kind": "two_column",
            "columns": [
                "CheckingStatus",
                "LoanAmount"
            ],
            "content": {
                "source_column": "CheckingStatus",
                "target_column": "LoanAmount",
                "distribution": {
                    "greater_200": {
                        "name": "norm",
                        "parameters": {
                            "loc": 3799.62,
                            "scale": 1920.0640064678398
                        },
                        "p-value": 0.22617155797563282
                    }
                }
            }
        }

LoanAmountCheckingStatus 列包含使用 distribution 属性指定的值,以设置训练数据的正态分布。 如果在有效载荷数据中发现不包含符合正态分布的LoanAmountCheckingStatus列值的记录,这些记录将被识别为漂移。

注:

在检测到漂移后,要想减轻漂移,就必须构建一个能修复问题的新版本模型。 最好从突出显示为漂移原因的数据点着手进行修复。 在手动标记漂移的事务并使用这些事务来重新训练模型之后,将新数据引入到预测模型中。

了解更多信息

查看模型洞察

父主题: 漂移度量

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more