用Energy Distance量化多元分布差异:一种统计学方法

Energy Distance是一种度量多元分布差异的统计方法,可捕捉变量间联合关系。适用于数据漂移检测、A/B测试等。

原文标题:Energy Distance:度量两个多元分布差异的统计方法

原文作者:数据派THU

冷月清谈:

本文介绍了Energy Distance,一种用于衡量两个多元概率分布差异程度的统计指标。与传统的单变量分析相比,Energy Distance能够捕捉变量间联合关系的变化,适用于数据漂移检测、A/B测试样本一致性验证等场景。其核心思想是,通过计算跨分布数据点对之间的期望欧几里得距离(交叉距离)与同一分布内部数据点对之间的期望欧几里得距离(组内距离),来量化两个分布的分离程度超出各自内部自然分离程度的幅度。配合置换检验,Energy Distance可以提供具有统计意义的推断,避免仅依赖视觉直觉。但需要注意的是,Energy Distance对局部区域,特别是高维空间中样本稀疏的尾部,敏感度有限,需要结合其他方法进行补充验证。

怜星夜思:

1、Energy Distance提到高维场景下,欧几里得距离本身的区分能力会随维度增加而衰减,这一点会影响Energy Distance的表现。除了文章中提到的结合局部密度估计或分区域检验等方法做补充验证外,大家还有什么其他应对高维数据区分度下降的方案吗?
2、文章提到Energy Distance可以用于A/B测试中的样本一致性验证,除了验证样本的一致性,大家觉得它在A/B测试中还有哪些潜在的应用场景?
3、文章提到Energy Distance对局部区域敏感度有限,大家有什么好的方法来识别和处理这些局部区域的分布差异?

原文内容

图片
来源:DeepHub IMBA
本文约1500字,建议阅读5分钟
训练集和测试集如果来自不同的分布,会怎样?


类似的问题不是没遇到过只是语境不同,比如说模型上次构建以来是否发生了数据漂移?销售分析中产品 A 和产品 B 的分布是否存在差异?归结下来问的都是同一件事,如何量化两个分布之间的差异。

单变量分析是最直接的入手点,逐个变量比较训练集与测试集的分布形状。但光看单变量可能不够。变量之间的联合关系如果存在差异呢?

怎么量化这种差异?Energy Distance 可以解决这个问题

Energy Distance 是一种用来度量两个概率分布差异程度的统计指标。两个分布完全相同时取值为零,分布差距越大数值越高。

形式化的定义


给定概率分布 F 和 G,从中分别抽取随机向量 X 和 Y,Energy Distance D(F,G) 的定义如下:

D(F,G) = 2E||X, Y|| — E||X, X'|| — E||Y, Y'||

定义包含两类距离。E||X, Y|| 是跨分布数据点对之间的期望欧几里得距离(一个来自 X,一个来自 Y),称为交叉距离;E||X, X'|| 和 E||Y, Y'|| 则是同一分布内部数据点对之间的期望欧几里得距离,称为组内距离。

Energy Distance 的原理


可以把 Energy Distance 类比为一个带电粒子系统的净相互作用能。设想两团点云,一团带正电,一团带负电。交叉距离对应异号粒子之间的相互作用能,组内距离对应同一团点云内部的自相互作用能。当交叉作用恰好被自作用抵消:即两个分布完全一致——净能量为零;否则为正值。

用一句话概括:

Energy Distance 度量的是两个分布之间的分离程度超出各自内部自然分离程度的幅度。

下面用两个二元分布的可视化来展示这一思路,同样的原理可以推广到更高维。

两个分布完全相同时,Energy Distance 为零。

随着两个分布彼此远离,交叉作用占据主导,Energy Distance 上升。

当每个分布内部的数据点变得更分散时,自作用开始抵消交叉作用,Energy Distance 趋向于零。

Energy Distance 解读


单独看 Energy Distance 的数值意义不大,通常需要配合置换检验来判断观测到的数值:即从原始样本计算得到的 Energy Distance,是否反映了两个分布之间具有统计意义的差异。

置换检验的零假设是 X 和 Y 来自同一分布(F=G)。操作上,将两组样本合并后随机重新分配组标签,保持原始样本量不变,反复计算 Energy Distance,由此构建零假设下的经验分布。p 值等于置换统计量超过观测统计量的比例。

置换检验的结果未检测到训练集与测试集之间存在整体性的分布偏移,无证据表明发生了全局协变量偏移。但这不等于排除了局部外推的可能:特征空间中稀疏及尾部区域仍需额外检查。

总结


Energy Distance 是一种基于度量的统计工具,适用于衡量两个多元分布的差异程度。数据漂移检测、A/B 测试中的样本一致性验证、不同群体间的分布比较——只要涉及"两组多元数据是否来自同一分布"的判断,它都能派上用场。

相比逐变量的单维度检验,Energy Distance 的优势在于能够捕捉变量间联合关系的变化,而不仅仅是边缘分布的偏移。配合置换检验,可以得到具有统计意义的推断结论,而非停留在视觉直觉上。

不过也需要注意它的边界。Energy Distance 检测的是全局性的分布差异,对于局部区域——特别是特征空间中样本稀疏的尾部——敏感度有限。高维场景下,欧几里得距离本身的区分能力会随维度增加而衰减,这一点同样会影响 Energy Distance 的表现。在实际使用中,结合局部密度估计或分区域检验等方法做补充验证是更稳妥的做法。

编辑:文婧



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU



A/B测试除了看最终的转化率,更重要的是分析用户行为的改变。Energy Distance 可以用来比较实验组和对照组用户行为路径的差异。

比如,将用户的点击、浏览等行为序列转换为向量,然后用 Energy Distance 比较两组用户行为向量的差异。如果实验组的用户行为路径与对照组差异很大,说明实验可能对用户行为产生了显著影响,即使最终转化率没有显著提升,也值得深入研究。

这种方法需要一定的技术基础,但可以更全面地评估 A/B 测试的效果,发现潜在的价值。

其实我觉得,与其费尽心思去识别局部区域的分布差异,不如从源头上来解决问题:提高数据的质量。

如果数据质量不高,样本分布不均匀,即使使用再 fancy 的方法,也难以得到 reliable 的结果。因此,应该加强数据采集、清洗和预处理工作,确保数据的真实性和完整性。

当然,提高数据质量是个 long-term 的工作,需要持续投入和改进。不过,从长远来看,这是最有效的解决问题的方式。

歪个楼,有没有人想过用Energy Distance来做A/B测试的’预实验’?

想法是这样的:在正式上线A/B测试之前,先用Energy Distance比较新版本和旧版本的用户行为数据(可以是小流量测试的数据),如果Energy Distance很小,说明新版本和旧版本差异不大,可能就没有必要进行大规模的A/B测试了。

当然,这只是一个初步的想法,需要实验验证才能确定是否可行。万一能降低A/B测试的成本呢?

谢邀,人在实验室,刚做完实验。

针对高维数据,其实有个很tricky的思路,就是引入’参考分布’的概念。假设我们有一个已知的、具有代表性的分布作为参考,然后分别计算目标分布和参考分布的Energy Distance。通过比较这两个Energy Distance的大小,来判断目标分布之间的差异。

这种方法的优点是可以降低高维带来的影响,因为参考分布提供了一个’锚点’,可以更容易地捕捉到分布之间的相对差异。缺点是参考分布的选择比较关键,需要仔细考虑。

针对Energy Distance局部敏感度有限的问题,我的思路是“化整为零”:

1. 分而治之:将特征空间划分为多个子区域,然后分别计算每个子区域的Energy Distance。这样可以将全局的分布差异分解为多个局部的分布差异,更容易发现局部区域的异常。
2. 关注尾部数据:针对样本稀疏的尾部区域,可以专门设计一些指标来评估分布差异。比如,可以计算尾部数据的比例、尾部数据的平均值等。
3. 结合业务知识:根据业务经验,判断哪些局部区域可能存在分布差异,然后有针对性地进行分析。比如,在金融风控领域,可以重点关注高风险用户的特征分布。

总的来说,需要将 statistical 方法和 domain knowledge 相结合,才能更有效地识别和处理局部区域的分布差异。

高维数据确实是个麻烦,降维是常用的思路,但有时候降维会损失信息,尤其是那些看似不重要,但实际上区分度很高的特征。我个人的经验是,可以尝试一种’Ensemble Distance’的方法,就是把几种不同的距离度量结合起来,类似模型融合。

比如,可以同时计算欧几里得距离、余弦相似度和曼哈顿距离,然后给它们分配不同的权重,综合起来作为最终的距离度量。权重可以通过交叉验证等方式学习得到。这样可以兼顾不同距离度量的优势,提高区分度。

当然,这需要一定的实验和调参,但如果能找到合适的组合,效果可能会比单一距离度量好很多。