【翻译 - 部分】CluStream - 用于聚类不断演变的数据流的框架

CluStream - 用于聚类不断演变的数据流的框架

摘要 Abstract

​ 聚类问题是流式数据领域的一个难题。这是因为大规模的数据流的到达使得传统算法显得效率太低。近几年,一些逐条聚类的算法被发明出来应对流式数据的问题。尽管这些方法解决了聚类问题中的可伸缩性问题,但是他们对数据的演变视而不见,并且无法解决以下问题:(1)当数据随着时间的推移发展时,簇的质量会很差。(2)一个流式数据聚类算法面对不同部分的数据流时需要更强大的发现和探索簇心的功能。

​ 面对流式数据聚类算法广泛的做法是一类将数据逐条聚类的算法,这种做法从实践应用的角度来看并不是很有效。比如,一个简单地对整个包含几年数据的数据流进行逐条聚类算法会被过期的历史数据主导。不同时间窗口上的探索流可以让用户更深刻地理解簇心的演变行为。同时,即使对于中等大小的数据流,也不可能在所有可能的时间范围内同时动态聚类。

​ 本文讨论了一种处理流式数据聚类的不同的思想,这种思想是以应用为中心的需求所主导的。其思想是将聚类步骤切割为定期保存详细摘要统计信息的在线部分和只使用摘要统计信息的离线部分。离线部分是为分析人员准备的,分析人员可以使用各种输入,以便快速地了解大概的簇。对于快速数据流,有效选择、存储和使用这些统计数据的问题相当棘手。为此,我们将金字塔时间框架的概念与微簇方法相结合。我们在大量真实的和合成的数据集上进行的性能实验说明了我们的方法所提供的有效性和效率。

1 介绍 Introduction

​ 近年来,硬件技术的进步使我们能够快速地自动记录日常生活产生的事务。这样的过程导致大量的数据以无限的速度增长。这些数据被称为数据流。由于数据流的大量应用,近年来数据流问题得到了广泛的研究。

​ 在本文中,我们将研究数据流应用中的聚类问题。聚类问题的定义如下:对于一组给定的数据点,我们希望将它们划分为一组或多组相似的对象。对象之间的相似性通常通过使用一些距离度量或目标函数来定义。聚类问题因其应用范围广泛已经在数据库、数据挖掘和统计领域得到了广泛的研究。最近,聚类问题在数据流环境下再次受到了研究。

​ 以前关于聚类流式数据的算法,如引用[13]中讨论的那些算法,讨论的是假设簇是在整个数据流中计算的。这些方法只是简单地将流式数据聚类问题视为单遍聚类算法的一种变体。虽然这样的任务在许多应用程序中可能有用,但聚类问题需要在流式数据的环境中仔细定义。这是因为数据流应该被看作是一个无限的过程,它由数据组成,随着时间不断地演化。因此,簇也可能随时间发生相当大的变化。簇的性质可能会随着它们被计算的时刻以及它们被测量的时间范围而变化。例如,用户可能希望看到上个月、去年或十年前的簇。这些簇可能有相当大的区别。因此,流式数据聚类算法必须提供灵活性,以便在用户定义的时间段内以交互式方式计算簇。

​ 我们注意到,由于流数据在算法的设计上自然地施加了一次传递的约束,这使得使用传统算法在不同时间范围的计算集群中提供这样的灵活性变得更加困难。例如,将引用[13]中的基于流的k-means算法直接扩展到这种情况,就需要在所有可能的时间范围内同时维护聚类算法的中间结果。这样的计算负担随着数据流的增加而增加,并可能迅速成为在线实现的瓶颈。此外,在许多情况下,分析师可能希望在之前的某个时刻确定簇,并将它们与当前的簇进行比较。这产生更大的维护压力,对于快速的数据流来说可能会很快变得难以处理。

​ 由于数据流不能在计算过程中被重新访问,聚类算法需要维护大量的信息,这样才不会丢失重要的细节。例如,引用[13]中的算法被实现为k-means算法的连续版本,在整个算法的执行过程中,继续保持一些簇心,这些簇心会在算法执行的过程中改变或合并。当流的特征随着时间的推移而演变时,这种方法特别危险。因为k-means方法对数据点到达的顺序非常敏感。例如,一旦两个簇心合并,就没有办法在随后的流的演化过程中对簇心做必要的分割。

​ 因此,流式聚类很自然地将处理流程分割成在线微聚类和离线宏聚类两部分。在线微聚类部分需要一个非常高效的过程,以便在一个快速的数据流中存储适当的汇总统计信息。离线部分将这些汇总统计信息与其他用户输入一起使用,以便在需要时向用户提供对集群的快速了解。因为离线部分只需要摘要统计信息作为输入,实践证明,这种方法非常有效。这种分两阶段的方法还为用户提供了簇在不同时期演化的本质的灵活性。这为用户提供了相当多的见解。

​ 本文组织如下。在第2节中,我们将讨论流聚类框架下的基本概念。在第3节中,我们将讨论在整个流迭代处理过程中如何维护微簇。在第4节,我们将讨论微簇如何在离线宏聚类阶段被使用,从而创建不同时空维度的簇。由于该算法用于进化数据流的聚类,所以它也可以用来确定簇演化的性质。这个过程在第5节中描述。第6节汇报了我们对真实数据集和合成数据集的性能研究。第7节讨论了该方法的意义,并对本文的研究进行了总结。

2 流聚类框架 The Stream Clustering Framework

​ 在本节中,我们将讨论流聚类方法的框架。我们将其称为CluStream框架。将流聚类步骤分割成在线和离线两部分的做法引出了如下几个问题:

  • 能够有效地存储在连续数据流中的摘要信息的性质是什么?摘要统计信息应该为离线聚类过程提供足够的时间和空间信息,同时易于实现高效(在线)的更新过程。

  • 摘要信息应该在什么时间存储在磁盘上?如何在这样一个周期存储过程和在特定时间范围内聚集到期望的近似水平的能力之间实现有效的权衡?

  • 如何使用定期摘要统计信息使得用户在指定的时间范围内提供聚类和演变的视角?

    为了解决这些问题,我们引入了两个概念,这两个概念对快速数据流的高效数据收集有很大帮助:

  • 微簇:我们将数据局部的统计信息以微簇的形式保存起来。这些微簇被定义为簇特征向量的时间扩展。微簇的可加性使其成为解决数据流问题的自然选择。

  • 金字塔形的时间框架:微簇以快照的形式存储,并遵循金字塔的模式。这种模式在存储需求和从不同时间范围回忆摘要统计的能力之间提供了一种平衡。

​ 微簇中的摘要信息在离线部分使用,这部分依赖于各种各样的用户输入,如时间范围或集群的粒度。为了介绍上述概念,我们现在将讨论一些符号和定义。

假定数据流由一组多维记录组成
X ˉ 1 . . . X ˉ k . . . \bar X_1 ... \bar X_k ... Xˉ1...Xˉk...
这些数据按照顺序到达
T 1 . . . T K . . . T_1 ... T_K ... T1...TK...
每一个X就是一个包含d维的多维记录,形如:
X ˉ i = ( x i 1 . . . x i d ) \bar X_i = (x_i^1 ... x_i^d) Xˉi=(xi1...xid)

首先,我们将更精确地定义微簇和金字塔时间框架的概念。

定义1微簇
对 于 一 个 包 含 d 维 且 带 着 时 间 戳 的 数 据 集 X i 1... X i n , 时 间 戳 如 : T i 1... T i n 我 们 把 它 定 义 成 ( 2 ⋅ d + 3 ) 长 的 元 组 : ( C F 2 x ˉ , C F 1 x ˉ , C F 2 t ˉ , C F 1 t ˉ , n ) 对于一个包含d维且带着时间戳的数据集 X_i1 ... X_in,\\ 时间戳如: T_i1 ... T_in \\ 我们把它定义成(2·d+3)长的元组:(\bar{CF2^x},\bar{CF1^x},\bar{CF2^t},\bar{CF1^t},n)\\ dXi1...Xin:Ti1...Tin2d+3CF2xˉ,CF1xˉ,CF2tˉ,CF1tˉ,n

其 中 C F 2 x ˉ 和 C F 1 x ˉ , 每 一 个 都 对 应 一 个 由 d 个 元 素 组 成 的 向 量 , 每 一 项 的 定 义 如 下 : 对 于 每 一 个 维 度 , 数 据 集 每 一 维 开 方 之 和 被 保 存 在 C F 2 x ˉ 中 。 因 此 , C F 2 x ˉ 有 d 个 值 。 也 就 是 说 , C F 2 x ˉ 的 第 i 个 样 本 的 第 p 个 输 入 就 是 ∑ j = 1 n ( x i j p ) 2 对 于 每 一 个 维 度 , 数 据 值 的 总 和 保 存 在 C F 1 x ˉ 。 因 此 , C F 1 x ˉ 包 含 了 d 个 值 。 C F 1 x ˉ 的 第 p 个 输 入 等 于 ∑ j = 1 n x i j p 时 间 戳 的 平 方 和 T i 1 . . . T i n 被 保 存 在 C F 2 t ˉ 时 间 戳 的 总 和 T i 1 . . . T i n 被 保 存 在 C F 1 t ˉ 数 据 点 的 个 数 保 存 在 n 中 其中 \bar{CF2^x}和 \bar{CF1^x},每一个都对应一个由d个元素组成的向量,每一项的定义如下: \\ 对于每一个维度,数据集每一维开方之和被保存在\bar{CF2^x}中。因此,\bar{CF2^x}有d个值。 \\ 也就是说,\bar{CF2^x}的第i个样本的第p个输入就是 \sum_{j=1}^n(x_{i_j}^p)^2 \\ \\ 对于每一个维度,数据值的总和保存在\bar{CF1^x}。因此,\bar{CF1^x}包含了d个值。 \\ \bar{CF1^x}的第p个输入等于\sum_{j=1}^nx_{i_j}^p \\ \\ 时间戳的平方和 T_{i_1} ... T_{i_n}被保存在\bar{CF2^t} \\ \\ 时间戳的总和 T_{i_1} ... T_{i_n}被保存在\bar{CF1^t} \\ 数据点的个数保存在n中 \\ CF2xˉCF1xˉ,d,:CF2xˉCF2xˉdCF2xˉipj=1n(xijp)2,CF1xˉCF1xˉdCF1xˉpj=1nxijpTi1...TinCF2tˉTi1...TinCF1tˉn

我们注意到,上述微簇的定义是引用[14]中簇特征向量的时间扩展。我们将CFT©中的一组C点作为微簇。与在引用[14]中一样,这些摘要信息可以在不同的数据点上以加法的方式表示。这使得它成为在数据流算法中使用的自然选择。在给定的时间点,算法维护数据流中占主导地位的微簇的统计信息。正如我们将在后面的阶段看到的,与引用[13]中讨论的方法相比,维护过程的本质确保了可以有效地维护的大量的微簇。在线更新过程的高粒度保证了它能够在不断变化的数据流中提供质量更好的簇。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值