当您配置漂移评估时,您可以生成指标,帮助您确定模型随着时间的推移预测结果的好坏。
您可以在Insights 面板上查看漂移评估的结果。 要查看结果,您可以选择模型部署磁贴,然后单击 漂移 评估部分中的箭头 以显示上次评估的漂移度量的摘要。 有关更多信息,请参阅 查看漂移结果。
漂移指标的计算方法是分析模型的行为并建立自己的模型,以预测模型是否能对数据点进行准确预测。 此漂移检测模型会处理有效内容数据,以确定模型对其进行不准确预测的记录数,并生成模型的预测准确性。
漂移仅支持结构化数据,不支持 Python 函数。
受支持的漂移度量
漂移评估支持以下漂移指标:
准确性下降
漂移评估估计的是与训练数据相比,模型在运行时的准确度下降情况。 如果与模型在训练数据中未正确评估的事务类似的事务有所增加,那么模型准确性会下降。
运作方式
漂移监视器在预生产环境和生产环境中的工作方式不同。
在预生产环境中,上载带标签的测试数据时,会将数据添加到反馈和有效内容表中。 标注的数据将作为注释添加到有效内容表中。 使用有效内容表中的标注数据列和预测列计算准确性。
在生产环境中,漂移检测模型是通过查看用于训练和测试模型的数据创建的。 例如,如果模型针对测试数据的准确性为 90%,这意味着它针对 10% 的测试数据提供了不正确的预测。 建立的二元分类模型接受一个数据点,并预测该数据点是否与模型错误(10%)或准确(90%)预测的数据相似。
漂移检测模型创建后,在运行时,该模型会使用客户端模型接收到的所有数据进行评分。 例如,如果客户端模型在过去 3 小时内收到 1000 条记录,漂移检测模型就会在这 1000 个数据点上运行。 它会计算有多少记录类似于该模型在训练时犯错的 10% 的记录。 如果这些记录中有 200 个类似于这 10%,那么意味着模型准确性很可能是 80%。 由于训练时的模型准确性为 90%,这意味着模型存在 10% 的准确性漂移。
在检测到漂移后,要想减轻漂移,就必须构建一个能修复问题的新版本模型。 最好从突出显示为漂移原因的数据点着手进行修复。 在手动标记漂移的事务并使用这些事务来重新训练模型之后,将新数据引入到预测模型中。
数值计算
准确性下降指标仅针对结构化二元和多类分类模型计算。 对每笔交易进行分析,以估计模型预测是否准确。 如果模型预测不准确,该事务将标记为漂移。 然后将估算的准确性计算为非漂移事务占所分析事务总数的比例。 “基本准确性”是基于测试数据的模型准确性。 精度漂移的程度是根据基准精度和估计精度之间的差值计算得出的。 然后,计算所有漂移的交易,并根据每个特征对准确度漂移的贡献的相似性对交易进行分组。 在每个群组中,估算出导致准确度漂移的重要特征,并将其特征影响分为较大、部分和较小。
数据一致性下降
运作方式
通过将运行时的事务与训练数据中的事务模式进行比较,分析每个事务的数据是否不一致。 如果事务违反了一个或多个训练数据模式,那么会将该事务标识为不一致。 计算数据一致性下降的方法是,用交易总数除以被识别为不一致的交易数。 例如,如果将 10 个事务标识为与一组 100 个事务不一致,那么数据一致性下降 10%。
数值计算
为了识别数据的不一致性,在配置漂移检测时会生成一个模式,通过创建一个constraints.json
文件来指定输入数据必须遵循的规则。 该模式通过识别不符合指定约束条件的异常值来评估数据漂移。 该模式被指定为具有 columns
和 constraints
数组的 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
}
}
}
列
为name
、dtype
、count
sparse
和skip_learning
键指定值,以描述列。
name
和 dtype
键描述列的标签和数据类型。 使用 dtype
键指定的以下值描述数据类型:
categorical
numeric_discrete
numeric_continuous
指定的数据类型确定是否使用键描述了更多统计属性,例如 min
, max
和 mean
。 例如,指定 numeric_discrete
或 numeric_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
键指定列的行数。 布尔值用于描述列的sparse
和skip_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"
]
}
]
}
}
对于 CheckingStatus
和 CreditHistory
列, 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
属性指定用于设置训练数据范围的 CheckingStatus
和 LoanAmount
列的最小值和最大值。 如果在有效载荷数据中发现不包含符合范围和预定义缓冲区的LoanAmount
和CheckingStatus
列值的记录,这些记录将被识别为漂移。
分类-数字分布约束
{
"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
}
}
}
}
LoanAmount
和 CheckingStatus
列包含使用 distribution
属性指定的值,以设置训练数据的正态分布。 如果在有效载荷数据中发现不包含符合正态分布的LoanAmount
和CheckingStatus
列值的记录,这些记录将被识别为漂移。
在检测到漂移后,要想减轻漂移,就必须构建一个能修复问题的新版本模型。 最好从突出显示为漂移原因的数据点着手进行修复。 在手动标记漂移的事务并使用这些事务来重新训练模型之后,将新数据引入到预测模型中。
了解更多信息
父主题: 漂移度量