Press "Enter" to skip to content

数据变形:超越数据恐龙十二人组

数据变形:超越数据恐龙十二人组 四海 第1张

编辑注:Stefanie Molin是本年度秋季ODSC West 2023的演讲嘉宾。一定要去听听她的演讲“数据变形:一个关于汇总统计的警示故事”!

本文介绍了一个名为Data Morph的新开源Python包,可以用于将2D点的输入数据集变形为选择的形状,并通过模拟退火算法将汇总统计保留到给定的小数位数。Data Morph扩展了Autodesk的研究,创建了数据恐龙十二人组,并旨在作为教学工具,用于说明为什么不能仅仅依赖于汇总统计。

让我们来玩一个游戏。我正在想一个具有以下汇总统计的分布。你能想象出这些数据的散点图是什么样子吗?

  • X均值= 30.37
  • Y均值= 53.01
  • X标准差= 13.44
  • Y标准差= 15.53
  • Pearson相关系数= 0.04

均值是中心性的度量,标准差是距离中心的分散度量,相关系数量化了x和y变量的联动程度,因此人们很容易认为这足以描述数据。然而,这些汇总统计是不充分的:对于给定的汇总统计,存在多个可能的数据集。这是我总结的数据的散点图——你猜对了吗?

数据变形:超越数据恐龙十二人组 四海 第2张

Data Morph提供的音乐数据集。

不能仅仅依赖于汇总统计的观念并不新鲜。研究人员通过生成许多在视觉上非常不同但共享相同汇总统计的数据集来说明这一点。1973年,Francis Anscombe提出了一组这样的四个数据集,被称为安斯康姆四重奏

数据变形:超越数据恐龙十二人组 四海 第3张

这些数据集在视觉上非常不同;然而,它们都共享相同的汇总统计。(此视觉效果由Stefanie Molin使用seaborn提供的安斯康姆四重奏数据集创建。)

2017年,Autodesk的研究人员在安斯康姆四重奏的基础上发展出了数据恐龙十二人组:他们使用模拟退火将一组点状数据(Alberto Cairo的数据恐龙)转化为12种不同的形状,这是一种寻找全局最优解的技术,在Same Stats, Different Graphs项目中实现:

数据变形:超越数据恐龙十二人组 四海 第4张

数据恐龙十二人组数据集。(此视觉效果由Stefanie Molin使用jmatejka/same-stats-different-graphs提供的数据恐龙十二人组数据集创建。)

为了生成数据恐龙十二人组,算法重复选择一个随机点,并尝试通过微小的随机扰动将其移动到新位置。为了考虑新位置,它必须仅通过足够小的变化改变汇总统计,以使旧值和新值仍然等效于两位小数。如果位置变化减少了到目标形状的距离,算法将该点移动到新位置。然而,如果位置变化增加了到目标形状的距离,算法只会以一定的概率p将该点移动到新位置,该概率随时间降低。在早期迭代中,算法更有可能接受使其远离目标形状的新位置;随着迭代的进行,这种可能性减小。这个过程有助于避免陷入局部最优解,并允许更多的形状变化,因为可以探索更多的空间。

与安斯康姆四重奏相比,看到数据恐龙变成一组倾斜的线条,并保留汇总统计的情况更具震撼性。我相信,这种震撼因素在解释为什么数据可视化至关重要方面更为有效——只需看看对这篇LinkedIn帖子的反应。

我希望在我的熊猫工作坊中利用这种冲击因素来激发数据可视化部分的动力。在数据整理部分之后,强调此时数据可视化的重要性至关重要,因为编写可视化代码可能更加复杂。人们常常倾向于采取捷径,只使用摘要统计数据来描述数据。然而,对于这次工作坊来说,使用恐龙动画感觉有些不适合,因为工作坊始终以熊猫形象为特色,所以我需要制作一个形状像熊猫的数据集。我在这里提供了一些关于如何从想法转化为输入数据集的技巧。

数据变形:超越数据恐龙十二人组 四海 第5张

一个形状像熊猫的新起始数据集。

我很快意识到,定制的、有影响力的视觉辅助工具不仅对我的工作坊有益,对于学习和教授数据分析的人们也是如此。因此,在2023年,我探索了如何将 Autodesk 研究人员的代码推广到任意数据集,即不仅限于 Datasaurus 或熊猫。这使我创建了一个名为Data Morph的开源 Python 包,可以用来将2D点的输入数据集变形为所选形状,并使用模拟退火的相同技术将摘要统计数据保留到给定的小数位数。

为了使 Same Stats, Different Graphs 代码适用于不同的输入,需要进行重大重构。目标形状(比如圆的中心和半径,线的端点等)的所有逻辑都硬编码在代码中,因此与 Autodesk 团队的代码中包含的数据集具体相关。目标形状的位置和属性需要根据起始数据集进行计算,某些形状比其他形状更容易编码。例如,要变形为圆形,圆的中心可以在 x 和 y 值的均值处;半径可以是标准差的倍数(选择 x 或 y):

数据变形:超越数据恐龙十二人组 四海 第6张

Data Morph 在尝试将先前显示的熊猫变形为圆形时计算的目标形状。距离是从点到形成圆形的线的距离计算的。

Data Morph 提供了一系列形状类,以便创建复合形状(例如,使用圆形创建一个靶心形状,该靶心形状由两个同心圆组成)并集中距离计算以简化代码。然而,对于某些形状,仅使用数据的信息可能不够:有时需要将点移动到起始数据集的边界之外。为了处理这种逻辑,Data Morph 包含了一些自动边界计算,这些边界计算可以与形状和绘图功能插入:

数据变形:超越数据恐龙十二人组 四海 第7张

边界会自动计算用于变形和绘图。

另一个重大变化是减少点随时间移动的最大量,而不是保持静态,这样点的移动效果会更好。以下是将熊猫数据集变形为星星的示例:

数据变形:超越数据恐龙十二人组 四海 第8张

使用 Data Morph 将熊猫数据集变形为星星。

如上面的动画所示,熊猫和星星不仅具有相同的摘要统计数据,而且在变形过程中遇到的每个数据集都具有相同的摘要统计数据。再加上熊猫还可以变形为其他一些可识别的形状,比如之前显示的圆形,那么就有无限多种可能的数据集与摘要统计数据匹配。

然而,也有一些限制:您不能将数据集始终变形为 Data Morph 提供的所有目标形状。如果起始形状在目标形状的某个特定区域中没有任何点,那么可能无法将点推到那里而不改变摘要统计数据。例如,当将某个输入数据集变形为矩形形状时,可能会缺少某些线段的一部分。一旦您尝试不同的输入数据集,您将对哪些形状可行、哪些形状不可行(以及原因)有一些直觉。

在撰写本文时,Data Morph 提供了6个内置的起始形状和15个目标形状,并将继续增加更多形状。变形就像这样简单:

$ pip install data-morph-ai
$ data-morph --start-shape 熊猫 --target-shape 星星

可以通过CSV文件提供任意/自定义的起始形状,比如这个(参考这里的文档以了解如何制作自己的形状):

使用CSV文件创建的示例。

Data Morph还提供了CLI和Python解释器用法的文档、测试套件、模块化代码和灵活的类层次结构,用于添加新的目标形状。有关核心改进的更多信息可以在这里的发行说明中找到。

下次当你需要解释或教授汇总统计信息时,我邀请你使用Data Morph创建一个有趣的自定义动画,以强调可视化数据的重要性。请学生或参与者自己想出自己的动画。看到许多以熟悉的形状(例如你们学校的标志、吉祥物等)开头的例子,将使这个重要概念始终保持在脑海中。如果你最终使用了自定义数据集和/或用于教学目的的Data Morph,我很想听听你的想法——在LinkedIn或Twitter上给我打标签。

快乐变形!

文章最初发布在这里。经授权转载。

数据变形:超越数据恐龙十二人组 四海 第9张Stefanie Molin是一名软件工程师和数据科学家,目前在纽约的彭博社工作,她致力于解决信息安全中的难题,尤其是围绕数据整理/可视化、构建数据收集工具和知识共享方面的问题。她还是《使用Pandas进行实践数据分析》一书的作者,该书目前已经出版第二版。她拥有哥伦比亚大学富基金工程与应用科学学院的运筹学学士学位,以及乔治亚理工学院的计算机科学硕士学位,专攻机器学习。在空闲时间,她喜欢环游世界,发明新的食谱,并学习人与计算机之间使用的新语言。

Leave a Reply

Your email address will not be published. Required fields are marked *