作者: Dominik Moritz, Bill Howe, Jeffrey Heer

发表于CHI 2019, 三位作者都来自于University of Washington Interactive Data Lab

项目代码:https://github.com/uwdata/falcon

简介

Linked Visualization(链接可视化系统)是通过刷选、放缩等操作,在不同可视化视图上进行交互,链接(link)不同视图的操作,并更新视图的一种可视化方式。为了支持有效的探索,Linked Visualization必须提供快速响应来消除延迟敏感。在百万级以上的数据量时,传统可视化方法无法实现实时的探索,引出一系列问题。

本文提出falcon,一个大数据Linked Visualizations的低延迟方案,实现对十亿数据集的冷启动探索。falcon平衡交互延迟和视图精度,从查询和界面系统两方面对Linked Visualizations进行优化,降低刷选和链接(brushing and linking)的延迟。结合数据索引,数据预取和渐进式交互等方法,falcon系统使用加载数据子索引来优化刷选延迟,通过逐步加载交互式分辨率,以减少视图切换时间。实验表明,falcon实现了50fps的刷选交互延迟,无需昂贵的预计算和存储代价。

相关工作

  • Linked Visualization在商用可视化软件,如tableau, powerBI, DataV中应用非常广泛。他们经常使用直方图作为可视化方式,辅以brushing and linking 作为交互手段,让用户在展示不同维度的视图之间交互式刷选部分子集,同时在其它视图间同步展示子集结果。
  • 在论文The effects of interactive latency on exploratory visual analysis(2014 TVCG)中,Liu and Heer指出超过500ms的延迟会对用户行为造成较大影响,用户对刷选(brushing and linking)相比平移(pan)和缩放(zoom)有更高的延迟敏感度。
  • 过去的工作采用预处理数据索引或者稀疏数据块的方案来达到加快可视查询和交互的目标,但它们无不会导致高昂的计算和存储代价。这些文章有imMens(2013 EuroVis), Nanocube(2013 VIS)等等。
  • falcon分解高维数据索引,分解后它仅支持与单个活动视图的交互,当用户与特定视图交互(active view)时,将其所需部分数据索引进行加载。这样每次交互所需索引的大小在视图数量上是线性的,这避免了维度爆炸。

界面设计

  • falcon提供了一个可视化的视图仪表板,具有零,一个或两个维度的直方图。如图显示的是flights数据的可视化结果。每个视图都支持刷选,放缩,平移的功能,通过brushing and linking同步更新所有视图的查询结果,此外还可以通过按钮来选择是否查看没有被过滤的数据。
  • 需要注意的是正在刷选的视图是主视图(active view), 其余都是次视图(passive view),上图中鼠标所正在刷选的(第二行第二个)就是active view。

算法与模型

数据索引

大数据可视化系统中,我们常常使用数据索引来存储数据,以此优化后端处理中的时间复杂度和空间复杂度。数据索引又叫data tile, datacube。如下图所示,一个1维的直方图,我们可以使用一个同样长度的数组,每条数据按照维度信息放入相应的数据方格当中,形成数据索引。如果是2维的直方图,同理,我们需要一个2维的数组(一个平面)作为数据索引,此时每个直方图的相应格子就是平面中的某一行或者某一列的和。3维依次类推,是一个立方体,此时每个直方图的相应格子就是立方体中的某个平面的和。

假设数据条数是T, 维度数为m, 每个维度的划分精度为n,那么构建时间复杂度: $O(T)$,空间复杂度: $O(n^m)$,查询复杂度: $O(n^{m-1})$。可以发现空间复杂度和查询复杂度都随维度呈指数型增长,这样在高维度(多视图)的可视化系统中,存在巨大的维度灾难。针对较高的查询复杂度,我们可以使用sum area table查询复杂度降到$O(2^m)$,但是处理数据索引的空间复杂度依然巨大,当可视化系统的前后端分离的情况下,更会带来巨大的传输延迟和存储负担。

本文针对这个情况提出处理当前刷选窗口(active view)相关的数据子索引的方案,有效减小了空间复杂度,也一并减少了查询复杂度。假设有5个维度,每个维度粒度是10,显示五个单维度的直方图。旧方案需要$O(10^5)$的空间复杂度和$O(2^5)$的查询复杂度(有sum area table), 只会预处理一次。新方案冷启动无需预处理,每次切换刷选窗口(active view)时需要O(4 * 100)的空间复杂度和仅仅O(4)的查询复杂度。

Falcon 采用两种数据索引的实现方案。一是如果数据量比较小(< $10^6$), 会直接在前端生产高维数据索引, 进行查询。二是如果数据量很大,通过后端的高性能GPU数据库(OmniSci)来生成数据索引。由于falcon只需要当前界面数据子索引的思想,有效减小了响应时间。

延时加载与线性插值

有时计算数据索引需要很长时间,falcon会优先计算粗精度下的数据索引,之后再加载细精度的索引。如果框选范围处于条形图的中间位置,falcon会使用线性插值的方式进行拟合。论文通过实验证明,尽管使用线性插值,真实值和拟合值的Wasserstein distance处于非常小的范围内(99%的情况下< 0.01)。

实验

作者将Falcon与SquareCrossfilter进行了比较,记录了300万条记录的5个视图的刷选实验结果。Falcon的性能是恒定的,接近浏览器的最大帧速率60fp。反观SquareCrossfilter,当向刷选开始和结束过程中,系统会反应缓慢。

此外本文还针对不同数据集进行了测试。下表统计不同数据集大小的所有视图的在切换刷选窗口(active view)等待时间的平均值,中位数和第95百分位树,分别在像素分辨率(1维为500个bins,2维200×200bins)和bin分辨率(1维25bin和2维25×25bins)下进行统计。测试结果其中包括了网络传输的时间,灰色显示计算第一个视图的传输完成的时间,Browser指只有前端的实现方法,Core指使用GPU数据库作为后端的实现方法。

实验表明:

  • falcon对于只有前端和前后端分离的两种方案,都有显著的性能提升。
  • falcon的框选操作的时长不再取决于原数据量大小,框选精度不再取决于原本数据的最小精度。

  • falcon通过逐步加载和线性插值的方式来减小用户在数据量较大时的不舒适感。

总结

针对大数据Linked Visualizations,本文提出了考虑刷新延迟优先于视图切换延迟,以及降低交互的初始分辨率以改善视图切换时间的方案。基于原型系统falcon,当连接到后端GPU数据库系统时,falcon支持流畅浏览和刷选数十亿条记录,而无需昂贵的预计算或其他内存等方面的限制。但falcon还有许多不足之处,如:

  • falcon只实现了关于求和的功能,并不涉及中位数,平均数等更复杂的计算。也不涉及非数值型数据的计算。

  • 默认用户每次只会刷选一个视图,如果用户使用的是触屏设备,这个假设就会被推翻。

  • 更注重刷选的操作,对于缩放等操作并没有进行优化和讨论。

  • 对于数据索引的处理方面有更多的发挥空间,比如数据压缩,中间件的处理等等。

总之,falcon从一个不同的视角解决了Linked Visualizations的刷选延迟问题,实现了对十亿数据集的冷启动探索。

论文阅读 | Falcon: Balancing Interactive Latency and Resolution Sensitivity for Scalable Linked Visualizations的更多相关文章

  1. Event StoryLine Corpus 论文阅读

    Event StoryLine Corpus 论文阅读 本文是对 Caselli T, Vossen P. The event storyline corpus: A new benchmark fo ...

  2. YOLO 论文阅读

    YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...

  3. [论文阅读] ALM-HCS(高对比场景自适应对数映射)

    [论文阅读] ALM-HCS(高对比场景自适应对数映射) 文章: Adaptive Logarithmic Mapping for Displaying High Contrast Scenes 1. ...

  4. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  5. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  6. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  7. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  8. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  9. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

随机推荐

  1. 如何将 qsys 子模块设置为参数可调的方式给另外的qsys 调用

    Intel FPGA Quartus 软件中的 Qsys工具 也就是 Platform Designer 系统集成工具,可以 图形化界面操作 使用系统自带ip,自定义ip 系统自动生成 ip 间的连接 ...

  2. python数据库-安装问题总结(48)

    一.ERROR1698(28000):Access denied for user root@localhost错误 我的操作系统是ubuntu: 我的MySQL版本是: 安装完成后,登录mysql的 ...

  3. scrapy基础知识之制作 Scrapy 爬虫 一共需要4步:

    1.新建项目 (scrapy startproject xxx):新建一个新的爬虫项目 2.明确目标 (编写items.py):明确你想要抓取的目标 3.制作爬虫 (spiders/xxspider. ...

  4. c++学习书籍推荐《超越C++标准库:Boost库导论》下载

    <超越C++标准库Boost库导论>不仅介绍了Boost库的功能.使用方法及注意事项,而且还深入讨论了Boost库的设计理念.解决问题的思想和技巧以及待处理的问题.因此,本书是一本了解Bo ...

  5. CDQZ集训DAY5 日记

    又一个爆炸的一天…… 早上起来发现貌似是周末,七中放假(别人家的学校(一周一放,一放两天)……)然而感觉状态不是很好,感觉药丸. 题目一上来就装弱,有诈.第一题上来先打暴力,T2不知道怎么打.T3暴力 ...

  6. CMinpack使用介绍

    github: https://github.com/devernay/cminpack 主页: http://devernay.github.io/cminpack/ 使用手册: http://de ...

  7. NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load xxxx错误解决方法

    在开发项目的过程中,和后端对接,我们使用是一个成熟的集成很全面的架构JHipster.后端为java spring-boot 前端ts+react,需求是有一个需要在页面里嵌套iframe的需求.然后 ...

  8. Java编程思想:压缩

    import java.io.*; import java.util.Enumeration; import java.util.zip.*; public class Test { public s ...

  9. npm-472错误

    今天无聊给npm进行了一波升级,却没想到导致出现bug,搞了半天才解决了....这里进行一下分享 1.安装npm npm install -g 升级到最新版npm install -g npm@< ...

  10. android实现倒计时,最简单实现RecyclerView倒计时+SwipeRefreshLayout下拉刷新

    先上效果图: RecyclerView + SwipeRefreshLayout 实现倒计时效果 MainActivity.java package top.wintp.counttimedemo1; ...