基于LLM的数据漂移和异常检测

news2025/1/19 2:42:46

大型语言模型 (LLM) 的最新进展被证明是许多领域的颠覆性力量(请参阅:通用人工智能的火花:GPT-4 的早期实验)。 和许多人一样,我们非常感兴趣地关注这些发展,并探索LLM影响数据科学和机器学习领域的工作流程和常见实践的潜力。

在我们之前的文章中,我们展示了LLM使用 Kaggle 竞赛中的表格数据提供预测的潜力。 只需很少的努力(即数据清理和/或功能开发),我们基于LLM的模型就可以在几个竞赛参赛作品中获得百分之八十左右的分数。 虽然这与最好的模型相比并不具有竞争力,但所涉及的很少的努力使其成为一个有趣的额外预测工具和一个很好的起点。

本文解决了数据科学和机器学习工作流程的另一个常见挑战:漂移(drift)和异常检测(anomaly detection)。 机器学习模型是使用历史数据和已知结果进行训练的。 有一个默认的假设,即数据在未来将保持静止(例如,其分布特征不变)。 在实践中,这通常是一个站不住脚的假设。 由于多种原因,复杂系统会随着时间的推移而发生变化。 数据可能会自然地改变为新的模式(通过漂移),或者可能由于训练数据后出现新的异常而发生变化。 负责模型的数据科学家通常负责监控数据、检测漂移或异常,并做出与重新训练模型相关的决策。 这不是一项简单的任务。 已经开发出许多文献、方法和最佳实践来检测漂移和异常。 许多解决方案采用昂贵且耗时的努力来检测和减轻生产系统中存在的异常情况。

我们想知道:LLM能否减少漂移和异常检测方面的工作量?

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包

1、方法

本文提出了一种使用大型语言模型 (LLM) 嵌入、UMAP 降维、非参数聚类和数据可视化进行异常和漂移检测的新颖方法。 异常检测(有时也称为异常值检测或罕见事件检测)是使用统计、分析和机器学习技术来识别感兴趣的数据观察。

为了说明这种方法,我们使用 SciKit 学习包中提供的加州中型房屋价值数据集(© 2007-2023,scikit-learn 开发人员,BSD 许可证;原始数据源是 Pace、R. Kelley 和 Ronald Barry,“Sparse Spatial” 自回归”,《统计与概率快报》,第 33 卷,第 3 期,1997 年 5 月 5 日,第 291-297 页)。 我们通过采样和排列数据来合成小范围的异常数据。 然后,合成数据就很好地隐藏在原始(即“生产”)数据中。 我们进行了不同的实验,改变了异常点的比例以及“异常程度”——本质上就是我们期望找到异常的难度。 然后该程序试图识别那些异常值。 通常,这种内点检测具有挑战性,需要选择比较集、模型训练和/或启发式定义。

我们证明,LLM 模型方法可以检测包含少至 2% 数据的异常区域,准确度为 96.7%(误报率和漏报率大致相同)。 这种检测可以检测隐藏在现有分布内部的异常数据。 这种方法可以应用于生产数据,无需标记、手动分布比较,甚至不需要太多思考。 该过程完全不受参数和模型的影响,是异常值检测的有吸引力的第一步。

2、背景

模型可观察性的一个常见挑战是快速、直观地识别异常数据。 这些异常值可能是由于数据漂移(数据分布随时间的有机变化)或异常(覆盖预期分布的意外数据子集)而出现的。 异常可能由多种来源引起,但有两种非常常见。 第一个是(通常)对上游数据源的未经通知的更改。 数据消费者与数据生产者的联系越来越少。 计划内(和计划外)的更改不会传达给数据使用者。 第二个问题更加不诚实:对手在流程和系统中执行不良操作。 通常,数据科学家会对这些行为感兴趣。

一般来说,研究多变量数据的漂移方法存在许多限制其使用的挑战。 典型的方法是使用变分自编码器 (VAE)、降维或将原始未编码数据组合成向量。 这通常涉及对过去的异常进行建模、创建特征以及检查内部(内)一致性。 这些技术需要不断(重新)训练模型并拟合每个数据集。 此外,团队通常需要手动识别、设置和调整许多参数。 这种方法可能缓慢、耗时且昂贵。

在这里,我们将LLM应用于表格数据中的异常检测任务。 所演示的方法由于其易于使用而具有优势。 不需要额外的模型训练,降维使问题空间可以直观地表示,并且聚类产生异常聚类的候选者。 使用预先训练的LLM可以避免参数化、特征工程和专用模型训练的需求。 可插入性意味着LLM可以为数据科学团队开箱即用。

3、数据

在本示例中,我们使用 1990 年美国人口普查中的加州房屋价值(Pace 等人,1997 年),该数据可以在线找到,并包含在 SciKit-Learn Python 包中。 选择该数据集是因为其清洁度、连续/数字特征的使用以及一般可用性。 我们对类似的数据进行了实验。

注意:有关该过程的更完整示例,请参阅随附的 笔记本。

4、合成异常

与之前的研究一致,我们发现检测异常的能力受三个因素控制:异常观测值的数量、异常值的程度或这些观测值超出参考分布的数量,以及定义异常的维度数 。

第一个因素应该是显而易见的。 更多的异常信息可以使检测更快、更容易。 确定单个观察是否异常是一个挑战。 随着异常数量的增加,识别变得更加容易。

第二个因素,即离群程度,至关重要。 在极端情况下,异常可能会超出其变量的一个或多个允许范围。 在这种情况下,异常值检测是微不足道的。 更难的是那些隐藏在分布中间的异常(即“内点”)。 内点检测通常具有挑战性,因为许多建模工作都在尝试任何类型的系统检测。

最后一个因素是定义异常所使用的维度数。 换句话说,就是有多少变量参与了观察的异常性质。 在这里,维度的诅咒是我们的朋友。 在高维空间中,观察结果往往变得稀疏。 在多个维度上变化很小的异常集合可能会突然变得与参考分布中的观察结果相去甚远。 几何推理(以及任何各种多维距离计算)表明,受影响的维度越多,检测越容易,检测限越低。

在综合我们的异常数据时,我们影响了所有这三个变量。 我们进行了一项实验设计,其中:异常观测值的数量占总观测值的 1% 至 10%,异常集中在 0.50-0.75 分位数附近,受影响的变量数量为 1 至 4 个。

5、利用LLM进行异常和漂移检测

我们的方法使用提示让 LLM 提供有关每行数据的信息。 提示很简单。 对于每一行/观察,提示由以下内容组成:

“The <column name> is <cell value>. The <column name> is <cell value>. …”

对每一列执行此操作,为每一行创建一个连续提示。 有两点需要注意:

  • 无需为训练数据生成提示,只需针对进行异常检测的数据生成提示即可。
  • 严格来说没有必要询问观察结果是否异常(尽管这是需要进一步调查的主题领域)。

从表格数据创建的提示示例。 每行数据都被编码为单独的提示,并通过连接该行的每个单元格中的简单语句来制作。

一旦提供给LLM,模型的文本响应将被忽略。 我们只关心每个观察的嵌入(例如嵌入向量)。 嵌入向量至关重要,因为每个嵌入向量都提供了参考 LLM 训练的观察位置。 尽管神经网络模型的性质和复杂性掩盖了实际机制,但我们将LLM视为构建潜在响应面。 该表面包含了互联网规模的资源,包括了解房屋估价。 真实的观察结果——例如那些与学习内容相匹配的观察结果——位于响应表面上或附近; 异常值超出响应面。 虽然响应曲面在很大程度上是隐藏的伪影,但确定异常并不是学习曲面的问题,而只是识别相似值的集群。 真实的观察结果彼此接近。 异常观察结果彼此接近,但集合却截然不同。 确定异常只需分析这些嵌入向量即可。

LLM捕获数字和分类特征的结构。 上图显示了表格数据框的每一行以及映射到 LLM 生成的嵌入的模型预测。 LLM以一种根据之前接受的训练内容从特征创建拓扑表面的方式映射这些提示。 在上面的示例中,你可以看到数字字段 X/Y/Z 左侧为低值,右侧为高值。 

6、可视化:降维、聚类和异常识别

该欧几里德距离图粗略地指示了数据中是否存在异常。 图表右侧附近的凸起与数据中引入的合成异常一致。

UMAP 算法是一项重要的创新,因为它寻求保留几何形状,从而优化近距离观察保持近距离和远距离观察保持远处的情况。 降维后,我们应用聚类来查找密集、相似的聚类。 然后将它们与参考分布进行比较,参考分布可用于突出显示异常或漂移的簇。 大多数这些步骤都是无参数的。 最终目标是一组被识别为异常值的已识别数据点。

嵌入漂移:通过与参考分布进行比较来执行 UMAP 降维、聚类和自动(异常)聚类检测。 漂移或异常点会自动以红色突出显示,并可以排队进行进一步分析,包括利用人类反馈进行强化学习。

7、实验结果

我们探索了检测异常的各种条件,改变异常变量的数量、异常的比例和异常值的程度。 在这些实验中,我们能够检测到等于或超过数据 2% 的异常区域,即使值趋于接近分布中值(以中值的 +/- 5 个百分位数为中心)。 在所有五次重复实验中,该方法自动发现并识别了异常区域,并使其明显可见,如上一节所示。 在将单个点识别为异常簇的成员时,该方法的准确度为 97.6%,精确度为 84%,召回率为 89.4%。

7.1 结果总结

  • 异常分数:2%
  • Anom 分位数:0.55
  • 异常列:4
  • 准确率:97.6%
  • 精确率:84.0%
  • 召回率:89.4%

7.2 混淆矩阵

8、结束语

本文演示了如何使用预先训练的LLM来帮助从业者识别表格数据中的漂移和异常。 在对各种异常部分、异常位置和异常列进行测试期间,该方法在大多数情况下能够检测到集中在距变量值中位数 5 个百分位以内的数据中少至 2% 的异常区域。 我们并不声称这样的分辨率符合罕见事件检测的条件,但检测异常内点的能力令人印象深刻。 更令人印象深刻的是,这种检测方法是非参数的,快速且易于实施,并且基于视觉。

这种方法的实用性源自向LLM提供的基于表格的数据提示。 在训练期间,LLM在高维空间中绘制出可以用潜在嵌入表示的拓扑表面。 预测映射出的那些高维表面代表真实(训练)数据中的特征组合。 如果向LLM提供漂移或异常数据,这些数据会出现在流形上远离真实/真实数据的不同位置。

本博客中描述的方法可立即应用于对可观察性和数据治理进行建模,从而允许数据组织与组织制定服务级别协议(SLA)。 例如,只需很少的工作,组织就可以声称它将在首次发生的固定小时数内检测到包含 2% 数据量的所有异常。 虽然这看起来似乎不是一个很大的好处,但它限制了漂移/异常造成的损害程度,并且可能比许多组织今天取得的成果更好。 当这些数据集出现时,它可以安装在任何新的表格数据集上。 在此基础上,如果需要,组织可以努力提高灵敏度(降低检测限)并改进 SLA。


原文链接:基于LLM的异常检测 - BimAnt

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

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

相关文章

你的立身之本是什么?

去年发生的一切&#xff0c;大到疫情、政治经济形势、行业的萎靡和震荡&#xff0c;小到身边的跳槽、裁员、公司倒闭……似乎都在告诉我们&#xff1a; 当冲击到来的时候&#xff0c;它是不会提前跟你打招呼的。 接下来的10年&#xff0c;我们所面临的不确定性&#xff0c;比起…

技术精英求职必备:Java开发工程师简历制作全指南

投简历找工作嘛&#xff0c;这事儿其实就跟相亲差不多&#xff0c;得让对方一眼就看上你。 在这场职场的‘相亲’中&#xff0c;怎样才能让你的简历脱颖而出&#xff0c;成为HR眼中的理想‘对象’呢&#xff1f;来&#xff0c;我给你支几招&#xff0c;让你的简历更吸引人。 …

windows编程-系统编程入门

1.进程线程概念&#xff08;简略版&#xff09; 1.1 进程 1.1.1 概念 我们编写的代码只是一个存储在硬盘的静态文件&#xff0c;通过编译后就会生成二进制可执行文件&#xff0c;当我们运行这个可执行文件后&#xff0c;它会被装载到内存中&#xff0c;接着 CPU 会执行程序中…

除夕快乐(前端小烟花)

家人们&#xff0c;新的一年好运常在&#xff0c;愿大家在新的一年里得偿所愿&#xff0c;发财暴富&#xff0c;愿大家找到属于自己的那个公主&#xff0c;下面就给大家展示一下给公主的烟花 前端烟花 新的一年&#xff0c;新的挑战&#xff0c;愿我们不忘初心&#xff0c;砥砺…

HarmonyOS 开发学习笔记

HarmonyOS 开发学习笔记 一、开发准备1.1、了解ArkTs语言1.2、TypeScript语法1.2.1、变量声明1.2.2、条件控制1.2.3、函数1.2.4、类和接口1.2.5、模块开发 1.3、快速入门 二、ArkUI组件2.1、Image组件2.2、Text文本显示组件2.3、TextInput文本输入框组件2.4、Button按钮组件2.5…

备战蓝桥杯---搜索(完结篇)

再看一道不完全是搜索的题&#xff1a; 解法1&#xff1a;贪心并查集&#xff1a; 把冲突事件从大到小排&#xff0c;判断是否两个在同一集合&#xff0c;在的话就返回&#xff0c;不在的话就合并。 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace …

Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)

Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑&#xff01;仅 860K, 还不到 1M, 但却是功能强大&#xff01; V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…

放飞梦想,扬帆起航——1888粉丝福利总结

目录 1.祝福 2.准备 3.抽奖 4.制作 5.添加 6.成果 7.感谢 8.福利 9.祝福 1.祝福 马上就是除夕了&#xff0c;在这里提前预祝大家春节快乐&#xff0c;小芒果在这里给大家拜年了&#xff01; 2.准备 其实很早之前我就在幻想着哪一天我的粉丝量能突破1888&#xff0c;…

Redis -- 安装客户端redis-plus-plus

目录 访问reids客户端github链接 安装git 如何安装&#xff1f; 下载/编译、安装客户端 安装过程中可能遇到的问题 访问reids客户端github链接 GitHub - sewenew/redis-plus-plus: Redis client written in CRedis client written in C. Contribute to sewenew/redis-p…

【动态规划】【C++算法】2518. 好分区的数目

作者推荐 【动态规划】【前缀和】【C算法】LCP 57. 打地鼠 本文涉及知识点 动态规划汇总 LeetCode:2518. 好分区的数目 给你一个正整数数组 nums 和一个整数 k 。 分区 的定义是&#xff1a;将数组划分成两个有序的 组 &#xff0c;并满足每个元素 恰好 存在于 某一个 组中…

【QT学习十四】 文件目录操作

目录 一、概述 二、详解 1. QFile QFile 类中的一些静态方法&#xff1a; 使用示例&#xff1a; 注意事项&#xff1a; 2. QDir 成员函数 使用实例&#xff1a; 注意事项&#xff1a; 3. QFileInfo 成员函数 使用实例 4. QTemporaryFile 成员函数 使用实例 注…

医学考试搜题答案这7款足够解决问题 #笔记#知识分享#其他

搜题软件一般都是通过识别题目内容搜索出问题的答案&#xff0c;当识别内容不正确或搜索不到答案时&#xff0c;又得重新到其他软件进行重复的操作&#xff0c;很是麻烦。所以我们可以使用专业的识别工具&#xff0c;对题目内容进行识别&#xff0c;然后把提取出来的内容单独保…

企业内部知识库管理软件的终极指南:如何选择最适合你的工具?

知识库管理软件对于希望提高客户支持和组织效率的公司来说是一个强大的工具。在数字时代&#xff0c;拥有一个可靠的知识库系统对于快速准确地满足客户需求至关重要。在当今的技术条件下&#xff0c;知识库管理软件有很多选择&#xff0c;每个企业都应该仔细评估并选择最适合自…

Visio2007下载安装教程,保姆级教程,附安装包和工具

前言 Visio是负责绘制流程图和示意图的软件&#xff0c;便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流&#xff0c;可以促进对系统和流程的了解&#xff0c;深入了解复杂信息并利用这些知识做出更好的业务决策。帮助您创建具有专业外观的图表&#xff0c…

图像处理SoC的方案调研(视频编码器和DLA)

最近在公众号和粉丝交流&#xff0c;提到了图像处理SoC&#xff0c;包括的部分有CPU ISP 视频编码器 DLA axi/ahb/apb总线及外设&#xff0c;我觉得很有意思&#xff0c;值得学习和了解&#xff0c;尤其是视频编码器和DLA这两个概念。 1 视频编码器 视频编码器是一种可以…

内网穿透工具

1. nps-npc 1.1 简介 nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发&#xff0c;可支持任何tcp、udp上层协议&#xff08;访问内网网站、本地支付接口调试、ssh访问、远程桌面&#xff0c;内网dns解析等等……&#xff09;&#xff0c…

Makefile编译原理 make的隐性规则

一.makefile 中的同名目标 下面程序怎么执行&#xff1f;为什么&#xff1f; 实验1 &#xff1a;makefile 中出现同名目标时 .PHONY : all all : echo "command-1"all : echo "command-2"VAR : testall :echo "all : $(VAR)"mhrubuntu:~/work/…

春节:当代发展及创新传承

为了解中国传统节日——春节&#xff0c;2024年2月9日&#xff0c;曲阜师范大学计算机学院“古韵新声&#xff0c;格物致‘知’”实践队队员贾宣在山东省青岛市西海岸新区的商场中进行了街头调查&#xff0c;探究春节的发展与当代意义。 春节历史悠久&#xff0c;起源于早期人…

vue-内置组件-Suspense

Suspense (实验性功能) <Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化。 <Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌…

k8s 部署java应用 基于ingress+jar包

k8 集群ingress的访问模式 先部署一个namespace 命名空间 vim namespace.yaml kind: Namespace apiVersion: v1 metadata:name: ingress-testlabels:env: ingress-test 在部署deployment deployment是pod层一层封装。可以实现多节点部署 资源分配 回滚部署等方式。 部署的…