DataDriftDetector 类

定义可用于在 Azure 机器学习中运行数据偏移作业的数据偏移监视器。

利用 DataDriftDetector 类,可以确定某个给定基线与目标数据集之间的偏移。 通过直接指定基线和目标数据集,在工作区中创建 DataDriftDetector 对象。 有关详细信息,请参阅 https://aka.ms/datadrift

Datadriftdetector 构造函数。

DataDriftDetector 构造函数用于检索与提供的工作区关联的 DataDriftDetector 对象的云表示形式。

继承
builtins.object
DataDriftDetector

构造函数

DataDriftDetector(workspace, name=None, baseline_dataset=None, target_dataset=None, compute_target=None, frequency=None, feature_list=None, alert_config=None, drift_threshold=None, latency=None)

参数

名称 说明
workspace
必需

要在其中创建 DataDriftDetector 对象的工作区。

name
str

DataDriftDetector 对象的唯一名称。

默认值: None
baseline_dataset

用于与目标数据集进行比较的数据集。

默认值: None
target_dataset

要为其运行临时或计划 DataDrift 作业的数据集。 必须是时序。

默认值: None
compute_target

可选 Azure 机器学习 ComputeTarget 或 ComputeTarget 名称。 如果未指定,DataDriftDetector 将创建一个计算目标。

默认值: None
frequency
str

可选频率,表示管道的运行频率。 支持“Day”、“Week”或“Month”。

默认值: None
feature_list

要对其运行数据偏移检测的可选白名单功能。 如果未指定 feature_list,则 DataDriftDetector 作业将对所有功能运行检测。 功能列表可以包含字符、数字、短划线和空格。 列表的长度必须小于 200。

默认值: None
alert_config

DataDriftDetector 警报的可选配置对象。

默认值: None
drift_threshold

启用 DataDriftDetector 警报的可选阈值。 该值必须介于 0 和 1 之间。 如果未指定值,则采用默认值 0.2。

默认值: None
latency
int

数据在数据集中的显示延迟时间(小时)。

默认值: None
workspace
必需

要在其中创建 DataDriftDetector 对象的工作区。

name
必需
str

DataDriftDetector 对象的唯一名称。

baseline_dataset
必需

用于与目标数据集进行比较的数据集。

target_dataset
必需

要为其运行临时或计划 DataDrift 作业的数据集。 必须是时序。

compute_target
必需

可选 Azure 机器学习 ComputeTarget 或 ComputeTarget 名称。 如果未指定,DataDriftDetector 将创建一个计算目标。

frequency
必需
str

可选频率,表示管道的运行频率。 支持“Day”、“Week”或“Month”。

feature_list
必需

要对其运行数据偏移检测的可选白名单功能。 如果未指定 feature_list,则 DataDriftDetector 作业将对所有功能运行检测。 功能列表可以包含字符、数字、短划线和空格。 列表的长度必须小于 200。

alert_config
必需

DataDriftDetector 警报的可选配置对象。

drift_threshold
必需

启用 DataDriftDetector 警报的可选阈值。 该值必须介于 0 和 1 之间。 如果未指定值,则采用默认值 0.2。

latency
必需
int

数据在数据集中的显示延迟时间(小时)。

注解

DataDriftDetector 对象表示可用于运行三种作业运行类型的数据偏移作业定义:

  • 临时运行,用于分析特定某天的数据;请参阅 run 方法。

  • 管道中的计划运行;请参阅 enable_schedule 方法。

  • 回填运行,用于查看数据在一段时间的变化情况;请参阅 backfill 方法。

创建 DataDriftDetector 的典型模式是:

下面的示例演示如何创建基于数据集的 DataDriftDetector 对象。


   from azureml.datadrift import DataDriftDetector, AlertConfiguration

   alert_config = AlertConfiguration(['user@contoso.com']) # replace with your email to recieve alerts from the scheduled pipeline after enabling

   monitor = DataDriftDetector.create_from_datasets(ws, 'weather-monitor', baseline, target,
                                                         compute_target='cpu-cluster',         # compute target for scheduled pipeline and backfills
                                                         frequency='Week',                     # how often to analyze target data
                                                         feature_list=None,                    # list of features to detect drift on
                                                         drift_threshold=None,                 # threshold from 0 to 1 for email alerting
                                                         latency=0,                            # SLA in hours for target data to arrive in the dataset
                                                         alert_config=alert_config)            # email addresses to send alert

完整示例可从 https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/work-with-data/datadrift-tutorial/datadrift-tutorial.ipynb 获取

DataDriftDetector 构造函数检索与工作区关联的现有数据偏移对象。

方法

backfill

在给定的指定开始和结束日期运行回填作业。

有关数据偏移回填运行的详细信息,请参阅 https://aka.ms/datadrift

注意:仅在基于数据集的 DataDriftDetector 对象上支持回填。

create_from_datasets

从基线表格数据集和目标时序数据集创建新 DataDriftDetector 对象。

delete

删除 DataDriftDetector 对象的计划。

disable_schedule

禁用 DataDriftDetector 对象的计划。

enable_schedule

创建计划以运行基于数据集的 DataDriftDetector 作业。

get_by_name

检索给定工作区和名称的唯一 DataDriftDetector 对象。

get_output

获取给定时间范围内特定 DataDriftDetector 的偏移结果和指标的元组。

list

获取指定工作区和可选数据集的 DataDriftDetector 对象列表。

注意:仅传入 workspace 参数将返回工作区中定义的所有 DataDriftDetector 对象。

run

运行单时间点数据偏移分析。

show

显示给定时间范围内的数据偏移趋势。

默认情况下,此方法显示最近 10 个周期。 例如,如果频率为按天,则显示最近 10 天。 如果频率为按周,则显示最近 10 周。

update

更新与 DataDriftDetector 对象关联的计划。

可选参数值可设置为 None,否则默认采用其现有值。

backfill

在给定的指定开始和结束日期运行回填作业。

有关数据偏移回填运行的详细信息,请参阅 https://aka.ms/datadrift

注意:仅在基于数据集的 DataDriftDetector 对象上支持回填。

backfill(start_date, end_date, compute_target=None, create_compute_target=False)

参数

名称 说明
start_date
必需

回填作业的开始日期。

end_date
必需

回填作业的结束日期(含)。

compute_target

可选 Azure 机器学习 ComputeTarget 或 ComputeTarget 名称。 如果未指定,DataDriftDetector 将创建一个计算目标。

默认值: None
create_compute_target

指示是否自动创建 Azure 机器学习计算目标。

默认值: False

返回

类型 说明
Run

DataDriftDetector 运行。

create_from_datasets

从基线表格数据集和目标时序数据集创建新 DataDriftDetector 对象。

static create_from_datasets(workspace, name, baseline_dataset, target_dataset, compute_target=None, frequency=None, feature_list=None, alert_config=None, drift_threshold=None, latency=None)

参数

名称 说明
workspace
必需

要在其中创建 DataDriftDetector 的工作区。

name
必需
str

DataDriftDetector 对象的唯一名称。

baseline_dataset
必需

用于与目标数据集进行比较的数据集。

target_dataset
必需

要为其运行临时或计划 DataDrift 作业的数据集。 必须是时序。

compute_target

可选 Azure 机器学习 ComputeTarget 或 ComputeTarget 名称。 如果未指定,DataDriftDetector 将创建一个计算目标。

默认值: None
frequency
str

可选频率,表示管道的运行频率。 支持“Day”、“Week”或“Month”。

默认值: None
feature_list

要对其运行数据偏移检测的可选白名单功能。 如果未指定 feature_list,则 DataDriftDetector 作业将对所有功能运行检测。 功能列表可以包含字符、数字、短划线和空格。 列表的长度必须小于 200。

默认值: None
alert_config

DataDriftDetector 警报的可选配置对象。

默认值: None
drift_threshold

启用 DataDriftDetector 警报的可选阈值。 该值必须介于 0 和 1 之间。 如果未指定值,则采用默认值 0.2。

默认值: None
latency
int

数据在数据集中的显示延迟时间(小时)。

默认值: None

返回

类型 说明

DataDriftDetector 对象。

例外

类型 说明
<xref:KeyError>, <xref:TypeError>, <xref:ValueError>

注解

使用基于数据集的 DataDriftDetectors,可以计算基线数据集(必须是 TabularDataset)和目标数据集(必须是时序数据集)之间的数据偏移。 时序数据集只是具有 fine_grain_timestamp 属性的 TabularDataset。 然后,DataDriftDetector 可以运行临时作业或计划作业,以确定目标数据集与基线数据集存在偏移。


   from azureml.core import Workspace, Dataset
   from azureml.datadrift import DataDriftDetector

   ws = Workspace.from_config()
   baseline = Dataset.get_by_name(ws, 'my_baseline_dataset')
   target = Dataset.get_by_name(ws, 'my_target_dataset')

   detector = DataDriftDetector.create_from_datasets(workspace=ws,
                                                     name="my_unique_detector_name",
                                                     baseline_dataset=baseline,
                                                     target_dataset=target,
                                                     compute_target_name='my_compute_target',
                                                     frequency="Day",
                                                     feature_list=['my_feature_1', 'my_feature_2'],
                                                     alert_config=AlertConfiguration(email_addresses=['user@contoso.com']),
                                                     drift_threshold=0.3,
                                                     latency=1)

delete

删除 DataDriftDetector 对象的计划。

delete(wait_for_completion=True)

参数

名称 说明
wait_for_completion

是否等待删除操作完成。

默认值: True

disable_schedule

禁用 DataDriftDetector 对象的计划。

disable_schedule(wait_for_completion=True)

参数

名称 说明
wait_for_completion

是否等待禁用操作完成。

默认值: True

enable_schedule

创建计划以运行基于数据集的 DataDriftDetector 作业。

enable_schedule(create_compute_target=False, wait_for_completion=True)

参数

名称 说明
create_compute_target

指示是否自动创建 Azure 机器学习计算目标。

默认值: False
wait_for_completion

是否等待启用操作完成。

默认值: True

get_by_name

检索给定工作区和名称的唯一 DataDriftDetector 对象。

static get_by_name(workspace, name)

参数

名称 说明
workspace
必需

创建 DataDriftDetector 的工作区。

name
必需
str

要返回的 DataDriftDetector 对象的名称。

返回

类型 说明

DataDriftDetector 对象。

get_output

获取给定时间范围内特定 DataDriftDetector 的偏移结果和指标的元组。

get_output(start_time=None, end_time=None, run_id=None)

参数

名称 说明
start_time
datetime, <xref:optional>

结果窗口的开始时间 (UTC)。 如果指定为 None(默认值),则使用最近的第 10 个周期的结果作为开始时间。 例如,如果数据偏移计划的频率为按天,则 start_time 为 10 天。 如果频率为按周,则 start_time 为 10 周。

默认值: None
end_time
datetime, <xref:optional>

结果窗口的结束时间 (UTC)。 如果指定为 None(默认值),则使用当前日期 UTC 作为结束时间。

默认值: None
run_id
int, <xref:optional>

特定的运行 ID。

默认值: None

返回

类型 说明

偏移结果列表以及单个数据集和列指标的列表的元组。

注解

根据运行的类型(临时运行、计划允许或者回填运行),此方法会针对某个时间范围或运行 ID 的指标返回偏移结果和指标的元组。

  • 若要检索临时运行结果,只有一种方法:run_id 应该为有效的 GUID。

  • 若要检索计划运行和回填运行结果,有两种不同的方法:向 run_id 分配有效的 GUID,或分配特定的 start_time 和/或 end_time(含),同时将 run_id 保留为 None。

  • 如果 run_idstart_timeend_time 在同一方法调用中不为 None,会引发参数验证异常。

注意:请指定 start_timeend_time 参数或 run_id 参数,但不能同时指定这两个参数。

对于相同的目标日期(目标日期指的是基于数据集的偏移的目标数据集开始日期),可能会有多个结果。 因此,必须识别并处理重复的结果。 对于基于数据集的偏移,如果结果针对相同的目标日期,则它们是重复的结果。 get_output 方法会按一个规则删除所有重复的结果,即始终选取最新生成的结果。

get_output 方法可用于检索特定时间范围(start_timeend_time 之间(含边界值))内计划运行的所有输出或部分输出。 还可通过指定 run_id 来限制单个临时运行的结果。

请使用以下指南,其有助于解释从 get_output 方法返回的结果:

  • 筛选原则为“重叠”,只要实际结果时间(基于数据集:目标数据集 [start date, end date])与给定 [start_time, end_time] 之间存在重叠,则会选取该结果。

  • 如果一个目标日期有多个输出(因为针对该日期执行过多次偏移计算),则默认情况下仅选取最新输出。

  • 假设存在多种类型的数据偏移实例,那么结果内容也可能有很多种。

对于基于数据集的结果,输出如下所示:


   results : [{'drift_type': 'DatasetBased',
               'result':[{'has_drift': True, 'drift_threshold': 0.3,
                          'start_date': '2019-04-03', 'end_date': '2019-04-04',
                          'base_dataset_id': '4ac144ef-c86d-4c81-b7e5-ea6bbcd2dc7d',
                          'target_dataset_id': '13445141-aaaa-bbbb-cccc-ea23542bcaf9'}]}]
   metrics : [{'drift_type': 'DatasetBased',
               'metrics': [{'schema_version': '0.1',
                            'start_date': '2019-04-03', 'end_date': '2019-04-04',
                            'baseline_dataset_id': '4ac144ef-c86d-4c81-b7e5-ea6bbcd2dc7d',
                            'target_dataset_id': '13445141-aaaa-bbbb-cccc-ea23542bcaf9'
                            'dataset_metrics': [{'name': 'datadrift_coefficient', 'value': 0.53459}],
                            'column_metrics': [{'feature1': [{'name': 'datadrift_contribution',
                                                              'value': 288.0},
                                                             {'name': 'wasserstein_distance',
                                                              'value': 4.858040000000001},
                                                             {'name': 'energy_distance',
                                                              'value': 2.7204799576545313}]}]}]}]

list

获取指定工作区和可选数据集的 DataDriftDetector 对象列表。

注意:仅传入 workspace 参数将返回工作区中定义的所有 DataDriftDetector 对象。

static list(workspace, baseline_dataset=None, target_dataset=None)

参数

名称 说明
workspace
必需

创建 DataDriftDetector 对象的工作区。

baseline_dataset

用于筛选返回列表的基线数据集。

默认值: None
target_dataset

用于筛选返回列表的目标数据集。

默认值: None

返回

类型 说明

DataDriftDetector 对象的列表。

run

运行单时间点数据偏移分析。

run(target_date, compute_target=None, create_compute_target=False, feature_list=None, drift_threshold=None)

参数

名称 说明
target_date
必需

评分数据的目标日期 (UTC)。

compute_target

可选 Azure 机器学习 ComputeTarget 或 ComputeTarget 名称。 如果未指定,则会自动创建计算目标。

默认值: None
create_compute_target

指示是否自动创建 Azure 机器学习计算目标。

默认值: False
feature_list

要对其运行数据偏移检测的可选白名单功能。

默认值: None
drift_threshold

启用 DataDriftDetector 警报的可选阈值。

默认值: None

返回

类型 说明
Run

DataDriftDetector 运行。

show

显示给定时间范围内的数据偏移趋势。

默认情况下,此方法显示最近 10 个周期。 例如,如果频率为按天,则显示最近 10 天。 如果频率为按周,则显示最近 10 周。

show(start_time=None, end_time=None)

参数

名称 说明
start_time
datetime, <xref:optional>

呈现时间范围的开始时间 (UTC)。 默认值 None 表示选取最近第 10 个周期的结果。

默认值: None
end_time
datetime, <xref:optional>

呈现数据时间范围的结束时间 (UTC)。 默认值 None 表示当天日期。

默认值: None

返回

类型 说明
dict()

所有数字的字典。 键为 service_name。

update

更新与 DataDriftDetector 对象关联的计划。

可选参数值可设置为 None,否则默认采用其现有值。

update(compute_target=Ellipsis, feature_list=Ellipsis, schedule_start=Ellipsis, alert_config=Ellipsis, drift_threshold=Ellipsis, wait_for_completion=True)

参数

名称 说明
compute_target

可选 Azure 机器学习 ComputeTarget 或 ComputeTarget 名称。 如果未指定该参数,DataDriftDetector 将创建一个计算目标。

默认值: Ellipsis
feature_list

要对其运行数据偏移检测的白名单功能。

默认值: Ellipsis
schedule_start

数据偏移计划的开始时间 (UTC)。

默认值: Ellipsis
alert_config

DataDriftDetector 警报的可选配置对象。

默认值: Ellipsis
drift_threshold

启用 DataDriftDetector 警报的阈值。

默认值: Ellipsis
wait_for_completion

是否等待启用/禁用/删除操作完成。

默认值: True

返回

类型 说明

self

属性

alert_config

获取 DataDriftDetector 对象的警报配置。

返回

类型 说明

一个 AlertConfiguration 对象。

baseline_dataset

获取与 DataDriftDetector 对象关联的基线数据集。

返回

类型 说明

基线数据集的数据集类型。

compute_target

获取附加到 DataDriftDetector 对象的计算目标。

返回

类型 说明

计算目标。

drift_threshold

获取 DataDriftDetector 对象的偏移阈值。

返回

类型 说明

偏移阈值。

drift_type

获取 DataDriftDetector 的类型,“DatasetBased”是目前唯一受支持的值。

返回

类型 说明
str

DataDriftDetector 对象的类型。

enabled

获取指示 DataDriftDetector 对象是否已启用的布尔值。

返回

类型 说明

布尔值;True 表示启用。

feature_list

获取 DataDriftDetector 对象的白名单功能列表。

返回

类型 说明

特征名称列表。

frequency

获取 DataDriftDetector 计划的频率。

返回

类型 说明
str

“Day”、“Week”或“Month”的字符串

interval

获取 DataDriftDetector 计划的间隔。

返回

类型 说明
int

时间单位的整数值。

latency

获取 DataDriftDetector 计划作业的延迟时间(小时)。

返回

类型 说明
int

表示延迟时间的小时数。

name

获取 DataDriftDetector 对象的名称。

返回

类型 说明
str

DataDriftDetector 名称。

schedule_start

获取计划的开始时间。

返回

类型 说明

计划开始时间的日期/时间对象 (UTC)。

state

表示 DataDriftDetector 计划的状态。

返回

类型 说明
str

“已禁用”、“已启用”、“已删除”、“禁用”、“启用”、“删除”、“失败”、“DisableFailed”、“EnableFailed”、“DeleteFailed”中的一个。

target_dataset

获取与 DataDriftDetector 对象关联的目标数据集。

返回

类型 说明

基线数据集的数据集类型。

workspace

获取 DataDriftDetector 对象的工作区。

返回

类型 说明

在其中创建 DataDriftDetector 对象的工作区。