【机器学习】Kullback-Leibler散度实现数据监控

news2024/11/16 1:38:54

https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence

一、说明

        本篇叙述了KL 散度的数学、直觉和如何实际使用;以及它如何最好地用于过程监测。Kullback-Leibler 散度度量(相对熵)是信息论中的一种统计测量方法,通常用于量化一个概率分布与参考概率分布之间的差异。

        虽然 KL 散度很受欢迎,但它有时会被误解。在实践中,有时也很难知道何时使用一种统计距离检查而不是另一种。这篇博文介绍了如何使用 KL 散度、它在实践中的工作原理,以及何时应该和不应该使用 KL 散度来监控漂移。

二、背景知识

2.1 散度和距离的关系

        统计模型的度量方法,因为部分满足距离空间的条件,因而不能叫距离,叫散度。

        在统计学、概率论和信息论中,统计距离量化了两个统计对象之间的距离,可以是两个随机变量,也可以是两个概率分布或样本,也可以是单个样本点与总体或总体之间的距离。更广泛的点样本。

        总体之间的距离可以解释为测量两个概率分布之间的距离,因此它们本质上是概率测量之间距离的测量。当统计距离度量与随机变量之间的差异相关时,这些可能具有统计相关性,[1] 因此这些距离与概率度量之间的距离度量没有直接关系。同样,衡量随机变量之间的距离可能与它们之间的依赖程度有关,而不是与它们各自的值有关。

        统计距离度量通常不是度量,并且它们不必是对称的。某些类型的距离度量(概括平方距离)被称为(统计)散度。

2.2 如何计算 KL 散度?

        KL散度(Kullback-Leibler divergence)也称为相对熵,是用来比较两个概率分布的差异性的度量。用KL散度来衡量两个概率分布之间的差异,可以用于模型选择、特征选取、模型融合等领域。KL散度是非对称的,也就是说,D_{KL}(P||Q) \neq D_{KL}(Q||P)。 KL散度的公式如下:

         D_{KL}(P||Q) = \sum_{i}P(i)\log\frac{P(i)}{Q(i)}

        其中, P(i) 、 Q(i) 分别表示事件i在两个概率分布P和Q中的概率。 KL散度是一个非负的实数,当且仅当两个概率分布完全相同时,KL散度为0。 KL散度越大,说明两个分布之间差异越大。

        KL 散度是一种非对称指标,用于衡量两个分布所代表的信息的相对熵或差异。它可以被认为是测量两个数据分布之间的距离,显示两个分布之间的差异程度。

        KL 散度同时存在连续形式

        以及 KL 散度的离散形式:

        在模型监控中,大多数从业者几乎专门使用 KL 散度的离散形式,并通过数据分箱获得离散分布。 KL 散度的离散形式和连续形式确实随着样本数和 bin 限制移动到无穷大而收敛。对于接近连续形式的 bin 数量,存在最佳选择方法。在实践中,箱的数量可能远远小于上述数字所暗示的数量 - 并且如何创建这些箱来处理 0 个样本箱的情况实际上比其他任何事情都更重要(未来的代码帖子将解决如何处理自然为零垃圾箱)。

三、KL散度如何用于模型监控 

        在模型监控中,KL 散度用于监控生产环境,特别是围绕特征和预测数据。 KL 散度用于确保生产中的输入或输出数据不会从基线发生巨大变化。基线可以是数据的训练生产窗口或训练或验证数据集。

        对于接收延迟的地面事实以与生产模型决策进行比较的团队来说,漂移监控特别有用。这些团队可以依靠预测和特征分布的变化作为性能的代理。

        KL 散度通常独立应用于每个特征;它不是被设计为协变特征度量,而是一个显示每个特征如何独立于基线值的指标。

        上面以橙色条纹显示的 p(x) 是参考或基线分布。最常见的基线是生产数据的跟踪窗口或训练数据集。每个 bin 都会对 KL 散度产生附加贡献。这些箱加起来就是总的百分比分布。

✏️ 注意:有时,非实践者有一个有点过于热心的目标,即完善捕获数据变化的数学。在实践中,重要的是要记住,实际数据在生产中一直在变化,并且许多模型可以很好地扩展到这些修改后的数据。使用漂移指标的目标是拥有可靠、稳定且非常有用的指标来进行故障排除

四、KL 散度是不对称度量吗?

        是的。如果你交换基线分布 p(x) 和样本分布 q(x),你会得到一个不同的数字。作为一个非对称指标有许多缺点,因为团队使用 KL 散度来解决数据模型比较问题。有时,团队希望在故障排除工作流程中将比较基线替换为不同的分布,并且 A/B 与 B/A 不同的指标可能会使比较结果变得困难。

        这是 Arize(全面披露:我是 Arize 的联合创始人)等模型监控工具默认使用群体稳定性指数 (PSI)(KL 散度的对称推导)作为用于分布模型监控的主要指标之一的原因之一。

五、连续数值特征和分类特征之间的差异

KL 散度可用于衡量数值分布和分类分布之间的差异。

5.1 数值属性

        对于数值分布,数据根据截止点、箱大小和箱宽度分为箱。分箱策略可以是均匀分箱、五分位数和复杂的策略组合,并且确实会在很大程度上影响 KL 散度。

5.2 分类属性(Categorical)

        KL 散度的监控跟踪分类数据集中的大分布变化。在分类特征的情况下,通常存在基数太大以至于度量没有多大用处的大小。理想的大小是大约 50-100 个唯一值——因为一个分布具有更高的基数,两个分布有多大不同以及它是否真的重要的问题变得混乱。

5.3 高基数

        在高基数特征监控的情况下,开箱即用的统计距离通常效果不佳 - 相反,我们通常推荐两种选择:

  1. 的 嵌入:在某些高基数情况下,正在使用的值(例如用户 ID 或内容 ID)已用于在内部创建嵌入。嵌入漂移监控可以提供帮助。
  2. 纯高基数分类:在其他情况下,模型将输入编码到一个大空间,只需监控 KL 散度的前 50-100 个顶级项目并将所有其他值作为“其他”可能会很有用。

        最后,有时您想要监控的内容非常具体,例如一段时间内新值或分箱的百分比。这些可以通过数据质量监视器进行更具体的设置。

六、示例 

         以下是一组用用示例:

        想象一下,我们有一个预测信用卡欺诈的模型的收费金额的数字分布。该模型是使用上图所示的训练基线构建的。我们可以看到费用的分布发生了变化。有许多关于阈值的行业标准,我们实际上建议使用生产跟踪值来设置自动阈值。生产中有很多示例 <> 的固定设置没有意义。

七、KL 散度背后的直觉

        重要的是要对指标和基于分布变化的指标变化有一些直觉。

        上面的示例显示了从一个分类箱移动到另一个分类箱的情况。将“医疗”作为特征(贷款收益的使用)输入的预测从 2% 增加到 8%,而将“假期”作为输入的预测从 23% 下降到 17%。

        在此示例中,与“医疗”相关的 KL 散度分量为 -0.028,小于“假期”百分比移动的分量 0.070。

        一般来说,减少百分比并将其移向 0 的移动将对该统计数据产生更大的影响,相对于百分比的增加。

        相对于行业标准数字 0.2 获得较大移动的唯一方法是将 bin 向下移动到 0。在本例中,将 bin 从 9% 移动到 0.5% 会使 KL 散度移动很大。

        这是一个电子表格,供那些想要使用和修改这些百分比以更好地理解直觉的人使用。值得注意的是,这种直觉与 PSI 有很大不同。

八、结论

        如果您正在考虑使用 KL 散度来测量漂移,请务必记住以下几点。首先,大多数从业者发现最简单的方法是使用 KL 散度的离散形式,并通过对数据进行分箱来获得离散分布(更多关于分箱挑战的内容将在以后的文章中介绍)。其次,虽然了解 KL 散度背后的直觉和数学很重要,但有时其他指标(例如 PSI(KL 散度的对称推导))或方法可能更有用,具体取决于您的用例。

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

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

相关文章

深入理解Dockerfile

一、是什么 Dockerfile 是一个用来构建镜像的文本文件&#xff0c;文本内容包含了一条条构建镜像所需的指令和说明。把镜像比喻成一个软件那么DockerFile就相当于是软件的配置文件。具体的内容可参考[官方网站](Dockerfile reference | Docker Documentation。 二、能做什么 通…

密码学中的SM2

目录 概述 功能 密钥生成 基点G的生成 模数p 密钥生成过程 加解密 加密过程&#xff1a; 解密过程&#xff1a; 数字签名 概述 对第5步r的计算方式分析 对第6步s的计算方式分析 加密模式 优缺点 论文和研究方向推荐 论文 研究方向 概述 SM2是中国密码学算法…

qt 时间编程之时钟

这里写目录标题 开启time格式自动 QTIM打点 qtime qt的时间类 qtimer qt的定时类 头文件包含以及定义 #include<QTime> #include<QTimer>QTime * time; QTimer * timer;开启 右键槽 timer start&#xff08;50&#xff09; 到达50毫米的时候会触发 time out信号…

Unreal 5 实现场景环境控制组件

我在场景中发现了一个环境控制器&#xff0c;这个场景实现了雨天天气和晴天风沙天气&#xff0c;接下来我分析一下这个天气控制器是如何实现。 实现流程&#xff1a; 将环境控制器拖入场景&#xff0c;在配置项上面设置相应的雾&#xff0c;主光源&#xff0c;天空光。在环境控…

Spring Cloud Alibaba-全链路灰度设计

文章目录 灰度发布概念灰度发布架构Spring Cloud Alibaba技术架构下的灰度发布实现基础设计HttpHeader设计 Spring Cloud Gateway改造Spring Cloud Gateway实现灰度发布过滤器 自定义Loadbalancer微服务注册元信息修改自定义LoadBalancer使用 测试代码放到了github上[地址]() 灰…

STM32F4_CAN详解

目录 1. CAN简介 2. CAN协议的物理层 2.1 CAN协议中的差分信号 3. CAN协议的协议层 3.1 CAN的报文种类及结构 4. STM32的CAN外设 4.1 CAN框图 5. CAN相关结构体 6. CAN相关寄存器 7. 硬件设计 7.1 TJA1050芯片 8. 库函数配置CAN初始化 9. 实验代码 9.1 main.c 9…

SpringBoot问题-----------可以同时处理多少个请求

SpringBoot之可以同时处理多少个请求 SpringBoot的运行方式springBoot中tomcat的位置最小、最多工作线程数最大连接数等待数 SpringBoot的运行方式 SpringBoot项目中内嵌了tomcat 程序的运行就是通过tomcat来实现的&#xff1b;springBoot可以同时处理多少个请求其实就是在说 …

图像生成—使用GANs给出代码示例

文章目录 图像生成简单介绍—使用GANs给出代码示例1. 什么是生成对抗网络&#xff08;GANs&#xff09;2. 准备数据集3. 构建生成器和判别器4. 训练GAN模型5. 生成新图像6. 总结 图像生成简单介绍—使用GANs给出代码示例 图像生成是指使用计算机算法生成图像的过程。这些图像可…

C++ | 多线程使用vector

多线程使用vector 文章目录 多线程使用vector场景描述原因分析解决代码测试不扩容和提前扩容 size 与 capacity 变化欢迎关注公众号【三戒纪元】 场景描述 最近在看代码优化&#xff0c;看到有这样的代码&#xff1a; std::vector<int> valid_indices;void SimbaSegmen…

APP测试面试题快问快答(五)

21. App自动化你用的什么工具&#xff1f; 框架&#xff1a;Appium 编译环境和工具&#xff1a;python3.7和PyCharm 环境&#xff1a;Android sdk 第三方模拟器&#xff1a;夜神、蓝叠等模拟器 定位工具&#xff1a;uiautomatorviewer 实时日志查看&#xff1a;ddms 22.…

Tapdata 重磅更新已就绪!全托管云服务上线,应用场景再扩展

继 5 月举办的 「连接 1 次孤岛&#xff0c;服务 N 个场景」主题产品发布会后&#xff0c;Tapdata Live Data Platform 现已实现功能特性的全面升级&#xff0c;并基于自身产品能力积极探索在应用场景层面的落地实践及无限可能。 在去年 6 月的 Tapdata 2.0 发布会上&#xff…

Threejs实现数字人3D粽子

个人主页&#xff1a; 左本Web3D&#xff0c;更多案例预览请点击》 在线案例 个人简介&#xff1a;专注Web3D使用ThreeJS实现3D效果技巧和学习案例 &#x1f495; &#x1f495;积跬步以至千里&#xff0c;致敬每个爱学习的你。喜欢的话请三连&#xff0c;有问题请私信或者加微…

美国访问学者的父母如何申请探亲签证?

对于美国访问学者的父母来说&#xff0c;申请探亲签证是能够让他们在美国与子女团聚的重要途径。下面是知识人网小编整理的一些关于如何申请探亲签证的基本步骤和要点&#xff0c;希望对您有所帮助。 第一步&#xff1a;了解签证类型 在开始申请探亲签证之前&#xff0c;父母需…

【增值税发票识别 OCR】如何实现自动化发票管理

导言 在现代商业环境中&#xff0c;管理和处理大量的增值税发票数据是一项繁琐而重要的任务。传统的手动处理方法既费时又容易出错&#xff0c;而使用增值税发票识别OCR API可以实现自动化的发票管理&#xff0c;大大减少人工处理的工作量。本文将介绍如何利用增值税发票识别O…

Hadoop --- HDFS介绍

HDFS 全称是Hadoop Distributed File System hadoop分布式&#xff08;cluser&#xff09;文件存储系统。适合一次写入&#xff0c;多次读出的场景。 HDFS不需要单独安装&#xff0c;安装Hadoop的时候带了HDFS系统。 Hadoop安装可以参考&#xff1a; 有基础的&#xff0c;已…

轻松了解OPC:实时数据通信领域的必备神器!

OPC简介 OPC&#xff08;OLE for Process Control&#xff0c;进程控制对象连接&#xff09;是一种在工业自动化领域中被广泛使用的技术&#xff0c;它允许不同厂商的自动化设备之间进行通信和数据交换。 OPC技术最早是由美国的软件公司OPC Foundation推出的&#xff0c;它通…

【jsDelivr】jsDelivr - 一个免费、快速、可靠的为JS和开源项目服务的CDN

文章目录 jsDelivr 简介jsDelivr 工作原理 jsDelivr加速域名如下cdn.jsdelivr.net 2023/06/21 域名解析结果fastly.jsdelivr.net 2023/06/21 域名解析结果gcore.jsdelivr.net 2023/06/21 域名解析结果test1.jsdelivr.net 2023/06/21 域名解析结果 仓库拓展 - 其他CDNnpmESMGitH…

nginx nginx-module-vts 监控模块

nginx nginx-module-vts 监控模块 大纲 nginx-module-vts 安装nginx-module-vts 配置监控字段总结配置参数总结vhost_traffic_status_filter_by_host 使用vhost_traffic_status_filter_by_set_key 使用 nginx-module-vts 安装 nginx-module-vts 可以实现对nginx 各个虚拟主…

接口测试是什么?如何测试?

扫盲内容&#xff1a; 1.什么是接口&#xff1f; 2.接口都有哪些类型&#xff1f; 3.接口的本质是什么&#xff1f; 4.什么是接口测试&#xff1f; 5.问什么要做接口测试&#xff1f; 6.怎样做接口测试&#xff1f; 7.接口测测试点是什么&#xff1f; 8.接口测试都要掌…

在Linux系统实现服务器端和客户端的多线程并发通信

先导知识&#xff1a; 在Linux系统实现服务器端和客户端的套接字通信_小梁今天敲代码了吗的博客-CSDN博客 线程同步&#xff08;一&#xff09;_小梁今天敲代码了吗的博客-CSDN博客 线程同步&#xff08;二&#xff09;_小梁今天敲代码了吗的博客-CSDN博客 线程同步&#x…