一种基于滑动窗口的流数据聚类算法
第一个以流数据为分析对象的聚类算法是由Sudipto Guha 等提出的STREAM 算法。这种算法根据分治原理,使用一个不断迭代的过程实现有限空间对数据流进行K-means聚类,但该算法无法处理演化的数据流。
Aggarwal 在总结上述方法本质缺陷的基础上提出了一个数据流聚类框架Clustream[5],其核心思想是将聚类过程分为在线和离线两个阶段。在线部分的任务是存储数据流的汇总结果,生成一种称为微聚类的信息存储结构,并按金字塔式时间结构将中间结果进行保存。离线部分既是根据用户指定的观察时段及聚类数量,快速生成聚类结果的过程。
CluStream 不足之处在于需要用户指定聚类簇数k,要求强行输入固定的聚类簇数必然影响真实的聚类形态分布。同时,算法是以K-means 算法为基础,对非凸形状聚类效果不好,无法发现任意形状的聚类,且当噪声数据增多时,聚类质量急骤下降。
Aggarwal 等后续提出了专门针对高维连续属性数据流的HPStream 算法,该算法引入了子空间聚类,并提出了具有遗忘特性的聚类结构,使用高维投影技术和衰减结构来处理高维数据流,HPStream 算法对高维数据流具有很好的健壮性。但算法中需要用户来指定平均聚类维数,用户一般并不具备这种领域知识,成为该算法的瓶颈。Cao 等人提出了基于密度的两阶段聚类方法,即DenStream 算法,该算法仍然沿用CluStream 算法中的双层结构,创造性的引入了潜在微聚类簇和孤立点微聚类簇结构,具备对孤立点的分析能力,即随着数据流不断进化,算法可以识别在某一时间段有可能演变成聚类簇的孤立点或“潜在聚类”,从而更加准确的捕获真实的聚类形态。但由于算法中采用全局一致的绝对密度作为参数,使得聚类结果对参数十分敏感,而且它不支持指定的时间窗口内实时数据流的演化分析。
受到广泛关注的3 类方法是基于网格的数据流聚类技术[6-9]、子空间聚类技术[7-9]、混合属性数据流聚类[10],代表了当前数据流聚类研究的主流方向。
对算法CluStream进行了改进, 采用滑动窗口来支持数据处理。为了减少聚类操作中每次迭代的计算次数, 算法采用改进的k- means来执行聚类操作。优化后的算法能及时淘汰过期元组, 同时对新到达的元组不断进行实时处理, 可以获得更准确的分析结果。
流数据的聚类算法研究过程中, 分别出现了基于k- means和k- medians的Stream算法和CluStream [3]算法以及Aggarwal等人的HPStream [4] 。
2003年Aggarwal提出了著名的CluStream, 实现了两层聚类的框架。之后朱蔚恒等在CluStream 基础上提出了ACluStream[5] 算法, 改进了CluStream 算法。C. A ggarwal等在文中又提出HPStream 算法, 采用投影技术解决数据流的高维聚类问题。周晓云等对于高维Turnstile型数据流提出了高维数据流聚类算法HT - Stream [ 6]。数据流挖掘现有的数据流聚类算法主要以CluStream 算法为核心代表。CluStream 算法是在界标窗口内对进化数据流进行分析。然而, 该算法并不适用于滑动窗口下的聚类分析问题[ 7] 。
其主要限制在于:
( 1)在滑动窗口条件下, 该算法需要大量的快照存储开销和较大处理代价;
( 2)在线聚类过程中无法及时消除过期元组的影响, 从而使算法的聚类效果大为降低, 不能很好地反映最近一段时间内数据流的分布状况。
数据流的滑动窗口模型能更好地实现对最近到达数据的处理。在此基础上,针对传统的基于界标模型的数据流聚类算法CluStream的不足之处, 为提高对流式海量数据的准确、及时的聚类分析, 提出了新的TRCluStream 算法, 很好的反映了聚类结构的变化过程, 降低计算复杂度, 从而提高了算法的计算效率及计算质量。
在这个算法中, 采用动态triangle-k-m ean算法不断的试探性的调整聚类的个数, 减少聚类操作中每次迭代的计算次数, 提高聚类质量。
在滑动窗口模型下构造概要数据结构不同于在界标模型下构造数据结构的原因是, 不仅新数据不断到达, 而且旧数据会过期[9]。因此, 关键技术就是如何处理旧数据使得查询结果一直可靠[10]。
基本窗口技术是滑动窗口技术中的一种。将一定长度的滑动窗口按照时间次序划分成若干个等宽的子窗口, 称为基本窗口。如果窗口所包含的元素均己过期, 则删除表征这个基本窗口的小结构。
TRC luStream 算法的具体实现过程包括两个部分:实时聚类过程和离线聚类过程。
实时聚类过程中, 首先在一个长为L的最新的时间片内, 定义一个长度为L的滑动窗口, 当前时间为t。把滑动窗口L 划分为m 个连续的、等宽的基本窗口, 长度为l。通常在滑动窗口和基本窗口上维持时间信息和摘要信息, 同时也要维持整个滑动窗口的摘要信息。算法根据统计信息进行聚类。历史结果对当前的影响会随着时间的流逝而逐渐减弱。当滑动窗口中最早的基本窗口失效而移出的时候, 新的窗口充满后会加入到滑动窗口当中, 摘要信息随之更新。最后输出初始聚类结果。这样处理可以带来一些好处[11] : 在基本窗口上维持摘要信息, 可以使得计算的任意性提高, 并不一定只是基本窗口大小的整数倍。如果基本窗口很短, 则可以给出快速的响应。
TRCluStream 算法的离线聚类模块和CluStream 的离线聚类模块思想相同。
每次聚类时, triangle-k-means只需要处理新窗口中没有与旧窗口叠加的部分。这是因为在TRCluStream的挖掘过程中, 对新窗口的挖掘是基于前一个窗口叠加部分的挖掘结果进行的, 这要求每次在旧窗口滑动时求出叠加部分的挖掘结果, 只需聚类未叠加的部分。算法的主要思想是利用三角形三边关系定理(两边之和大于第三边)来简化聚类的比较过程。考虑到流数据的特点, 文中采用的距离为特征空间上的欧式距离[ 12]。
浙公网安备 33010602011771号