时间图:长时间内离散事件的可视化

在我们的日常生活中离散事件无处不在。比如通话记录、网上交易和心跳数据。尽管离散事件的数据比较单一,但是在保留细节信息的前提下,对长时间内的离散事件进行可视化处理还是挺困难的。

下图阐明了这个问题。该图描述了七个月内某一IP地址的网站访问量。它是利用离散事件数据所绘制的。其中每个直方柱的高度代表每个时间点上事件发生的次数。

当此图涵盖了所有事件的信息时,每个时间点上的细节信息则完全被忽略。人们总是可以对条形图进行一定比例的放大后再次绘图,但是问题就来了–我们应该选择多大的缩放比例呢?我们应该考察哪个时间段的信息呢?比如,如果我们想放大到间隔为一天的水平,那么我们大致需要观察210天的信息。而且在不同的缩放级别中寻找匹配值和异常值是非常耗费时间的。

在这篇博客中,我将会介绍如何在一张图中对长时间内离散事件的数据进行可视化处理的方法。不管面对的是毫秒级还是月度数据,它都允许读者从图中快速地识别出关键信息。该方法出自于混沌系统领域,它起先是用于研究滴水时间的问题。这个可视化方法拥有许多不同的名字:延迟映射图、复原时间图和时间-时间图。为了简洁起见,我把它称为“时间图”。尽管人们早就利用时间图对混沌系统进行可视化处理,但它还没被应用到信息科学领域中。我将会展示时间图是如何提供关于推特账号行为和网络机器人程序活动的宝贵信息。

这篇博客虽然篇幅短,但是包含了几个略微不同的案例。这篇文章已经被 2015 年 IEEE 大数据会议所接收。本文结尾部分附带了如何制作时间图的 Python 代码。

制作时间图非常简单。首先,想象时间轴上一系列用点表示的事件。每个事件之间的时间间隔用标签 t1 ,t2 ,t3 ,t4 ,…所表示。

时间图可以简单看成二维散点图,其中事件的坐标分别为(t1, t2),(t2, t3),(t3, t4)等。在时间图上,紫色点事件将被画在图中所示的位置。

换句话说,散点图中的每个点都代表一个事件。其中横坐标表示这个事件和前续事件之间的时间间隔,纵坐标表示与后续事件之间的时间间隔。因此时间图中无法表示第一个事件和最后一个事件。

下图是两个简单的例子:

等间距事件序列(A)的时间图中只有一个有效点,因为所有事件的坐标完全相同。序列 B中除了一个事件略有延迟以外,它与序列 A 是一样的。由此产生的时间图包含四个有效点,这使得读者可以更直观地观察事件的变化。除非选择很小的直方柱,否则这两个序列随时间变化的直方图将是完全相同的。

为了得到更直观的时间图,我们考虑一个分为四个象限的启发式图:

每个象限中是一张沿着时间轴的事件序列图。其中右上角和左下角象限中包含的是等间距事件,因此这两个象限中的事件是“稳定的”。又因为左下角象限中事件之间的时间间隔较小,我们称它为“快而稳”事件,并称右上角象限中的事件为“慢而稳”事件。对于右下角象限而言,一个事件发生之后,需要较长的等待时间然后两个事件再接连发生,因此我们称之为“加速”事件。左上角象限的事件则刚好相反,此象限中的事件为“慢化”事件。查看时间图有点像阅读新城市的地图。即使起初的时候不熟悉,最终你还是会得心应手。

因为时间图只绘制事件之间的时间间隔,所以它解决了长时间维度的问题。为了防止时间间隔的数量级太大,我们以对数刻度绘制坐标轴。这允许读者可以在一张图中看到小至毫秒大至月份的不同时间尺度展示。让我们来看一些真实世界的案例吧!

@白宫 推文

推特的 API 允许人们收集用户最近发送的 3200 条推文。利用 Twython,我下载了 @白宫 (这个账号由总统的员工所管理) 的推文。下图是 2015 年 1 月到 9 月之间 @白宫 推文的时间图:

每条推文都用基于时间的颜色编码,而且时间轴已经经过对数化处理。按照推文结果,图中的两个聚类群对应于工作日的开始和结束。每天的第一条推文通常发生在早上九点和中午之间。而最后一条推文的发生时间则比较广泛。

有趣的是,上图中存在两个代表不同行为模式的聚类群。我将聚类群一命名为“日常事务”,其中人们大约一小时发送一条推特。位于图中左下角区域的推文具有频率高的特点,我们称之为“重要事件”。

由于时间图中很难计算出每个聚类群中包含多少样本点,而“热感时间图”可以用红色来表示密度较高的点。

在热感时间图中,我们可以观测到孤立的样本点。额外的好处是我们还可以看到样本点的聚集情况。从上图可以看出,“日常事务”聚类群中的推文数量最多,这从侧面验证了我们称其为日常事务的合理性。

个人账户的推文情况

@白宫 是由公关人员管理的推特账号。那么个人推特账号的情况是啥样的呢?尼古拉斯·菲尔顿是一名从事信息可视化的平面设计师。他的工作包括年度报告,该报告利用他生活中的数据绘制平面图形。下图是关于他推文的热感时间图:

该图中没有像 @白宫 所展示出来的明显聚类情况。与公共账号不同,个人账号的推文通常没有一个严格的时间表。然而,时间图仍然捕捉到了总体的趋势情况。大量的样本点落在“慢而稳”事件的区域中,而且这些推文差不多每天发送一次。

网络机器人

网络机器人是在网页上执行自动运行任务的计算机程序。当用户点击特定的链接时,机器人在无意中被安装到数以百万计的个人电脑中。当你读这句话的时候,机器人甚至可以操控你的电脑!我分析了一个来自提供网站监控服务公司的数据。于是,我得到了博客开头所展示的那张图:

这幅图展示了来自一个特定 IP 地址的网站访问量(这里提到的 IP 地址不同于我的论文中说所提到的 IP )。尽管直方图确实包含了整体行为的重要信息,但让我们来看看时间图所展示的信息:

上述的直方图无法展现出这些活动模式的信息。通过绘制时间图,一些重要信息马上显现出来:一大块“快而稳”事件点,两个条形区域点分别代表“加速”和“慢化”事件,而且在这两个区域上面还存在一些稀疏的点。

右下角和左上角区域的稀疏点代表在高频率活动事件之间的长休眠期中所发生的事件。这和直方图中的长间隙结果一致。条形区域中的事件发生在两次高频率活动爆发期之间的八分钟间歇期。高频率爆发期如左下角的大块区域所示,这表示网站被接二连三地访问。爆发期是否存在可以通过检查极度放大的直方图来证实:

正如我们所料,确实存在相隔大约为八分钟的爆发期。尽管放大后的直方图所涵盖的信息与时间图一致,但是谁会想到把直方图放大到这个水平呢?!时间图可以立即显现出机器人定期的高频行为,而且和直方图不同的是,时间图不需要进行放大处理。

利用 Python 绘制时间图

下面是绘制时间图的一个简单 Python 程序。它是基于随机生成的数据来绘图的。

现在让我们来绘制热感时间图吧。它利用上述代码来构建程序。总的来说,我们需要构建一个用来计算时间图中每个网格内所发生事件数的二维直方图。直方图被当成图像来对待,然后我们将高斯模糊方法(Gaussian blur)应用到图像中,这可以对突变事件进行平滑处理。

下载推文和绘制时间图的 Python 文件可以在我的 github 界面中找到。

结论

我上面提到了用来演示时间图勘探价值的三个例子。在所有的例子中,时间图可以立即展现出潜在的信息,而直方图却需要更多的时间来挖掘这些信息。尽管如此,时间图确实无法替代其他的时间可视化工具,它们之间是互补关系。最好的视觉探索工具同时需要时间图和其他图形。例如,时间图和直方图都展现了数据的重要信息,它们应该相互配合使用。

毕加索画图的时候通过将多重视角下的信息综合到同一张图中以获取物品的完全信息。相似地,时间图在一张图中从多个时间角度提取数据集的信息。鉴于其具有容易实现和发现隐藏信息的能力,在我们这个数据驱动的社会中时间图应该成为一个非常宝贵的工具。

本文作者:佚名

来源:51CTO

时间: 2024-11-02 22:01:44

时间图:长时间内离散事件的可视化的相关文章

耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案

耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案 我认为<耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案>一文中的解决方案不合理,属于技术的误用,满篇的ajax这个词很容易给读者造成误导 . 原需求: B/S结构的系统里,用户点一个按钮系统开始发送上千封邮件,要求把发送信息(发送成功数,失败数,剩余数量...)动态实时的反馈给客户. 原文的技术误用之处: (1)ajax,pageload 这些ui层的东东渗透到逻辑层里去了 (2)thread的职责太多 并不是

[IOS]自定义长触屏事件

写一个Demo来自定义一个长触屏事件,自定义长按手势. 实现步骤: 1.创建一个自定义手势类,命名为LongPressGestureRecognizer,在创建的时候继承UIGestureRecognizer LongPressGestuRecognizer.h: #import <UIKit/UIKit.h> @interface LongPressGestureRecognizer : UIGestureRecognizer @end LongPressGestuRecognizer.m:

Network Simulator 3.12.1发布 离散事件仿真器

Network Simulator简称NS,是一个离散事件仿真器,主要用于http://www.aliyun.com/zixun/aggregation/8976.html">网络研究.它通过有线和无线(本地及卫星)网络,大量支持TCP仿真.路由和多播协议,还包括一个可选的网络动画. Network Simulator 3.12.1该版本SpectrumChannel模型现在支持单频传播损耗模型,属性系统扩展存储在地图容器中的对象,除了向量容器.支持IPv4分片已添加.多个错误已修复. 软

gesture-imageview第三方库没有长点击事件的解决

通过给ImageView添加手势操作来解决 gestureDetector =new GestureDetector(new OnGestureListener() { @Overridepublic boolean onSingleTapUp(MotionEvent e) {// TODO Auto-generated method stubreturn false;} @Overridepublic void onShowPress(MotionEvent e) {// TODO Auto-

主机空间到期后多长时间内还可以续费,网站内容还有吗?

主机空间业务到期后,15天内还可以续费,网站资料还会有的.过期15天后就不能续费了,主机空间业务就被删掉了,所有文件就都没有了,不能恢复. 注意,请先到阿里云官网领取幸运券,除了价格上有很多优惠外,还可以参与抽奖.详见:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=2a7uv47d&utm_source=2a7uv47d

《Splunk智能运维实战》——第3章 仪表盘和可视化——让数据闪光 3.1 简介

第3章 仪表盘和可视化--让数据闪光 3.1 简介 前一章介绍了Splunk的搜索处理语言(SPL)以及如何使用SPL来搜索数据并制作报表.本章将以这些知识为基础,使用Splunk的可视化功能让数据更直观.我们将学习如何通过Splunk UI创建仪表盘并添加前一章制作的报表.我们将再创建两个仪表盘,以供本书其他章节使用. 可视化是数据得以最佳呈现的基础.按照人们熟悉的方式可视化数据,就能让用户更好地了解被展示的内容,并正确地理解该如何应对.当使用Splunk来进行智能运维时,会发现几乎所有的报表

《Splunk智能运维实战》——3.8 使用散点图根据大小和响应时间标识离散的请求

3.8 使用散点图根据大小和响应时间标识离散的请求 如之前各个章节所示,可以通过创建可视化图表来获取大量信息,这些图表可以总结当前应用程序状态,分析性能数据随时间的变化,或者比较各个值的关系.然而,如果想识别那些零星时间或随机时间点上偏离主体的离散事件,应该怎么做呢?当观看柱状图.单值计量器和饼图时,这些事件可能无法被正确地反映,因为相对大多数计算,它们就像雷达远处的一个光点.然而有时候这些离散事件能指示问题的存在. 在本节中,我们将写一个非常简单的Splunk搜索来标绘Web请求数据的一些元素

反思《少年不可欺》事件:全民版权意识正在觉醒

DoNews 12月1日消息 11月30日,一篇名为<少年不可欺>的文章席卷了包括微信.微博在内的社交网络.发帖者为一位名叫Niko Edwards的19岁少年,其在文章中称自己团队的创意被优酷窃取用来为陌陌拍摄商业广告片. 很快,优酷及陌陌作出了官方回应.优酷方面表示,已经展开专项调查,如果属实将严肃处理:陌陌方面也称,已在第一时间全平台停止对该视频推广,将安排专人推动优酷与Niko联系调查. 截止发稿,该事情还并未得到完善解决.不过,根据多名律师的说法,这位名叫Niko Edwards的少

经济危机来了,经济型酒店“火”了——“携格事件”

2月26日参加了http://www.aliyun.com/zixun/aggregation/39597.html">央视国际旅游频道主办的"冬日阳光"中国酒店业高峰论坛,参加了4个论坛中的2个,一个是讨论垂直搜索带来的更多的机会.一个是讨论CRS给酒店带来的利益.归结起来,在金融危机愈演愈烈的今天,垂直搜索和crs系统建设都是帮助酒店通过开源节流以提升利润的最有效手段. (左起:畅联蔡永元.远方唐真.本文作者.著名主持人袁岳.汉高汪忠.google.酷讯张海军) 3