一文介绍数据和模型漂移(Drift):漂移检测示例

大家好,漂移(Drift)是机器学习中用来描述模型在生产环境中随着时间推移而性能逐步下降的现象,由很多原因引起,主要原因是随着时间推移输入数据(x)分布的变化和期望目标(y)之间的关系发生了变化。在使用机器学习模型时,漂移是一个很大的挑战,因为数据通常是动态的,不断变化的。本文将探讨模型发生漂移的原因、漂移的类型和漂移的检测及Python漂移检测示例。

1.漂移Drift

机器学习模型是基于过去的数据进行学习的,但在实际使用时,由于环境的变化,这些模型可能会渐渐失去准确性,就像是“过气”一样,这种现象被称为“漂移”。简单来说,就是模型原本学习了过去的规律,但是现在环境变了,导致它的预测能力变差。

举个例子,考虑一个用于预测公司证券的机器学习模型,它是基于历史数据进行训练的。如果我们使用来自相对稳定市场的数据来训练模型,那么模型可能在一开始表现得很好。但是,如果随着时间的推移,市场变得更加波动,那么模型可能无法再准确地预测证券,因为它所依赖的数据的统计特性已经发生了变化。

数据漂移可以被看作是导致模型漂移的原因之一,而模型漂移则是由数据漂移的影响而产生的结果。

数据漂移指的是用于新的数据相对于历史数据发生的数据分布发生了变化。这种变化可能是由于外部因素引起的,例如市场趋势的变化、用户行为的改变或者数据收集过程的变更。

模型漂移则是由于数据漂移引起的模型性能下降或者偏差的结果。当模型在实际应用中遇到数据漂移时,它可能会变得不再适用于新的数据分布,导致其预测能力下降或者产生误差。因此,数据漂移可以被视为导致模型漂移的根源,而模型漂移则是对数据漂移的反映和响应。

2.漂移的类型

让我们探讨两种不同类型的漂移:

  • 概念漂移Concept Drift(模型漂移Model Drift)

概念漂移或者模型漂移发生在模型设计的任务随着时间的推移而发生变化时。想象一下,一个机器学习模型被训练来根据电子邮件的内容检测垃圾邮件,如果人们收到的垃圾邮件类型发生了显著变化,模型可能就无法准确检测垃圾邮件了。概念漂移可以进一步分为四类,包括突发性漂移、渐进性漂移、增量漂移和循环概念(参见《概念漂移下的学习:综述》,Jie Lu等人)。

图片

来源https://arxiv.org/pdf/2004.05785.pdf

  • 数据漂移(Data Drift)

数据漂移,也称为协变量漂移,发生在输入数据的分布随时间发生变化时。举个例子,考虑一个机器学习模型,该模型根据客户的年龄和收入预测其购买产品的可能性。如果客户的年龄和收入分布随时间发生显著变化,那么模型可能无法准确预测购买的可能性。

了解概念漂移和数据漂移,并采取措施防止或减轻它们的影响是很重要的。一些解决漂移的策略包括持续监控和评估模型的性能,使用新数据更新模型,以及使用更能够抵御漂移的机器学习模型。

3.检测漂移

可以通过两种方式来检测漂移:

  1. 基于机器学习模型的方法:利用机器学习模型来检测传入的输入数据是否发生漂移。

  2. 统计检验:有许多统计检验可用于检测数据漂移,主要分为三类:

  • 顺序分析方法:通过连续的时间序列分析来检测数据的统计特性变化。这些方法可以实时监测并在漂移发生时立即检测到。

  • 自定义漂移检测模型:构建专门用于检测漂移的自定义模型,经过历史数据训练,能够识别与预期模式的偏差。

  • 时间分布方法:利用统计技术比较不同时间点收集到的数据的概率分布。常见的方法包括opulation Stability Index、KL散度、JS散度、KS检验和Wasserstein度量。这些方法量化了分布之间的差异,能够根据这些分布随时间的变化来检测漂移。

4.检测数据漂移的算法

  • Kolmogorov-Smirnov(K-S)检验:K-S检验是一种非参数统计检验,用于确定两组数据是否来自同一分布。通常用于测试数据样本是否来自特定总体,或者比较两个样本以确定它们是否来自同一总体。在这个检验中,零假设是分布相同。如果拒绝了这个假设,表明模型存在漂移。K-S检验是比较数据集并确定它们是否来自同一分布的有用工具。

  • Population Stability Index:PSI是一种用于测量两个样本或随时间变化中变量分布变化程度的工具。通常用于监测PSI特征的变化并识别机器学习模型性能可能存在的问题。PSI最初是为了监测风险评分卡中分数分布的变化而开发的,但现在用于检查所有与模型相关的属性的分布变化,包括因变量和自变量。较高的PSI值表明两个数据集中变量的分布存在显著差异,这可能意味着模型存在漂移。

  • Page-Hinkley方法:Page-Hinkley方法是一种用于检测一系列数据随时间变化的均值的统计方法。通常用于监测机器学习模型的性能并检测数据分布中可能表明模型漂移的变化。要使用Page-Hinkley方法,首先需要定义阈值和决策函数。阈值是在此值之上被认为均值变化显著的值,决策函数是一种返回值为1表示检测到变化,返回值为0表示未检测到变化的函数。Page-Hinkley方法是一种简单有效的检测数据系列均值随时间变化的方法。它特别适用于检测可能在查看数据时不会立即显现的均值的小变化。然而,重要的是要仔细选择阈值和决策函数,以确保该方法对数据变化具有足够的敏感性,但不至于太敏感以至于产生错误警报。

5.Python漂移检测实现

漂移检测将使用 Evidently 来检测漂移。Evidently 是一个开源的 Python 库,专为与机器学习工作的数据科学家和工程师设计,帮助从验证到生产阶段测试、评估和跟踪模型的性能。

加载包和引入数据:

# import libraries
import pandas as pd
import numpy as np
from sklearn import datasets
from evidently.report import Report
from evidently.metrics import DataDriftTable
from evidently.metrics import DatasetDriftMetric# create ref and cur dataset for drift detection
adult_data = datasets.fetch_openml(name='adult', version=2, as_frame='auto')
adult = adult_data.frameadult_ref = adult[~adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]
adult_cur = adult[adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]adult_cur.iloc[:2000, 3:5] = np.nan
adult_cur

图片

生成数据迁移(Drift)报告:

data_drift_dataset_report = Report(metrics=[DatasetDriftMetric(),DataDriftTable(),    
])data_drift_dataset_report.run(reference_data=adult_ref, current_data=adult_cur)
data_drift_dataset_report

图片

综上所述,数据和模型漂移对机器学习形成严重挑战,了解漂移原因、实施有效监测实践可保持模型准确可靠。监控模型性能、使用漂移检测、定期更新数据重新训练是减轻风险的最佳实践,积极监控漂移确保机器学习系统持续为组织创造价值。MLOps 的概念对数据科工程师和领导者至关重要,这使得模型从jupyter试验环境转移到生产环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP MySQL图解学习指南:开启Web开发新篇章

PHP曾经是最流行的Web开发语言,许多世界领先的网站(如Facebook、维基百科和WordPress)都是用它编写的。PHP运行在Web服务器端,通过使用存储在MySQL数据库中的数据,使得网站可以为每一位访问者显示不同的定制页面。书中采用简单、直观的图示化…

STL-priority_queue的使用及其模拟实现

优先级队列(priority_queue)默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中的元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。 注意&#xff1…

【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA

文章目录 一、内容介绍二、内页插图三、作者简介四、前言/序言五、目录 一、内容介绍 《AI数据处理实战108招:ChatGPTExcelVBA》通过7个专题内容、108个实用技巧,讲解了如何运用ChatGPT结合办公软件Excel和VBA代码实现AI办公智能化、高效化。随书附赠了…

NDIS驱动开发-NET_BUFFER体系

网络数据由通过网络发送或接收的数据包组成。 NDIS 提供数据结构来描述和组织此类数据。 NDIS 6.0 及更高版本的主要网络数据结构包括: NET_BUFFERNET_BUFFER LISTNET_BUFFER_LIST_CONTEXT 它们之间的关系如下: 在 NDIS 6.0 及更高版本中, NET_BUFFER …

串口调试助手中文乱码 解决方案

输出乱码 一般,当串口调试助手输出乱码时,可能有以下几个原因: 波特率设置错误:串口通信需要保证发送和接收的设备使用相同的波特率。请检查串口调试助手和目标设备的波特率设置是否一致。 数据位、停止位或校验位设置错误&…

【目标解算】相机内外参数详细解读+坐标系转换

一、相机参数介绍 1.1 相机内参矩阵 概念:内参矩阵用于描述相机的内部参数,它包含了相机的焦距、主点坐标和图像的畸变等信息。内参矩阵的形式通常为一个3x3的矩阵,常用表示为K。内参矩阵可以将相机坐标系中的三维点映射到图像平面上的二维…

linux安装mysql后,配置mysql,并连接navicat软件

Xshell连接登陆服务器 输入全局命令 mysql -u root -p 回车后,输入密码,不显示输入的密码 注意mysql服务状态,是否运行等 修改配置文件my.cnf,这里没找到就找my.ini,指定有一个是对的 find / -name my.cnf 接下…

GPT-4你了解多少呢

一、引言 在人工智能(AI)领域,自然语言处理(NLP)技术一直备受关注。近年来,随着深度学习技术的飞速发展,NLP领域也取得了显著进步。GPT-4,作为OpenAI公司最新发布的自然语言处理模型…

京东二面:为什么Netty要造FastThreadLocal?

FastThreadLocal 从字面意义上来看,它是“Fast”“ThreadLocal”的结合体,寓意为快速的 ThreadLocal。那么,问题来了,Netty 为什么要再造一个 FastThreadLocal?FastThreadLocal 运行快的原因是啥?除了快之外…

linnux上安装php zip(ZipArchive)、libzip扩展

安装顺序: 安装zip(ZipArchive),需要先安装libzip扩展 安装libzip,需要先安装cmake 按照cmake、libzip、zip的先后顺序安装 下面的命令都是Linux命令 1、安装cmake 确认是否已安装 cmake --version cmake官网 未安装…

【Paddle】稀疏计算的使用指南 稀疏ResNet的学习心得 (2) + Paddle3D应用实例稀疏 ResNet代码解读 (1.6w字超详细)

【Paddle】稀疏计算的使用指南 & 稀疏ResNet的学习心得 Paddle3D应用实例稀疏 ResNet代码解读 写在最前面一、稀疏格式简介1. COO(Coordinate Format)2. CSR(Compressed Sparse Row Format) 二、Paddle稀疏张量支持1. 创建 C…

SQL刷题笔记day6——转战LeetCode

1 第二高的薪水 ​ 我的代码: SELECT Salary SecondHighestSalary FROM Employee ORDER BY Salary DESC LIMIT 1, 1 我的代码不满足示例2的情况:如果没有第 2 高的薪资,即表里可能只有一条记录,这个解答会被评测为 Wrong Answ…

整理了六个正规靠谱的兼职赚钱软件,适合普通人做的兼职副业~

​随着互联网时代的到来,越来越多的人选择通过互联网赚钱。在这篇文章中,我们将探讨一些可以在网上长期赚钱的方法。 在网络上面其实有很多的赚钱方法,尽管方法很多,但是对于一些网络新手,刚进入互联网圈子不久的伙伴…

智慧校园建设的重要性有哪些

在21世纪的数字化浪潮中,教育领域正经历一场深刻的变革。智慧校园,这一概念如同一股清风,席卷全球的高等教育机构,以其创新的科技应用和教育理念,重塑着学习的未来。面对信息时代的挑战,传统校园模式是否还…

html+CSS部分基础运用9

项目1 参会注册表 1.设计参会注册表页面,效果如图9-1所示。 图9-1 参会注册表页面 项目2 设计《大学生暑期社会实践调查问卷》 1.设计“大学生暑期社会实践调查问卷”页面,如图9-2所示。 图9-2 大学生暑期社会调查表页面 2.调查表前导语的…

Win11有些exe双击后无反应的解决办法

现象 双击某些exe文件之后,小圆圈转了两下之后就消失,然后没任何反应。用回车反复启动也是一样的现象。 由于截图没法截图到鼠标,所以没法放出截图。 我电脑出现上述现象的软件有: 1.纸飞机调试助手 2.SOC Programming Tool 对…

3.4 移动机器人工作空间(摘自自主移动机器人导论2)

对于一个机器人来说,机动性等效于它的控制自由度。但是,机器人是处于某种环境的,因而下一个问题是把我们的分析放到环境之中。 我们关心机器人用它可控制的自由度在环境中定位它本身的方法。例如,考虑 Ackerman 车辆或汽车&#…

Docker容器快速入门(1)

目录 1.Docker 简介 2.跟普通虚拟机的对比 2.打包、分发、部署 Docker主要理念:一次封装(打包)随处运行(部署) 4.Docker 部署的优势 5.Docker 通常用来做什么 6.重要概念:镜像、容器、仓库 Docker 官方…

使用ssh连接ubuntu

一、下载连接工具 常见的连接工具右fianlshell、xshell等等。在本文章中使用的finalshell,工具可以去官网上下载,官网下载。 二、Ubuntu中配置shh 1、使用下面指令更新软件包(常用于下载安装或更新软件时使用,更新到最新的安装…

红苹果的圆度、直径大小标定

function fruitImageProcessingGUI% 创建主窗口和控件mainFigure figure(Units, normalized, Position, [0.3, 0.3, 0.4, 0.4]);instructionText uicontrol(Style, text, String, 请点击按钮执行相应的图像处理步骤, ...Units, normalized, Position, [0.1, 0.7, 0.8, 0.2], …