MLOps在金融产业:模型监控(资料漂移与特徵漂移)

线上模型的偏差漂移

Amazon SageMaker Clarify 偏差监控的功能可以帮助资料科学家和机器学习工程师定期监控偏差预测。这些报告可以在SageMaker Studio 中查看细节报告,也可以在Amazon CloudWatch 设置警报通知,当偏差超过某一个值的时候发送通知给相关人员。

这个数据和训练时候观察到的数据点会不太ㄧ样,因为上线的时候观察到的资料变化,可能是暂时性的,也可能是永久性的。举一个例子来说,假设训练模型的时候使用的贷款利率与现在即时的利率相差很多,可能岛直模型出现偏差。像是透过positive proportions in predicted labels (DPPL)来监视,指定值A是否落在允许范围之内。除了设定上下区间之外,也可以将检查的时间设定为每两天检查一次,或是不同的时间区间检查资料更新的状况。

具体来说,这个监控使用Normal Bootstrap Interval方法构造一个区间C=(c min ,c max) 使得 SageMaker Clarify 确信,在即时资料上如果计算出的真实偏差值很有可能包含在 C 这个范围中。现在,如果置信区间 C 与允许范围 A 重叠,SageMaker Clarify 会将其解释为“目前的资料分布的偏差度量值很可能落在允许范围内”。如果 C 和 A 不相交,则 SageMaker Clarify 确信偏差度量不在 A 中,并通知系统发出警报。就如下图所呈现的:


*图片来源:Amazon AI Fairness and Explainability Whitepaper

并透过以下三步骤,设置偏差偏移报告:

(1)创建偏差漂移基准
在启动偏差的监测工作,一开始的工作就是建立基准线。你可以从API当中看到,在此之前先准备好4个设定档:模型本身的设定档、资料本身的设定档、以及跟偏差有关的设定、加上要预测的模型的相关设定。设定档的细节就先不放上来了,大家可以自己到官方文件查询。

from sagemaker.model_monitor.model_monitoring import ModelBiasMonitor
model_bias_monitor = ModelBiasMonitor(
    role = role,
    sagemaker_session = sagemaker_session,
    max_runtime_in_seconds = 1800,
)
model_bias_monitor.suggest_baseline(
    model_config = model_config,
    data_config = model_bias_data_config,
    bias_config = model_bias_config,
    model_predicted_label_config = model_predicted_label_config,
)

(2)安排偏差漂移监控作业
承接上面我们初始化过了的model_bias_monitor,要帮他新增一个监控工作的排程。会需要刚刚的模型监控设定。并针对要监控的时间区间、端点名称、监控的资料储存路径、监控门槛(threshold)的设定。

model_bias_analysis_config = None
if not model_bias_monitor.latest_baselining_job:
    model_bias_analysis_config = BiasAnalysisConfig(
        model_bias_config,
        headers = all_headers,
        label = label_header,
    )
model_bias_monitor.create_monitoring_schedule(
    analysis_config = model_bias_analysis_config,
    output_s3_uri = s3_report_path,
    endpoint_input = EndpointInput(
        endpoint_name = endpoint_name,
        destination = "/opt/ml/processing/input/endpoint",
        start_time_offset = "-PT1H",
        end_time_offset = "-PT0H",
        probability_threshold_attribute = 0.8,
    ),
    ground_truth_input = ground_truth_upload_path,
    schedule_cron_expression = schedule_expression,
)

(3)检查资料偏差漂移的报告
接下来可以到Amazon SageMaker Studio里面就可以看到报表了。或者用python语法印出来,再从execution_summary里面看数据报告细节也可以。

schedule_desc = model_bias_monitor.describe_schedule()
execution_summary = schedule_desc.get("LastMonitoringExecutionSummary")

线上模型的特徵漂移

上面我们提到,资料本身应该要落在某一个信赖区间里面。但是这还不够,除了落在一样的区间里面之外,区间里面的资料分布也要很类似。举下面这个表格为例子:

大学录取假设情景

特徵 训练数据 新的资料
大考成绩 0.70 0.10
平均成绩 0.50 0.20
班级 0.05 0.70

假设资料的分布是这样,即便他们都落在0-1之间,但是实际上展现出来的特徵却是完全不同的。这样的行为,可以透过Amazon SageMaker Clarify 特徵监控可帮助资料科学家和 ML 工程师定期监控特徵漂移的状况。

除了为每个资料点的推理提供解释外,SageMaker Clarify 还提供 ML 模型的全局解释,帮助资料科学家从整体上理解模型的特徵。你可以透过以下3个指标观察SHAP值:

mean_abs – 所有实例的绝对 SHAP 值的平均值。
median – 所有实例的 SHAP 值的中位数。
mean_sq – 所有实例的平方 SHAP 值的平均值。

在这样的背景下,我们也是透过3个步骤来设定特徵漂移的监控工作:
(1)为部署的模型创建 SHAP 基准
这个步骤涉及资料输入、哪些资料是敏感的、如何预测以及模型及其训练後偏差指标。如何选择好的基准线?取决於今天你想从模型当中找到什麽样的故事,举例来说,在大学招生的案例下,你可能会想知道申请人的家乡、或者人口普查背景是否相似,这些背景会不会影响他们申请到学校等等。以最简单的方式,就是删除其中一个特徵,看看对模型预测的影响改变。然而其实特徵与预测的影响,并不一定都是这麽直接的,特徵之间可能彼此有关联,然後这些关联一起影响模型预测也有可能。因此SHAP是基於这样的概念,观察特徵与模型预测之间的相关联,然後再叠加上更严谨的计算去算出这些值。

和前面的范例码相似,会需要先初始化ModelExplainabilityMonitor,加上跟模型解释相关的设定档案。比较需要注意的是SHAPConfig要记得选择要用哪一个值mean_abs、median、mean_sq。

model_explainability_monitor = ModelExplainabilityMonitor(
    role = role,
    sagemaker_session = sagemaker_session,
    max_runtime_in_second = 1800,
)
shap_config = SHAPConfig(
    baseline = shap_baseline,
    num_samples = 100,
    agg_method = "mean_abs",
    save_local_shap_values = False,
)
model_explainability_monitor.suggest_baseline(
    data_config = model_explainability_data_config,
    model_config = model_config,
    explainability_config = shap_config,
)

(2)安排特徵漂移监控作业
和侦测偏差漂移的语法类似,只是将其更换成为前面初始化过的ModelExplainabilityMonitor。

model_explainability_analysis_config = None
if not model_explainability_monitor.latest_baselining_job:
    model_explainability_analysis_config = BiasAnalysisConfig(
        model_bias_config,
        headers = all_headers,
        label = label_header,
    )
model_explainability_monitor.create_monitoring_schedule(
    analysis_config = model_explainability_analysis_config,
    output_s3_uri = s3_report_path,
    endpoint_input = EndpointInput(
        endpoint_name = endpoint_name,
        destination = "/opt/ml/processing/input/endpoint",
        start_time_offset = "-PT1H",
        end_time_offset = "-PT0H",
        probability_threshold_attribute = 0.8,
    ),
    ground_truth_input = ground_truth_upload_path,
    schedule_cron_expression = schedule_expression,
)

(3)检查部署中特徵属性漂移的报告
接下来可以到Amazon SageMaker Studio里面就可以看到报表了。或者用python语法印出来,再从execution_summary里面看数据报告细节也可以。

schedule_desc = model_explainability_monitor.describe_schedule()
execution_summary = schedule_desc.get("LastMonitoringExecutionSummary")

漂移指标

在Amazon SageMaker里面,你可以透过以下指标监测不同的情境:

(1)预测标签中正比例的差异 (DPPL)
(2)不同的影响 (DI)
(3)有条件接受的差异 (DCAcc)
(4)条件拒绝 (DCR) 的差异
(5)召回差异 (RD)
(6)接受率差异 (DAR)
(7)拒绝率差异 (DRR)
(8)精度差(AD)
(9)待遇平等 (TE)
(10)预测标签中的条件人口统计学差异 (CDDPL)
(11)反事实翻转测试 (FT)

这些指标是根据你在不同场景的时候可以选择使用,比如说(1)衡量受欢迎的方面a和不受欢迎的方面d之间的正面预测比例的差异(2)与基於资格的另一个年龄组相比,贷款申请的接受率是否高於或低於预测?这两者使用的指标就会是不同的,关於这些指标的定义与应用情境,可参考 Reference [2]跟[3]。

Reference
[1]. SageMaker Document
[2]. Measure Posttraining Data and Model Bias
[3]. Fairness Measures for Machine Learning in Finance
[4]. Feature Attributions that Use Shapley Values
[5]. Monitor Bias Drift for Models in Production
[6]. Monitor Feature Attribution Drift for Models in Production


<<:  [Day_8]资料储存容器 (2) - 串列(list)_(1)

>>:  Day7 初探CFS scheduler (上)

My experience with Customer Obsession

Clients’ satisfaction is the priority while achiev...

Day 21 Arraylist

在Java程序设计中,有一个较为快速创造阵列的方法ArrayList,有别於固定大小的Array,A...

「Wordpress 外挂开发」代客下单最终章,观察经手人

加入 Autocomplete 原本是打算做email与公司的匹配,不过觉得在这个的逻辑上打转,基本...

【DAY 12】简单化、视觉化组织团队工作 - Planner

哈罗大家好~ 关於 SharePoint 功能其实还可以再说个五天八夜(?),但我想在善用云端工具提...

DAY 3 Big Data 5Vs – Volume(容量) - S3

如同软件需要硬体,资料分析的基石就是资料储存。在处理的过程中,资料(data)需要在长期或暂时性的储...