针对天气预报集合数据的时间层次聚类和可视化

 

集合(ensemble)模拟数据可视化是科学可视化的一个重要研究方向,特别是针对气象学这一特定领域。通过扰动初始条件或者使用不同的预测模型公式,集合方法会生成代表大气未来可能状态的一些数据成员。分析集合预报中的时间演化和可变性是这类问题的一个重要的任务。

在已有的方法中,spaghetti plots (意大利面条图)是一种比较常用的分析气象标量场集合数据中等高线(iso-contour)的变化的方法。具体来讲,对于每个时间步,都有一个spaghetti plot展示某一iso-value下所有集合成员的等高线,这些spaghetti plots往往并列放置。如果需要看其动态演变,则需要通过动画的方式。

但是,由于用户需要感知大量的视觉信息,动画很难建立连续时间步下等高线之间的关联。针对这一问题,今年的SciVis上提出了一种新的方法,可以分析集合天气预报数据中等高线的时空演变[1]。

文中的方法包含三个部分。如图1所示,首先将所有集合成员具有相似时间演化特性的等高线进行聚类,得到一个初始的等高线分类。然后,使用一个时间层次聚类的方法将这些初始的等高线类沿时间步反向合并,得到一个时间层次上的聚类树。最后,设计了一种空间-时间聚类可视化的方法来展示聚类信息。下面我们将一一介绍各个步骤。

在初始等高线分类中,用户首先选择一个感兴趣的时间窗口,然后在一个给定的iso-value下得到所有集合成员在这个时间窗口下的等高线。之后,使用符号距离函数(signed distance function, SDF)将这些等高线转化为高维空间中的点,然后就可以使用一些标准的聚类方法对这些点进行聚类,从而得到对应等高线的初始聚类。

文中用了合成聚类(agglomerative hierarchical clustering, AHC)的方法,一开始将每个的等高线都看成是一个个的类,然后迭代地将相似的类进行两两合并,直至最终只剩下一个类或者所需要的类数。

对于每个类的所有等高线,我们可以从中选择一个中位等高线(median contour),其对应的高维空间的点到其他所有点的距离平方的和最小。有了中位等高线,我们再将所有等高线的空间标准差通过环绕在中位等高线的条带展示出来,以表示该类中所有等高线的空间差异,这种可视化形式叫做等高线变化图(contour variability plot),如图2所示。

为了得到所要的时间层次聚类,作者使用了AHC方法中的linkage criterion来决定类之间何时会合并。其思想就是,假设有n个类,根据类间距离的计算组织一个n×n的linkage矩阵形式,矩阵每个单元表示两个类之间的距离。这里面类与类之间的距离是基于类中等高线对应的高维空间点之间的欧式距离计算得到。

作者定义了一个类间距离的阈值,然后在初始等高线分类的基础上,沿着反向时间步的方向对这些类进行合并。对于每一个时间步,当有两个类的距离小于阈值时,这两个类会被合并,并且对应的linkage矩阵也会更新。这一过程一直迭代进行,直到该时间步上不再可以聚类。接着会进行前一个时间步的合并过程,直至在第一个时间步上形成一个最终的类,如图3所示。

得到时间层次聚类树后,文章设计了一种空间-时间聚类可视化的可视化,包括两种形式。一种是空间-时间聚类面(space-time cluster surfaces)。对于每一个类,它是将其每个时间步上中位等高线的符号距离场堆叠起来形成一个空间-时间的3维距离场,然后使用光线追踪和三线性插值绘制该3维场的level-0 set,得到一个平滑的变化聚类面,如图4(a)所示。

为了展示聚类中等高线在时间上的传播,还可以将所有等高线对应的符号距离值的标准差映射成颜色反应在聚类面上。如图4(b)所示,其表示了随时间的增加聚类成员在空间的伸展也越大,表示不确定性越大。

另一种可视化表示形式是堆叠时间切片(stacked time-cuts)。因为对每一个时间步,一个类可以用一个等高线变化图来表示,因此将这个类对应的一系列离散时间步的等高线变化图由下至上堆叠起来,便形成了堆叠时间切片。如图5所示,可以很清楚看到聚类随着时间的增长的演化。

总的来讲,这篇文章针对二维时变标量场集合数据的等高线,使用一种新的方法展示其在时间和空间上的演化。不过,该方法建立在聚类只有合并没有分裂这一假设上,其合理性值得推敲。不过这也正是这一方法可以改进的地方。

如果可以将等高线在演化过程中的出现、合并、分裂以及消亡等事件以一种比较好的形式展示出来,例如故事线等,可以让用户更好地对该类问题进行分析和理解。此外,文章使用的堆叠时间切片的可视化方法在时间步比较多的情况下还不是非常灵活,这一点也是需要改进的地方。

本文作者:Jiang Zhang

来源:51CTO

时间: 2024-10-29 02:47:34

针对天气预报集合数据的时间层次聚类和可视化的相关文章

机器理解大数据的秘密:聚类算法深度详解

看看下面这张图,有各种各样的虫子和蜗牛,你试试将它们分成不同的组别? 不是很难吧,先从找出其中的蜘蛛开始吧! 完成了吗?尽管这里并不一定有所谓的「正确答案」,但一般来说我们可以将这些虫子分成四组:蜘蛛.蜗牛.蝴蝶/飞蛾.蜜蜂/黄蜂. 很简单吧?即使虫子数量再多一倍你也能把它们分清楚,对吗?你只需要一点时间以及对昆虫学的热情就够了--其实就算有成千上万只虫子你也能将它们分开. 但对于一台机器而言,将这 10 个对象分类成几个有意义的分组却并不简单--在一门叫做组合学(combinatorics)的

机器学习之层次聚类

层次聚类 聚类是将样本进行归类形成K个簇,层次聚类是其中的一种方法.它将数据组成一棵聚类树,过程可以是凝聚形式或分裂形式. 核心思想 凝聚是一开始将每个样本当做一个聚类,接着通过计算将距离最近的两个聚类合并,成为新聚类,每次合并聚类总数减少一个,不断循环合并操作,直到所有聚类合并成一个聚类或当聚类数量到达某预定值或当聚类直接距离达到某阀值后停止合并.而分裂则与凝聚相反,一开始将所有样本当做一个聚类,每次分裂一个聚类,直到满足某条件. 算法步骤 计算n个样本两两之间的距离 构造n个簇 找到最近距离

算法 树状结构-层次聚类!!!!树状结构

问题描述 层次聚类!!!!树状结构 请问实现类似下图的树状结构该怎么做?语言随便,数据随便!!!!!!!!谢谢!!! 解决方案 层次聚类 java和matlab实现层次聚类层次聚类 解决方案二: 用struct和class都可以做吧~只是一种结构的嵌套,不是么?

Map集合数据的问题(数据结构大神来答)

问题描述 Map集合数据的问题(数据结构大神来答) Java中关于,Map,List,Set三种集合各自是如何存储数据的? 从中获取数据又是什么样的一个过程?(说明过程,越详细越好,小弟我请教了) 解决方案 集合框架: Collection:List列表,Set集 Collection 是单列集合 List 元素是有序的.可重复 有序的 collection,可以对列表中每个元素的插入位置进行精确地控制. 可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 可存放重复元素,元

业务对数据有哪些层次的需求

摘要: 数据的重要性已经被越来越多的公司.个人所熟知与接受,甚至于有过犹不及之势头.大数据的概念满天飞,似乎一夜之间人人都在谈论大数据,见了面不用大数据打招呼,好像就不是 数据的重要性已经被越来越多的公司.个人所熟知与接受,甚至于有过犹不及之势头.大数据的概念满天飞,似乎一夜之间人人都在谈论大数据,见了面不用大数据打招呼,好像就不是在数据圈子里混的了.那么,被外界传得神乎其神的数据,到底可以在哪些方面促进业务的腾飞?或者换种说法,业务对数据有哪些层次的需求?数据在哪些地方能够帮助业务? 结合笔者

分页-PagedDataSource里面的集合数据怎么读取出来像dataset一样实现循环读取数据

问题描述 PagedDataSource里面的集合数据怎么读取出来像dataset一样实现循环读取数据 我之前用dataset获得了查询的列表数据 然后给PagedDataSource赋值 这个就是实现一个分页的 我想把PagedDataSource分页数据循环读取出来绑定到自己构建的HTML 解决方案 你不用读取出来,就可以直接绑定到前台的html代码中的. 后台代码为 rpt.DataSource=PagedDataSource.DataSource; rpt.DataBind(); htm

使用热备份进行分时恢复----怎样通过归档逐步恢复以缩短数据迁移时间

备份|恢复|热备份|数据 使用热备份进行分时恢复 ----怎样通过归档逐步恢复以缩短数据迁移时间 Last Updated: Monday, 2004-11-15 10:32 Eygle         很多时候你可能遇到这样的情况:一个大型数据库的迁移,但是只有很少的停机时间,这看起来充满困难.可是我们可以通过各种方法来缩短停机时间. 本例适用于同平台.同版本数据库迁移. 在此情况下,我们可以通过一个热备份,应用归档恢复数据库到一个一致的状态,此时数据库可以被只读(read only)打开.之

U盘数据保存时间有多长

  如果你想长久的保存一些数据到U盘,那么你就要考虑到U盘的寿命,U盘的存放环境.温度.湿度等都会对U盘造成一定寿命影响,还有一点就是一般U盘的使用期限是擦写30000-10000次.一般采用MLC颗粒的U盘可擦写1万次以上,而采用SLC颗粒的U盘使用寿命更是长达10万次.如果你的数据是长期存放而没有经常读写的话,那么你的U盘寿命相对会长一些. 除去人为因素,U盘的闪存芯片一般是SLC.MLC或者TLC制作的: SLC = Single-Level Cell ,即1bit/cell,速度快寿命长

聚合-报警数据 根据时间汇总(产生报警的时间是离散的)

问题描述 报警数据 根据时间汇总(产生报警的时间是离散的) 报警有可能是持续的 有可能是断断续续的,数据库存的是产生报警的时间.报警类型(高报还是低报).超出限值,数据是一秒一入库(有报警才入库),要求将这些数据按时间汇总(有连续的时间算一组).如:2014-10-1 1:00:01 -- 2014-10-1 1:30:21 持续报警,2014-10-1 3:20:11 -- 2014-10-1 3:30:01持续报警,共2409条数据,查出的聚合结果只有两条时间段 解决方案 http://gr