数据流挖掘中的聚类方法综述 - semantic scholar · 2015-07-29 ·...

12
数据流挖掘中的聚类方法综述 徐天音 (南京大学 计算机科学与技术系, 南京 210093) A Survey of Clustering Methods in Mining Data Streaming Tianyin Xu * (Department of Computer Science and Technology, Nanjing University, Nanjing 210093, China) Abstract: The research to data streaming model has recently gained a high attraction due to its applications, including real-time surveillance systems, network intrusion detection and click streams. Clustering, one of the most important problems in streaming mining, has recently been highly explored because its application to data summarization and outlier detection. Due to the characteristics of data streaming against traditional data mining technique, new requirements and challenges have been proposed. This paper is a survey of various kinds of clustering methods in mining data streaming. In this paper, we’ll make an effort to review the state-of-the-art of clustering methods of data streaming mining and provide a big picture of this domain. To achieve this goal, we’ll first introduce the basic concepts, requirements and fundamental techniques. Then, we’ll look back into history to track the development of the clustering methods. After describing some classic and popular clustering algorithms, we’ll discuss what problems have already been solved. At last, we’ll put forward some further research issues in this domain. Key words: Clustering; Data Streaming; Data Mining; Clustering Data Streaming; Streaming Mining : 近期,随着诸如实时监控系统、网络入侵检测和 web 上用户点击流等动态的应用环境源源不断地产 生海量的、时序的、快速变化的和潜在无限的数据流,对数据流挖掘的研究变得重要而富有意义。聚类分析作 为数据流挖掘领域的一个重要问题,在近期被高度重视和广泛研究。由于数据流模型不同于传统数据集的特殊 性质,新的要求和挑战应运而生。本文对数据流挖掘中各种聚类分析算法和处理框架做了综述。文章力图回顾 数据流聚类分析领域的最近发展水平,提供给读者该领域的一个清晰的蓝图。为了实现这个目标,我们将首先 介绍数据流聚类的基本概念、要求和底层的支撑技术。然后,我们将回顾历史,追寻各类数据流聚类算法和 处理框架的发展轨迹将有助于深入理解这些算法。在详细描述一些经典和流行的聚类算法和处理框架后, 我们将讨论该领域中哪些问题已经得到解决。最后,我们将展望未来,提出数据流聚类领域中进一步的研 究热点和研究方向。 关键词: 聚类; 数据流; 数据挖掘; 数据流聚类; 数据流挖掘 作者简介: 徐天音,南京大学计算机科学与技术系,研究生

Upload: others

Post on 27-Jun-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

数据流挖掘中的聚类方法综述

徐天音 ∗

(南京大学 计算机科学与技术系, 南京 210093)

A Survey of Clustering Methods in Mining Data Streaming

Tianyin Xu*

(Department of Computer Science and Technology, Nanjing University, Nanjing 210093, China)

Abstract: The research to data streaming model has recently gained a high attraction due to its applications, including real-time surveillance systems, network intrusion detection and click streams. Clustering, one of the most important problems in streaming mining, has recently been highly explored because its application to data summarization and outlier detection. Due to the characteristics of data streaming against traditional data mining technique, new requirements and challenges have been proposed. This paper is a survey of various kinds of clustering methods in mining data streaming. In this paper, we’ll make an effort to review the state-of-the-art of clustering methods of data streaming mining and provide a big picture of this domain. To achieve this goal, we’ll first introduce the basic concepts, requirements and fundamental techniques. Then, we’ll look back into history to track the development of the clustering methods. After describing some classic and popular clustering algorithms, we’ll discuss what problems have already been solved. At last, we’ll put forward some further research issues in this domain.

Key words: Clustering; Data Streaming; Data Mining; Clustering Data Streaming; Streaming Mining

摘 要: 近期,随着诸如实时监控系统、网络入侵检测和 web 上用户点击流等动态的应用环境源源不断地产

生海量的、时序的、快速变化的和潜在无限的数据流,对数据流挖掘的研究变得重要而富有意义。聚类分析作

为数据流挖掘领域的一个重要问题,在近期被高度重视和广泛研究。由于数据流模型不同于传统数据集的特殊

性质,新的要求和挑战应运而生。本文对数据流挖掘中各种聚类分析算法和处理框架做了综述。文章力图回顾

数据流聚类分析领域的最近发展水平,提供给读者该领域的一个清晰的蓝图。为了实现这个目标,我们将首先

介绍数据流聚类的基本概念、要求和底层的支撑技术。然后,我们将回顾历史,追寻各类数据流聚类算法和

处理框架的发展轨迹将有助于深入理解这些算法。在详细描述一些经典和流行的聚类算法和处理框架后,

我们将讨论该领域中哪些问题已经得到解决。最后,我们将展望未来,提出数据流聚类领域中进一步的研

究热点和研究方向。 关键词: 聚类; 数据流; 数据挖掘; 数据流聚类; 数据流挖掘

∗ 作者简介: 徐天音,南京大学计算机科学与技术系,研究生

Page 2: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

2

1 引言(Introduction)

1.1 数据流

随着通信技术和硬件设备的不断发展,尤其是小型无线传感设备的广泛应用,数据采集变得越来越便捷

和趋于自动化。新兴的应用领域,诸如实时监控系统、气象卫星遥感、网络通信量监测和电力供应网等等,

每时每刻都在源源不断地产生大量的数据。与传统的数据集不同,这些数据是海量的(massive)、时序的

(temporally ordered)、快速变化的和潜在无限的(potentially infinite)。[1]我们称这样的数据形态为数据流(Data Steaming, 简称Streaming),并用数据流模型(Data Streaming Model)来描述它。

1.2 数据流挖掘算法的特点

由于数据流的特性,将传统的 OLAP 和数据挖掘方法用之于数据流是不可行的。其主要表现在: (a)数据流中的数据是海量的,所以不可能在内存及硬盘上存储整个流数据集。甚至问题不仅在与有太

多的数据,而在于需要记录的属性值的定义域(全域)都相当大[1]; (b)同样因为数据量巨大,传统的多遍扫描数据的挖掘方法是不切实际的。所以对数据流的挖掘应该是

一个单遍扫描的过程(one-pass scan); (c)数据流是快速变化的,所以不可能看到数据流的中的每一个数据元素(data point),我们只能通过

分析部分数据元素来做出决策; (d)数据流是时序的,所以对流中数据元素的访问只能是单次线性的(linear scan)。即数据元素只能按

其流入顺序依次读取一次,随机访问是不现实的; (e)大多数应用要求很快的响应时间,并且挖掘应该是一个连续、在线的过程,而不是偶然进行一次[2]; (f)数据流往往天生就是高维的(High-Dimensional)[3]。

1.3 聚类分析

聚类分析(Clustering Analysis)是数据挖掘领域中一个重要的研究课题。聚类(Clustering)是指对一个

已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

的元素是彼此相似的,而与其它簇中的元素相异[1]。聚类分析作为独立的工具有着广泛的应用场景,并且可

以(并且常常)作为数据挖掘中的其他部分(如特征和预测)的预处理过程[1]。

1.4 数据流挖掘中的聚类分析及其要求

聚类分析已经被广泛研究了许多年,已经有许多有效的方法用于聚类静态数据集。但是由于上述的数据

流本身的特性(见 1.2)造成的诸多限制,传统的聚类方法不能直接运用到数据流聚类上。我们需要的是适

合于数据流模型的、仅使用有界内存和有界处理时间的单遍扫描数据的高效聚类方法。 文献[4]中总结了除满足前述数据流本身的特性外,一个好的数据流聚类算法应该具备的 3 个要求: (a)对已发现的簇提供一个简洁的表示方法(representation); (b)对新的数据元素的处理应该是个增量式的方式(incremental processing),并且应该它是快速的; (c)有清晰而快速地孤立点检测(outlier detection)的能力。 随着逐渐增多的应用领域持续不断地产生大量的数据流信息,计算机系统的存储、计算和通信能力受到

了极大的挑战。在 近几年里,越来越多的数据流聚类分析算法被提出和发展以面对这些挑战。本文将回顾

历史、展望未来,深入讨论数据流聚类分析算法的昨天、今天和明天。

1.5 文章的组织(Overview of the Paper)

本文余下部分组织如下:第 2 部分介绍了数据流聚类的预备知识,包括一些基本概念和支撑技术。我们

将在第 3 部分回顾历史,追寻各类方法的发展轨迹能让我们更好地理解这些数据流聚类算法。而各种具体的

聚类分析算法和技术将分别在第 4 部分详细地介绍和描述。第 5 部分讨论了已经解决的问题。在第 6 部分中,

我们将展望未来的工作,包括已经提出的问题和更具开放性的主题。 后,第 7 部分总结了这篇综述。

Page 3: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

3

2 预备知识(Preliminaries)

2.1 基本概念(Basic Concepts)

1). 数据流模型

数据流模型(data streaming model)是一个带有时间戳(Time Stamp)的多维数据点集合 1,..., kX X 。

每一个数据点 iX 是一个包括 d 维的多维数据记录(record),表示为1

1( ,..., )di kX x x= 。

2). 孤立点 孤立点(outlier)是指这样的数据点:它与数据集的一般行为和模型不一致。它可能是度量或执行错误

所导致,在数据挖掘中将其视为噪声或异常。

2.2 支撑技术(Fundamental Techniques)

为了有效地处理数据流,我们需要新的数据结构、技术和算法[1]。我们没有无限大的空间去存储整个数

据流,这就需要在精度和存储空间之间进行折衷。一般而言,近似的结果在很多应用领域已经足以满足要求。 Gaber 等在文献[6]中将底层的支撑技术分为两类:基于数据的(Data-based)和基于任务的(Task-based)。

基于数据的技术力图仅仅处理整个数据集中的小部分数据或将数据转换成某种近似的小尺寸表示形式;而基

于任务的技术则将目标瞄准了在时间和空间上更高效的解决方法。

2.2.1 基于数据的技术(Data-based Techniques)

1). 抽样(Sampling) 抽样作为一个经典的统计学方法,通过一定概率来决定一个数据元素是否被处理。这样可以避免处理整

个数据流。但是在数据流模型中,抽样技术的问题是不可能预先知道流的长度。可以使用水库抽样(reservior sampling)的技术来解决这个问题[1]:在“水库”中维护s个候选的样本,形成目前看到的流的随机样本集,

随着数据流的流动,新的数据元素都有一定的概率替代水库中的元素。 在数据流中使用抽样技术的另一个问题是数据流的流动速率是不稳定的。所以,对于那些需要监测不规

则且上下浮动的数据流的应用,抽样技术并不是一个很好的选择。 2). 梗概(Sketching) 梗概是一个将数据流中的数据向量做一个随机投影的过程。它建立这些分布向量(如直方图)的小空间

汇总[1]。梗概广泛用于不同数据流的比较和聚集查询。梗概是对精度和存储空间进行折衷的极佳范例,但是

同时,精度问题是它的主要缺陷。 3). 大纲数据结构(Synopsis Data Structure) 大纲数据结构是通过应用概要技术(summarization techniques),生成的比当前数据流小得多的数据结构。

它是当前数据流的概要描述。已经被提出的概要技术包括:小波分析、直方图(histogram)和频率矩(frequency moment)等等。

当然,由于大纲数据结构不可能表示出原数据流的所有特性,使用大纲数据结构只能得到一个近似结果。 4). 聚集运算(Aggregation) 聚集运算试图通过计算一些统计度量,诸如平均数和方差等来概括当前的数据流。不过类似所有统计学

的方法,它不适合速率高度摇摆和分布式的数据流。但它仍然是数据流挖掘中的重要工具。

2.2.2 基于任务的技术(Task-based Techniques)

1). 滑动窗口(Sliding Window) 滑动窗口模型基于这样一个事实:“用户对于 近的数据更感兴趣。”这样,我们可以对少量的近期数据

做细节分析,而对大量的历史数据,仅仅给出一个概要试图[6]。这样,只需存储小的数据窗口,减少了对内

Page 4: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

4

存的需求。滑动窗口的一个缺陷是要求用户预先指定窗口的尺寸,而在很多应用中,窗口的大小不可能事先

知道。 2). 衰减函数(Fading Function) 另一种强调近期数据的重要性、消减历史数据对计算结果影响的方法是衰减因子和衰减函数。数据元素

在参与计算前,先经过衰减函数的作用。因此,每个数据元素对 终结果的影响将随着时间的推移逐渐减小。

一种常用的衰减函数形式为指数形式,比如文献 [7]中提出的 Den-Stream 算法使用的衰减函数为

( ) 2 tf t λ− ⋅= ,其中 0λ > 。

3). 倾斜时间框架(Titled Time Frame) 滑动窗口和衰减函数都只能在单一时间维的窗口上得到计算结果。然而,很多应用要求在不同的时间粒

度层上进行分析和挖掘。比如,用户通常对细粒度层上的当前变化感兴趣,而在粗粒度层上对长期变化感兴

趣[1]。 为此,我们可以构建不同层次的时间粒度窗口。 近的数据在 细的粒度层上记录和运算,较久远的数

据在较粗的粒度上记录和运算[1]。这样,我们不仅可以满足需求,而且不会占用太多的存储空间。更重要的

是,我们可以构建适合应用需要和当前存储条件的粒度层。这样的时间维模型被称为“倾斜时间框架”。 Han 和 Kamber 在文献[1]中介绍了三种倾斜时间框架模型:自然倾斜时间框架模型(natural)、对数尺度

倾斜时间框架模型(logarithmic scale)和渐进对数时间框架模型(progressive logarithmic)。如下图所示:

图 1 [1] 倾斜时间框架的三种模型

Aggarwal 等在文献[8]中提出的 CluStream 聚类算法就是基于一种称为 Pyramidal Time Frame 的渐进对数

倾斜时间框架模型,如下表所示:

Table 1 [8] An example of snapshots stored for α =2

表 1 [8] 金字塔时间框架模型(α =2) 让我们来看看被广泛使用的渐进对数时间框架:在表 1[8]中,流数据快照(snapshot)按照不同的时间粒

度被存储在不同的时间粒度层上。令i=Order of Snapshot(表格左边一栏的数据),则快照的时间间隔为α i(这

里,底数α =2)。这样,距离当前越近的时间戳,快照存储的密度就越高。并且,渐进对数时间框架维护了

一个替代算法,使新的流数据到来时能插入正确的时间粒度层,以替代 老的数据。 注意到表 1[8]中的金字塔时间框架模型与图 1[1](c)中的渐进时间框架模型有所不同:即不同时间粒度层中

的数据存在重叠(表中划横线的数据即为重叠数据)。并且可知,重叠数据为每层上能被α i+1整除的数据。

Page 5: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

5

3 发展和演化历史(History)

忘记过去的人,注定要重蹈覆辙。——George Santayana 创造新方法的一个绝佳途径是扩展和改进原有的方法,以适应新的应用和需求。事实上,大多数面向数

据流的聚类算法正是通过扩展传统数据集上的聚类算法,使之适应数据流模型而得到的。回顾一下数据流的

发展和演化历史,将有助于我们更深入地理解隐藏在各类数据流聚类算法背后的思想和灵感。 Han 和 Kamber 在文献[1]中将传统的聚类算法分为 5 类:划分方法、层次方法、基于密度的方法、基于

网格的方法和基于模型的方法。通过扩展这些类别中的各种算法,大量面向数据流应用的聚类算法破茧而出。 下面,让我们看看各类数据流聚类算法的发展和演化过程。

3.1 扩展划分方法(extending Partitioning Methods)

划分方法将包含n个数据元素的数据集组织成k个划分(k≤n),其中每个划分代表一个簇[1]。已提出的划

分方法包括k-平均算法(k-Means)和k-中心点算法(k-Medoids)等。 Guha 等在文献[9,10]中扩展了 k-平均算法来处理数据流。他们提出的算法仅仅使用单遍扫描,并且需要

存储空间相对较少。算法的时间复杂度和空间复杂度分别为 O(nk)和 O(nε ),其中 n 是数据元素的个数、k是簇中心点的个数,ε <1。

Babcock等在文献[11]中使用一种称为指数直方图(EH, exponential histogram)的数据结构来改进Guha等人的算法。算法思想没有改变,仅仅用EH结构来实现簇的合并。

Charikar 等在文献[12]中使用分而治之(Divide and Conquer)的策略改进了 k-平均算法的性能。该算法

首先将数据分块,然后通过计算各个小数据块的汇总信息来得到 终的结果。 基于 k-平均算法,O’Challagham 等在文献[13]中提出了 STREAM 算法。STREAM 算法采用分级聚类的

技术,并引入 LSEARCH 算法改进了 k-Means 算法,得到了更好的性能和更高质量的结果簇。

3.2 扩展层次方法(extending Hierarchical Methods)

层次方法对数据元素集合进行层次的分解,形成一棵由聚类组成的树[1]。典型的层次方法是BIRCH算法

(Balanced Iterative Reducing and Clustering using Hierarchies),此外还有ROCK、Chameleon和CURE等。 Aggarwal 等在文献[8]中扩展了 BIRCH 算法中聚类特征(clustering feature)的概念,提出了 CluStream

算法。这是一个数据流聚类的处理框架,它把聚类过程分为两个部分:联机的微聚类(microclustering)和脱

机的宏聚类(macroclustering)(后面的部分将会详细地介绍)。CluStream 的提出的这个两阶段处理框架被许

许多多后来的数据流聚类算法所采用和遵循。 在文献[3]中,Aggarwal等针对高维数据流,改进了CluStream算法,提出了HPStream算法。HPStream基

于“众多数据流天生就是高维的。[3]”这个事实,通过引入投影技术(project clustering)和衰减簇结构(fading cluster structure),来更好地支持高维数据流的聚类分析。CluStream和HPStream是两种被广泛认可、并且十分

流行的数据流聚类算法。 Udommanetanakit 等在文献[5]中提出的 E-Stream 算法,是对 HPStream 的一个很好的补充。

3.3 扩展基于密度的方法(extending Density-Based Methods)

绝大部分的聚类算法是基于对象之间的距离度量,这样的聚类方法只能发现球状的簇,但是在对任意形

状的簇进行聚类时会遇到困难[1]。基于密度的方法旨在解决这个问题。这类方法将簇看作数据空间中被低密

度区域分割开的高密度数据元素区域 [1]。DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法是一个被广泛使用的基于密度的聚类方法。此外还有OPTICS、DENCLUE等基于密度的算法。

Cao F 等在文献[7]中扩展了 DBSCAN 算法,提出了面向数据流的基于密度的聚类算法 DenStream。它采

用 CluStream 算法中提出的两阶段处理框架,并引入了潜在簇结构和孤立点簇结构。实际上,当聚类请求到

达时,DenStream 仍然采用 DBSCAN 算法来得到 后的聚类结果。

Page 6: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

6

3.4 扩展基于网格的方法(extending Grid-Based Methods)

基于网格的方法把数据元素空间量化为有限数目的单元,形成一个网格结构[1]。所有的聚类操作都在这

个网格结构上进行[1]。基于网格的算法往往跟基于密度的算法结合使用,如CLIQUE算法。这类算法的一个显

著优点是它的运行速度很快。 Chen 等在文献[14]中提出的 D-Stream 就是一个基于网格和密度的数据流聚类算法。它使用密度网格

(Density grid),基于密度和网格产生高质量的聚类结果。 Bhatnagar等在文献[15]中提出的ExCC(Exclusive and Complete Clustering of Streams)算法也是基于网格

和密度的数据流聚类算法。ExCC算法将目标瞄准了簇聚类的完备性(completeness)和排他性(exclusiveness),提出了完备性聚类的概念。

3.5 基于模型的方法(Model-Based Methods)

基于模型的方法试图为数据集假定一个数学模型,诸如统计学模型和神经网络模型[1]。基于模型的方法

如EM算法(Expectation-Maximization)、COBWEB等。目前还没有类似的方法被扩展应用到数据流聚类分析

中。但如果必须生硬的划分,下面介绍的回顾分析的方法是基于数据模型的。

3.6 回归分析方法(Regression Analysis Methods)

Motoyoshi等在文献[17]中提出了利用回归分析实现数据流聚类的算法CFR(Clustering using F-value by Regression analysis)。回归分析的方法在预先假设数据元素具有局部线性(local linearity)的前提下,利用数

学函数来进行一个多变量分析(multi-variable analysis)。回归分析方法分为初始化和合并两个步骤。此外,

它的初始簇集是通过数学函数构建的,而不像基于k-平均的算法那样近似地得到。

图 2 数据流聚类算法的发展与演化示意图

图 2 总结了从传统数据集的聚类算法到面向数据流的聚类算法的发展和演化过程。我们的罗列是不完全

的,还有一些在发展过程中的优秀算法和思想没有出现在图中。诸如,Domingos等扩展了机器学习中的算法,

提出的基于Hoeffding界和k-平均算法的VFKM算法(Very Fast K-Means);Gaber等提出的基于AOG(Algorithm Output Granularity)的面向传感器网络中数据流的LWC算法(Lightweight Clustering)等等[6]。

Page 7: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

7

4 数据流聚类算法(Methods and Algorithms)

我们将在这个部分中相对深入和详细地介绍具体的数据流聚类算法。由于已经存在大量的数据流聚类算

法,所以介绍不可能面面俱到。我们的原则是选择有代表性的经典算法,如果它还是流行的,那就再好不过

了。对于在第 3 部分中划分出的 4 个类别,每个类别将至少有一个算法出现在本部分中。

4.1 STREAM算法

STREAM算法聚焦于解决k-中位数问题(k-medians),即把度量空间中的n个数据点聚类成k个簇,使得

数据点与其簇之间的误差平方和(SSQ) 小[1]。 STREAM 算法处理 m 个数据点的桶中的数据流,桶的大小与内存相符。算法把每个桶的数据点分成 k

个簇,并且仅仅保留 k 个簇中心点(而丢弃其余的数据)来汇总桶中的所有数据。每个中心点的权(weight)为该簇中数据点的个数。随着数据流的流入,这个过程不断地被重复,每次处理的数据个数为 m 个。

此外,STREAM 算法使用 LSEARCH 算法改进了 k-平均算法,使“k”更灵活:在算法的中间步骤中,

簇的个数不再是一个固定的值,而是一个更合理的值,仅仅在算法结束时趋向于 k。 如上所述,STREAM 算法实现了单次扫描,时间复杂度为 O(kn)。 STREAM 算法与传统数据的聚类算法相比(O’Challaghan 在文献[13]与 BIRCH 相比较),有更好的性能,

并能产生更高质量的聚类结果。但是,STREAM 算法没有考虑数据流的演变,即算法没有给予 近的数据较

大的权重。这样,聚类的结果可能受控于过期的数据点。此外,STREAM 算法更趋近与一个批处理的过程,

无法给出一个 anytime 的回应,即算法无法在任意时刻给出当前数据流的聚类结果。 后,STREAM 的不足

还包括无法给出不同时间粒度的聚类结果等等。

4.2 CluStream算法框架

确切地说,CluStream 远非算法这么简单,而是一个数据流的聚类分析框架。CluStream 算法解决了

STREAM 算法的两个问题。即它是增量式(incremental)的聚类算法,在每个数据项到来时进行处理,能给

出 anytime 的回应;并且,它使用 Pyramidal 时间框架(见 2.2.2(3)部分),能给出不同时间粒度的聚类结果。

这对于希望分别考察诸如上周、上月以及去年的聚类分析结果的用户意义重大! CluStream 算法的开创性贡献是提出了将聚类分析的过程分为联机和脱机两个部分的处理框架。联机部

分使用微簇(microcluster)计算和存储数据流的汇总统计信息,实现增量的联机聚类查询;脱机部分则进行

宏聚类(macroclustering),利用 Pyramidal 时间框架提供用户感兴趣的不同时间粒度上的聚类结果。CluStream的这个两阶段处理框架被许许多多后来的数据流聚类算法所效仿和采纳。

CluStream中的微簇由聚类特征(CF,Clustering Feature Vector)来定义,该“聚类特征”是BIRCH算法

中的CF在时间域上的扩展。带时间戳T 的d维数据点集 的微簇被定义为(2∙ d + 3)元组( CF21 ni iT… i1 niX X… x,

CF1x, CF2t, CF1t, n )。其中,矢量CF2x和CF1x

分别是每维数据值的平方和及累加和,如第p维的CF2x

和CF1x分别是 和2

1( )

j

npi

jx

=∑

1j

npi

jx

=∑ ;类似的,标量CF2t

和CF1t分别是时间戳的平方和及累加和;n则是数

据点的个数。所有的微簇将作为整个数据流的快照被存储在Pyramidal时间框架的相应时间点上。 由 BIRCH 中 CF 的可加减性,不难推导出 CluStream 中的聚类特征的可加减性。籍此,CluStream 算法

成为一个增量式的处理过程。回顾 1.4 节,这是数据流聚类算法的基本要求之一。 联机的微簇维护过程由初始化和更新阶段组成:首先初始化q个微簇M1…Mq ,q根据内存的情况取尽可

能大的值,q个微簇根据当前数据的统计信息用k-平均算法得到。然后,更新微簇。每个新数据点根据是否落

在某个微簇的边界之内,选择加入某个微簇或者新建一个微簇。前者根据可加性被已存在的微簇“吸收”,后

者则需要删除一个 近 少用的微簇或者合并存在的微簇以保持q值不变。

Page 8: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

8

脱机部分实现用户指导的宏聚类和聚类演变分析[1]。宏聚类提供用户要求的不同时间粒度的聚类结果;

聚类演变分析考察聚类结果如何随时间变化。通过Pyramidal时间框架和聚类特征的可加减性,这两点都不难

实现。前者根据当前时间tc和用户指定的时间范围h,在Pyramidal时间框架中找到t时刻的快照S(t)和(tc-h)时刻

的快照S(tc-h),相减得到(tc-h)到tc之间生成的微簇集N(tc, h)。N(tc, h)即是加权虚拟点集。然后用STREAM算

法进行聚类,得到h时间范围内的数据流聚类结果。 聚类演变分析(Evolution Analysis)告诉用户在哪些数据点在t1时刻的簇中出现而在t2时刻的簇中消失,

哪些数据点在两个时刻的簇中都存在。给定t1 、t2和h,计算出N(t1, h)和N(t2, h)。通过比较N(t1, h)和N(t2, h),就不难回答上述的问题。

CluStream通过使用倾斜时间框架,保存了数据流演变的历史信息,在数据流变化剧烈时仍可以产生高质

量的聚类结果,并且提供了丰富的功能[1]。但是,它没有考虑历史数据的衰减问题,即没有体现出近期数据

的重要性。此外,当被应用于高维数据流的聚类时,CluStream算法往往表现不佳。

4.3 HPStream算法框架

针对 CluStream 的两点不足,Aggarwal 等在次年提出了 HPStream 算法框架(High-dimensional Projected Stream Clustering method)。HPStream 针对高维数据流,较之 CluStream 主要做了如下改进:首先,HPSream引进了投影聚类技术(projected clustering)来处理高维的数据流,这比 STREAM 和 CluStream 中对所有相关

维做全维聚类(full dimensional clustering)要高效和合理。其次,与 CluStream 在整个数据流上计算微簇不

同的是,HPStream 使用衰减簇结构(fading cluster structure)来保存历史数据。衰减簇结构使用衰减因子,

随着时间的推进,不断衰减历史数据对当前聚类结果的影响,更好地将当前数据和历史数据集成起来。 文献[3]中通过对网络入侵检测和森林覆盖类型两种流数据集进行实验。结果表明 HPStream 在存储性能

和处理速度上都优于 CluStream。HPStream 算法目前已成为主流的数据流聚类算法之一。

4.4 E-Stream算法

E-Stream 算法将目光瞄准了数据流的演化过程描述。算法主要通过定义和支持 5 种不同的演化类型来表

示数据流聚类的演化行为,以此改进目前存在的数据流聚类算法。这 5 种类型分别为:出现(Appearance)、消失(Disappearance)、自演化(Self-evolution)、合并(Merge)和分裂(Split)。

算法的主要流程框架见图 3:

图 3 E-Stream数据流聚类算法主框架[5] 图 4 DenStream的联机处理框架[7]

算法以接受一个新的数据元素作为开始(第 1 行);然后衰减所有簇,并删除没有足够权值的簇(第 2行);第 3 行进行直方图分析,执行簇的分裂;第 4 行检测且合并交迭的簇;第 5 行检测簇的数量是否超过限

制,如果超过则合并 相近的簇;第 6 行检测各个簇的是否处于活跃状态;7-10 行将新的数据点插入到 邻

近的簇中,如果找不到 邻近的簇,则将该数据点视为孤立点; 后,控制流返回算法的顶部重新等待新的

数据。其中,FCH是E-Stream算法中使用的直方图衰减结构(Fading Cluster structure with Histogram)。

Page 9: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

9

4.5 DenStream算法

扩展划分和层次的方法,诸如 STREAM、CluStream 和 HPStream 等算法的主要问题在于:它们仅仅对球

形的数据流进行聚类分析时表现良好,但由于采用距离度量,它们不能很好地处理任意形状的数据流。 DenStream 算法扩展了传统数据集聚类算法中基于密度的方法 DBSCAN,着眼于处理任意形状的数据流

聚类问题。同时,它强调了孤立点检测问题,将孤立点与正常数据元素区分开来。 DenStream 算法沿袭了 CluStream 的处理框架,把聚类分析的过程划分为联机和脱机两个部分。 在联机部分中,算法维护了两类微簇结构:潜在微簇(p-micro-cluster)和孤立点微簇(o-micro-cluster),

这两个微簇结构的不同之处仅仅在于其约束条件——密度小于某个阈值的簇被当作孤立点簇,而密度超过该

阈值的簇被视为潜在微簇。当一个新的数据点到来时,算法(1)首先试图将它合并到其 邻近的 p-micro-cluster中;若失败,则(2)试图将其合并到 邻近的 o-micro-cluster 中去。若合并成功,检测该 o-micro-cluster 的密度是否大于阈值,若是,则将该 o-micro-cluster 转换为 p-micro-cluster;(3)如果仍然无法找到 邻近的

o-micro-cluster,则新建一个 o-micro-cluster 来容纳该数据点。该子算法的流程见图 4。 对于脱机部分,当用户的聚类要求到来时,DenStream 算法先忽略密度不足够的两类微簇,然后使用

DBSCAN 算法,对当前的 p-micro-cluster 和 o-micro-cluster 进行处理,得到聚类结果并返回。

4.6 D-Stream算法

D-Stream 算法是一个基于密度和网格的算法。与 DenStream 算法一样,D-Stream 算法也着力解决对任意

形状的数据流聚类问题、强调了孤立点探测,并且依据密度来判断聚类。所不同的是,它是一个基于网格的

算法,使用密度网格(Density Grid)结构。 D-Stream 算法同样分为联机和脱机两个部分。联机部分将接受到的每个数据元素映射到某个网格中,而

脱机部分计算这些网格的密度,并且基于密度将这些网格进行聚类。

Figure 5 Illustration of the use of density grid[14]

使用密度网格来进行聚类的过程如图 5 所示。联机部分持续地读入新的数据元素,并将多维的数据元素

映射到多维空间内对应的离散的密度网格中,同时更新密度网格的特征向量。脱机部分在每隔一个时间隙(gap time)后动态地调整当前的簇。初始簇在第一个时间隙后形成,此后算法周期性地移除零星的簇,并调节已

经生成的簇。通过使用网格结构,我们无需保留大量的原始数据,而仅仅需要对网格进行操作。 由于联机部分仅仅是将数据元素映射到相应的网格中,而无需计算距离或权值,D-Stream 相比不使用网

格的算法更高效。并且它的可扩展性更好,即算法不会随着数据量的增大而变慢。但是,D-Stream 算法的问

题是对于高维数据流,所需要的网格的数量可能会非常大。

4.7 CFR算法

CFR 算法是一个基于回归分析的数据流分析算法。它预先假定数据元素集具有局部线性的性质。然后通

过数学函数的方法实现聚类分析。算法使用 Mahalanobis 距离决定不同簇的相似度,同时考虑中心点和方差。 CFR 算法的一个优势是它的初始簇集是通过数学函数构建的,而不似其它算法只能使用一个近似的或限

定数目的初始簇集。但是 CFR 算法的前提注定了它的巨大局限性。

Page 10: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

10

5 讨论(Discussion)

通过前述两部分的介绍,我们已经大体了解了数据流聚类技术的 新发展水平。这个部分对当前数据流

聚类算法已经解决的问题进行了总结。 前述的面向数据流的聚类算法都是针对数据流的特点,旨在使用有界内存对潜在无限的数据流进行聚类

分析。这些算法基本上都实现了单遍扫描,并且顺序地访问数据流中的元素。 几乎所有 2003 年以后的数据流聚类算法都实现了增量式的处理方式,可以满足用户anytime的聚类请求。

E-Stream算法实现对数据流演化的表示方式。CluStream算法框架实现了数据流的聚类演变分析,这在网络入

侵检测中非常有用,可以识别网络上新的攻击类型[1]。通过使用倾斜时间框架,聚类算法可以提供不同时间

粒度的聚类结果。而使用衰减函数,近期的数据得到了更大的重视。几乎所有的两阶段聚类算法都可以支持

用户的联机聚类请求。 为了处理高维数据流,HPStream 算法使用了投影聚类技术。而大多数基于密度及网格的方法都能对任意

形状的数据流进行聚类分析。

6 研究主题(Further Research Issues)

尽管已经提出了大量的算法和处理框架,数据流聚类分析依然是个极富挑战和快速发展的研究领域。随

着大量的数据流产生于愈加广泛的应用领域,越来越多的研究主题不断涌现出来。在这个部分中,我们将对

已经提出的研究问题和更具开放性的研究主题进行讨论。我们将这部分的内容一分为二:一般性(general)主题和面向具体应用领域的主题。值得一提的是,这些主题和研究点大都不仅仅局限与聚类分析这个方面,

而可以被扩展到整个数据流挖掘的其它方面。

6.1 一般性主题

一般性主题主要针对理想的数据流模型(见 2.1(1)),提出一些普遍适用的研究主题。 1). 数据流预处理

数据预处理技术(Data Pre-processing)被广泛应用于传统的数据挖掘中。数据预处理可以改进数据的质

量,从而有助于提高其后的挖掘过程的精度和性能[1]。但在数据流挖掘中,预处理技术应用得并不广泛。问

题在于如何设计一个轻量级的预处理过程,使其能够较好地面向数据流,以改进聚类分析及其它挖掘结果。 2). 模型拟合:扩展基于模型的方法

注意 3.5 节,传统数据集聚类方法中的基于模型的聚类方法很少被扩展到数据流聚类领域。扩展基于模

型的方法,找到一个适用于数据流聚类分析的模型是一个可供选择的方向。 3). 形式化数据流的计算

数据流挖掘的一个主要目标是将数据流挖掘技术形式化为计算理论。这种形式化将推动数据流挖掘算法

的设计和发展[6]。近似技术和统计学习理论(statistical learning theory)是这种形式化的潜在基础[6]。 4). 更细的划分:聚类不同形式的数据流

可以对数据流进行进一步的划分,如时间序列流、空间时间数据流、多媒体数据流等等。针对特定的数

据流,特别是附加了语义信息的数据流,将会出现更多聚类算法和其它挖掘算法[1]。

6.2 面向具体应用领域的问题

已经提出的很多研究热点都是针对具体的应用领域,如高精度应用、无线传感器网络和分布式环境等等。

特定的应用领域有着特定的需求。要想让数据流聚类分析以及其它数据流挖掘技术在特定领域有用武之地,

就需要将领域知识与数据流挖掘技术很好的结合在一起。 1). 高精度需求

由于数据流是海量的和潜在无限的,而我们的存储空间和时间需求是有限的。所以,一般采用近似技术

(如采样)来解决这个矛盾。几乎所有的数据流聚类算法都使用了某种程度上的近似,并且保证了误差界。

Page 11: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

11

但在某些实际应用中,对聚类结果的精度会有一个比较高的要求。如何设计数据流聚类的算法,以满足特殊

的高精度的需求,是一个有待解决的问题。遗憾的是,高精度往往意味着高的存储和时间代价。 2). 实时聚类

与高精度需求相似,某些关键的应用领域对反馈时间有着严格的要求。诸如事故检测、航空交通控制等

应用领域必须“实时(Real-time)”给出数据流的聚类结果区域。虽然目前大多数的数据流聚类算法都已经实

现了用户的联机聚类查询,但这些算法在时间上远远无法满足实时应用的需求。 3). 移动及无线设备的资源受限

随着数据流在移动和无线设备,特别是无线传感器网络中的大量生成,文献[6]把解决移动及无线设备中

资源受限问题也归入数据流挖掘领域待解决的问题中。如何充分利用和节省这些设备的有限资源,如电池寿

命和传输带宽等等。这些都需要更好的知识表示形式和传输方式。 4). 分布式数据流聚类算法

在实际的应用场景中,众多数据流在地理位置上是分布式的,比如交通检测、用户电话记录等等[4]。如

何实现高效的分布式聚类算法是一个重要的研究主题。文献[20]对分布式数据流挖掘中的问题进行了详尽的

讨论,并提出了四个研究方向。

7 结束语(Conclusions)

本文系统地介绍了数据流挖掘中聚类分析的基本概念、支撑技术、发展历史和 新的发展水平,展示了

数据流聚类分析的发展现状和整体蓝图。并且,详细地探究了一些经典的、主流的聚类算法。在 后的部分

中,文章展望了未来,提出了一些开放性的主题和进一步的研究热点。 数据流聚类,以及整个数据流挖掘都仍然处在一个起始阶段。不难预测,在未来几年中,越来越多更巧

妙、更先进、更高效的新技术和新算法将会不断涌现出来。随着该领域中各个研究热点和存在问题的一一解

决,势必推动相关应用领域诸如物理、天文、商业和金融等实际应用的飞速发展。

References [1] Han J, Kamber M. Data Mining: Concepts and Techniques (Second Edition). Morgan Kaufmann , Elsevier Inc, 2006, 467-589.

[2] Yang Q, Wu X. 10 Challenging Problems in Data Mining Research. International Journal of Information Technology & Decision

Making.World Scientific Publishing Company, 2006. Vol.5,No.4(2006)597-604.

[3] Aggarwal C, Han J, Wang J, and Yu P. A Framework for Projected Clustering of High Dimensional Data Streams. Proceedings of

the 30th VLDB Conference, Toronto, Canada. 2004.

[4] Barbará D. Requirements for Clustering Data Streams. SIGKDD Explorations, 2003, 3(2), 23-27.

[5] Udommanetanakit K, Rakthanmanon T and Waiyamai K. E-Stream: Evolution-Based Technique for Stream Clustering.

Springer-Verlag Berlin Heidelberg, 2007, 605-615.

[6] Gaber M, Zaslavsky A and Krishnaswamy S. Mining Data Streams: A Review. SIGMOD Record, 2005, Vol.34,No.2 .

[7] Cao F, Ester M, Qian W and Zhou A. Density-Based Clustering over an Evolving Data Stream with Noise. Proceedings of the

SIAM Conference on Data Ming, 2006.

[8] Aggarwal C, Han J, Wang J, and Yu P. A Framework for Clustering Evolving Data Streams. Proceedings of the 29th VLDB

Conference, Berlin, Germany, 2003.

[9] Guha S, Mishra N, Motwani R and O’Callaghan. Clustering data streams. In Proceedings of the Annual Symposium on Foundations

of Computer Science, IEEE, 2000

[10] Guha S, Meyerson A, Mishra N, Motwani R and O’Callagham L. Clustering Data Streams: Theory and Practice. IEEE Transactions

on Knowledge and Data Engineering, 2003. VOL.15,NO.3,515~528

[11] Babcock B, Datar M, Motwani R and O'Callaghan L. Maintaining Variance and k-Medians over Data Streams Windows,

Proceedings of the 22nd Symposium on Principles of Database Systems, 2003.

[12] Charikar M, O'Callaghan L and Panigrahy R. Better streaming algorithms for clustering problems In Proc. of 35th ACM

Symposium on Theory of Computing, 2003.

Page 12: 数据流挖掘中的聚类方法综述 - Semantic Scholar · 2015-07-29 · 聚类(Clustering)是指对一个 已给的数据对象集合,将其中相似的对象划分为一个或多个组(称为“簇”,Cluster)的过程[3]。同一个簇中

12

[13] O'Callaghan L, Mishra N, Meyerson A, Guha S and Motwani R. Streaming-data algorithms for high quality clustering. Proceedings

of IEEE International Conference on Data Engineering, March 2002.

[14] Chen Y, Tu L. Density-Based Clustering for Real-Time Stream Data. KDD’07, August 12–15, 2007, San Jose, California,

USA.133-142.

[15] Bhatnagar V, and Kaur S. Exclusive and Complete Clustering of Streams. Springer-Verlag Berlin Heidelberg 2007, pp 629–638

[16] Lu Y, Huang Y. Mining Data Streams Using Clustering. Proceedings of the Fourth International Conference on Machine Learning

and Cybernetics, Guangzhou, 2005.

[17] Motoyoshi M, Miura T and Shioya I. Clustering Stream Data by Regression Analysis. The Australasian Workshop on Data Mining

and Web Intelligence (DMWI2004), Dunedin, New Zealand

[18] Lu Y, Huang Y. Mining Data Streams Using Clustering. Proceedings of the Fourth International Conference on Machine Learning

and Cybernetics, Guangzhou, 18-21 August 2005. .

[19] Dong G, Han J, Lakshmanan L, Pei J, Wang H and Yu P. Online Mining of Changes from Data Streams: Research Problems and

Preliminary Results. In Proceedings of the 2003 ACM SIGMOD Workshop on Management and Processing of Data Streams. In

cooperation with the 2003 ACM SIGMOD International Conference on Management of Data, San Diego, CA, Jun 8, 2003.

[20] Parthasarathy S, Ghoting A, Otey M. A Survey of Distributed Mining of Data Streams. Data Streams: Models and Algorithms,

Chapter 13, 289-305..

附中文参考文献 [21] 范明, 孟小峰等译. Han J, Kamber M. 数据挖掘:概念与技术. 机械工业出版社. 2005

[22] 孙玉芬, 卢炎生. 流数据挖掘综述. 计算机科学. 2007. Vol 34, No 1

[23] 蒋盛益, 李庆华, 李新. 数据流挖掘算法研究综述. 计算机工程与设计. Vol 26, No 5..