作者: 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. 微信小程序社区爬取

    # CrawlSpider 需要使用:规则提取器 和 解析器 # 1. allow设置规则的方法:要能够限制在目标url上面, 不要跟其他的url产生相同的正则即可 # 2. 什么情况下使用follo ...

  2. 大话Spark(9)-源码之TaskScheduler

    上篇文章讲到DAGScheduler会把job划分为多个Stage,每个Stage中都会创建一批Task,然后把Task封装为TaskSet提交到TaskScheduler. 这里我们来一起看下Tas ...

  3. kuangbin专题 专题一 简单搜索 棋盘问题 POJ - 1321

    题目链接:https://vjudge.net/problem/POJ-1321 题意:给一张棋盘,‘#’表示可以下棋的地方,‘.’表示不能下棋的地方.棋盘是n*n的,要求能放下k个棋子,要求k个棋子 ...

  4. Java项目案例之--封装的实例

    Java项目案例之---封装的实例 有一个专业类,有一个专业对象,专业名称:计算机科学与技术,专业编号:J001,专业年限:4,对年限添加约束,如果输入小于0,则默认为0,否则显示输入的值 有一个学生 ...

  5. [译]试用新的System.Text.Json API

    译注 可能有的小伙伴已经知道了,在.NET Core 3.0中微软加入了对JSON的内置支持. 一直以来.NET开发者们已经习惯使用Json.NET这个强大的库来处理JSON. 那么.NET为什么要增 ...

  6. ElasticSearch7.2安装

    1.环境 Java -version:java11 centos: 7.2 elasticsearch: 7.2 2.获取压缩包 wget https://artifacts.elastic.co/d ...

  7. 写给后端同学的vue

    安装环境 安装vue-cli 脚手架 1. 安装nodejs环境 下载地址: (nodejs)[https://nodejs.org/zh-cn/download/] 安装(略) 2. 安装vue-c ...

  8. 【CYH-02】NOIp考砸后虐题赛:转换式:题解

    这道题真的不难吧. 如@AKEE@AKEE@AKEE 大佬所说,此题的确可以将n推广到一般情况. 但题面还是良心的只到了N<=4N<=4N<=4 以目前的题目来看,简单模拟即可. 分 ...

  9. [PTA] 数据结构与算法题目集 6-11 先序输出叶结点

    //函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符. void PreorderPrintLeaves(BinTree BT) { ...

  10. 在vue中创建自定义指令

    原文:https://dev.to/ratracegrad/creating-custom-directives-in-vue-58hh 翻译:心上有杨 指令是带有 v- 前缀的特殊属性.指令的作用是 ...