数据流聚类算法D-Stream
- 格式:doc
- 大小:958.04 KB
- 文档页数:13
dstorm原理
DSTORM(Distributed Storm System)是一种分布式实时计算系统,
它允许用户在多个计算节点上运行多个并行任务,并且能够有效地处
理大量数据流。
DSTORM 的原理主要包括以下几个方面:
1. 分布式架构:DSTORM 是一个分布式系统,它可以将计算任务分布
在多个计算节点上,从而提高计算能力和可扩展性。
DSTORM 使用Apache Zookeeper 或类似工具来协调和管理各个节点的状态和任务分配。
2. 流处理:DSTORM 是一种流处理平台,它能够实时处理大量数据流。
与传统的批量处理系统不同,DSTORM 允许数据在进入系统时直接被处理,而不需要将数据存储在本地或远程存储系统中的批量数据集。
3. 容错和恢复:DSTORM 提供了强大的容错和恢复功能,以确保系统
的高可用性和可靠性。
当一个节点出现故障时,DSTORM 可以自动重新
分配任务到其他健康的节点,从而保持系统的正常运行。
此外,DSTORM 还提供了快照恢复功能,以便在系统发生故障时能够快速恢复
到之前的状态。
4. 模块化设计:DSTORM 采用模块化设计,将不同的功能划分为不同
的模块,并允许用户根据需要选择和组合不同的模块。
这种设计使得DSTORM 更加灵活和可定制,能够适应不同的应用场景和需求。
总之,DSTORM 的原理是基于分布式架构、流处理、容错和恢复以及模
块化设计,旨在提供一种高效、可靠、可扩展的实时计算平台,适用
于各种大规模数据流处理应用场景。
⼀种基于滑动窗⼝的流数据聚类算法第⼀个以流数据为分析对象的聚类算法是由Sudipto Guha 等提出的STREAM 算法。
这种算法根据分治原理,使⽤⼀个不断迭代的过程实现有限空间对数据流进⾏K-means聚类,但该算法⽆法处理演化的数据流。
Aggarwal 在总结上述⽅法本质缺陷的基础上提出了⼀个数据流聚类框架Clustream[5],其核⼼思想是将聚类过程分为在线和离线两个阶段。
在线部分的任务是存储数据流的汇总结果,⽣成⼀种称为微聚类的信息存储结构,并按⾦字塔式时间结构将中间结果进⾏保存。
离线部分既是根据⽤户指定的观察时段及聚类数量,快速⽣成聚类结果的过程。
CluStream 不⾜之处在于需要⽤户指定聚类簇数k,要求强⾏输⼊固定的聚类簇数必然影响真实的聚类形态分布。
同时,算法是以K-means 算法为基础,对⾮凸形状聚类效果不好,⽆法发现任意形状的聚类,且当噪声数据增多时,聚类质量急骤下降。
Aggarwal 等后续提出了专门针对⾼维连续属性数据流的HPStream 算法,该算法引⼊了⼦空间聚类,并提出了具有遗忘特性的聚类结构,使⽤⾼维投影技术和衰减结构来处理⾼维数据流,HPStream 算法对⾼维数据流具有很好的健壮性。
但算法中需要⽤户来指定平均聚类维数,⽤户⼀般并不具备这种领域知识,成为该算法的瓶颈。
Cao 等⼈提出了基于密度的两阶段聚类⽅法,即DenStream 算法,该算法仍然沿⽤CluStream 算法中的双层结构,创造性的引⼊了潜在微聚类簇和孤⽴点微聚类簇结构,具备对孤⽴点的分析能⼒,即随着数据流不断进化,算法可以识别在某⼀时间段有可能演变成聚类簇的孤⽴点或“潜在聚类”,从⽽更加准确的捕获真实的聚类形态。
但由于算法中采⽤全局⼀致的绝对密度作为参数,使得聚类结果对参数⼗分敏感,⽽且它不⽀持指定的时间窗⼝内实时数据流的演化分析。
受到⼴泛关注的3 类⽅法是基于⽹格的数据流聚类技术[6-9]、⼦空间聚类技术[7-9]、混合属性数据流聚类[10],代表了当前数据流聚类研究的主流⽅向。
数据流算法与数据结构数据流算法和数据结构是计算机科学中重要的概念,它们在处理大规模数据时发挥着关键作用。
数据流算法是一种处理数据流的算法,它能够在数据不断产生的情况下进行实时处理和分析。
而数据结构则是组织和存储数据的方式,能够高效地进行数据操作和检索。
本文将介绍数据流算法和数据结构的基本概念、应用场景以及它们在实际项目中的重要性。
一、数据流算法数据流算法是一种处理数据流的算法,它能够在数据不断产生的情况下进行实时处理和分析。
数据流算法通常用于处理实时数据流,如网络数据包、传感器数据、日志数据等。
数据流算法的特点是需要在数据到达时立即进行处理,而不能等待所有数据都到达后再进行处理。
常见的数据流算法包括滑动窗口、Bloom Filter、Count-Min Sketch等。
滑动窗口是一种常用的数据流处理技术,它通过设置一个固定大小的窗口来处理数据流,保持窗口内数据的实时更新。
Bloom Filter是一种用于快速检索一个元素是否在集合中的数据结构,它能够高效地处理大规模数据流。
Count-Min Sketch是一种用于估计数据流中元素频率的算法,能够在有限的内存空间下进行高效的频率估计。
数据流算法在实际项目中有着广泛的应用,如网络流量监控、实时日志分析、实时推荐系统等。
通过数据流算法,我们能够实时地处理大规模数据流,从而及时发现数据中的规律和异常,为业务决策提供支持。
二、数据结构数据结构是组织和存储数据的方式,能够高效地进行数据操作和检索。
常见的数据结构包括数组、链表、栈、队列、树、图等。
不同的数据结构适用于不同的场景,能够提供高效的数据操作和检索功能。
数组是一种线性数据结构,能够高效地进行随机访问和元素插入。
链表是一种动态数据结构,能够高效地进行元素插入和删除。
栈和队列是两种常用的数据结构,分别实现了后进先出和先进先出的数据操作方式。
树是一种非线性数据结构,能够高效地进行数据的组织和检索。
图是一种复杂的数据结构,能够表示各种实体之间的关系。
聚类算法步骤聚类算法是一种常用的机器学习算法,它能够将数据集中的样本分成若干个类别或簇。
聚类算法的目标是在每个簇内部保持样本之间的相似性,并在不同簇之间保持样本的差异性。
本文将介绍聚类算法的步骤,包括数据预处理、选择聚类算法、确定聚类数目、计算相似度、聚类分配和评估聚类结果。
一、数据预处理在进行聚类算法之前,需要对数据进行预处理。
预处理的目的是将原始数据转换为适合聚类算法处理的形式。
常见的预处理方法包括数据清洗、数据变换和数据规范化。
数据清洗是指对数据进行去噪、缺失值处理和异常值处理。
数据变换是指对数据进行特征选择和特征变换,以减少数据维度和提高数据的可分性。
数据规范化是指将数据按照一定的规则进行缩放,使得不同特征的取值范围一致。
二、选择聚类算法选择合适的聚类算法是进行聚类分析的关键步骤。
常用的聚类算法包括K-means算法、层次聚类算法和DBSCAN算法等。
K-means 算法是一种划分聚类算法,它将数据集划分成K个簇,每个簇包含离其质心最近的样本。
层次聚类算法是一种自底向上或自顶向下的聚类方法,它将数据集划分成一棵树状结构,每个节点表示一个簇。
DBSCAN算法是一种基于密度的聚类算法,它将数据集划分成高密度区域和低密度区域。
三、确定聚类数目确定聚类数目是聚类算法的一个重要问题。
聚类数目的选择对聚类结果有很大影响。
常用的确定聚类数目的方法包括肘部法则、轮廓系数和评估指标等。
肘部法则是通过绘制不同聚类数目下的聚类误差平方和曲线,选择拐点作为聚类数目。
轮廓系数是通过计算样本与同簇样本的相似度和与其他簇样本的相似度,选择轮廓系数最大的聚类数目。
评估指标是通过计算聚类结果与真实标签的一致性度量,选择评估指标最大的聚类数目。
四、计算相似度在聚类算法中,相似度是衡量样本之间距离的度量。
常用的相似度度量方法包括欧氏距离、曼哈顿距离和余弦相似度等。
欧氏距离是指样本之间的直线距离,曼哈顿距离是指样本之间的曼哈顿距离,余弦相似度是指样本之间的夹角余弦值。
聚类算法的工作原理聚类算法是一种数据挖掘技术,它用于将数据集中的对象分组,使得同一组内的对象相似度较高,而不同组内的对象相似度较低。
聚类算法的工作原理可以概括为以下几个步骤:数据表示、相似度度量、聚类初始化、迭代优化和聚类结果评估。
1. 数据表示聚类算法需要将原始数据转化为可计算的表示形式。
常见的数据表示方法包括向量表示、图形表示等。
向量表示是将每个对象表示为一个多维向量,其中每个维度对应一个特征。
图形表示则将对象之间的关系表示为图形结构,节点代表对象,边代表关系。
2. 相似度度量相似度度量是聚类算法中的关键步骤,用于衡量对象之间的相似性。
常用的相似度度量方法包括欧氏距离、曼哈顿距离、余弦相似度等。
欧氏距离是计算两个向量之间的几何距离,曼哈顿距离是计算两个向量之间的城市街区距离,余弦相似度则基于两个向量之间的夹角来度量相似性。
3. 聚类初始化聚类算法需要初始化一定数量的聚类中心,每个聚类中心代表一个聚类。
初始化的方法可以是随机选择,也可以是基于先验知识的选择。
聚类中心的选择将直接影响聚类结果的效果。
4. 迭代优化迭代优化是聚类算法的关键步骤,它通过不断调整聚类中心的位置,将对象划分到最合适的聚类中。
常见的迭代优化算法包括K-means算法和层次聚类算法。
K-means算法通过计算每个对象与聚类中心的距离,将对象划分到距离最近的聚类中。
层次聚类算法则通过计算聚类间的相似度,逐步合并相似的聚类,直到达到停止条件。
5. 聚类结果评估聚类结果评估是判断聚类算法效果的重要指标。
常见的评估方法包括轮廓系数、簇间距离、簇内距离等。
轮廓系数是评估聚类结果紧密度和分离度的指标,数值范围在-1到1之间,越接近1表示聚类结果越好。
簇间距离和簇内距离则用于衡量聚类结果的紧凑程度和分离程度。
总结起来,聚类算法的工作原理包括数据表示、相似度度量、聚类初始化、迭代优化和聚类结果评估等步骤。
通过合理选择算法和参数,聚类算法能够快速准确地将数据进行分组,发现其中的规律和关联。
简述聚类算法的原理及应用1. 聚类算法的原理聚类算法是一种无监督学习方法,通过将数据对象分组成具有相似特征的集合来进行数据分析和处理。
聚类算法的原理主要包括以下几个步骤:1.1 数据预处理在进行聚类算法之前,需要对数据进行预处理,包括数据清洗、数据标准化和特征选择等。
数据预处理的目的是消除数据中的噪声和冗余信息,提高后续聚类算法的效果和准确性。
1.2 距离度量在聚类算法中,需要选择合适的距离度量方法来衡量数据对象之间的相似度或距离。
常用的距离度量方法包括欧氏距离、曼哈顿距离、余弦相似度等。
1.3 聚类算法主要有以下几种常见的聚类算法:1.3.1 K-means聚类算法K-means聚类算法是一种基于距离的聚类算法,通过将数据对象划分到k个簇中,使得簇内的样本相似度最大化,簇间的样本相似度最小化。
算法的步骤包括初始化聚类中心、计算数据对象与聚类中心的距离、更新聚类中心等。
1.3.2 层次聚类算法层次聚类算法是一种基于树形结构的聚类算法,可以自底向上或自顶向下进行聚类。
算法的步骤包括计算两个簇之间的相似度、合并相似度最高的两个簇、更新相似度矩阵等。
1.3.3 密度聚类算法密度聚类算法是一种基于样本密度的聚类算法,通过寻找样本密度较大的区域,将样本划分为不同的簇。
算法的步骤包括计算样本的密度、确定核心对象、扩展簇等。
1.4 聚类评估在完成聚类算法后,需要评估聚类结果的质量和效果。
常用的聚类评估指标包括轮廓系数、Davies-Bouldin指数、Calinski-Harabasz指数等。
2. 聚类算法的应用聚类算法在各个领域都有广泛的应用,下面列举了一些典型的应用场景:2.1 模式识别聚类算法可以用于模式识别领域,通过将数据对象进行聚类,识别出数据中存在的模式和结构。
例如,可以通过聚类算法将手写数字图像归类成不同的数字。
2.2 市场细分聚类算法可以用于市场细分,帮助企业将大量的消费者划分成几个具有相似消费行为和偏好的群体。
第33卷第7期2016年7月计算机应用与软件Computer Applications and SoftwareVol.33 No.7Ju l.2016 DEN-S tream:—种分布式数据流聚类方法李长路12王劲林2郭志川2韩锐2>(中国科学院大学北京100190)2 (中国科学院声学研究所国家网络新媒体工程技术研究中心北京100190)摘要现有的数据流聚类方法很难兼顾数据稀疏和子空间聚类等高维数据难题,而分布式数据流对数据流聚类提出包括在线计算效率、通信开销以及多路数据的融合等更多挑战。
提出分布式数据流聚类方法,采用全局统一的网格划分和衰退时间以支持多路数据流融合,并周期性检查和删除过期网格来控制概要规模。
通过对多路高维数据流的一遍扫描,发现高维数据流子空间任意形 状的聚类,并反映数据分布随时间的演化。
在线组件效率高开销低,概要信息简洁,通信代价低。
实验表明,该方法能够对分布式数 据流正确聚类并演进,在线组件效率高,概要规模小。
关键词 分布式数据流子空间聚类网格聚类高维数据中图分类号 TP3 文献标识码 A D0I:10.3969/j.issn. 1000-386x.2016.07.013DEN-STREAM:A DISTRIBUTED DATA STREAM CLUSTERING METHODLi Changlu1,2 Wang Jinlin2Guo Zhichuan2Han Rui21( University of Chinese Academy of Sciences ,Beijing 100190, China)2 {National Network New Media Engineering Research Center, Institute of A coustics, Chinese Academy of Sciences, BeAbstract Curreet data stream clustering methods are diff i c u l t t o take into account the high-dimeesional data problems including data sparsity and subspace clustering,etc.,while the distributed data stream raises more challenges on data stream clustering,such as online computational efficiency,communication overhead a nd the integration of multi-channel data.The distributed data stream clustering method proposed in this paper uses globally uniform meshing and declining time t o support the inte the summary size by periodically checking and removing outdated grids.By scanning multi-channel high-dime method finds the clusters with arbitrary shapes in subspace of high-dimensional data stream,and they reflect the over time.The online component in t he paper has high efficiency and low overhead,succinct summary information and low communication cost.Experiment shows that the proposed method can correctly cluster the distributed data streams and evolve them,the efficiency of online component i s high,and the summary size i s small as well.Keywords Distributed data stream Subspace clustering Grid-based clustering High-dimensional data〇引言网络技术、互联网应用生态以及包括智能终端、传感器等各 种数据采集设备的发展,使得分布式数据流作为一种广泛存在 的数据组织形式[12]。
Density-Based Clustering for Real-Time Stream Data基于密度的实时数据流聚类(D-Stream)翻译by muyefeiE-mail: **************注释:版权归作者所有,文档仅用于交流学习,可以用大纲视图查看文档结构摘要:现有的聚类算法比如CluStream是基于k-means算法的。
这些算法不能够发现任意形状的簇以及不能处理离群点。
而且,它需要预先知道k值和用户指定的时间窗口。
为了解决上述问题,本文提出了D-Stream算法,它是基于密度的算法。
这个算法用一个在线部分将数据映射到一个网格,在离线部分计算网格的密度然后基于密度形成簇。
算法采用了密度衰减技术来捕获数据流的动态变化。
为了探索衰减因子、数据密度以及簇结构之间的关系,我们的算法能够有效的并且有效率地实时调整簇。
而且,我们用理论证明了移除那些属于离群点的稀疏网格是合理的,从而提高了系统的时间和空间效率。
该技术能聚类高速的数据流而不损失聚类质量。
实验结果表明我们的算法在聚类质量和效率是有独特的优势,并且能够发现任意形状的簇,以及能准确地识别实时数据流的演化行为。
关键词流数据挖掘基于密度的聚类D-Stream 分散的网格1 介绍实时聚类高维数据流是困难的但很重要。
因为它在各个领域应用到。
比如...聚类是一项关键的数据挖掘任务。
挖掘数据流有几项关键的挑战:(1)单遍扫描(2)将数据流视为数据一个很长的向量在很多应用中捉襟见肘,用户更加关注簇的演化行为。
近来,出现了许多数据流聚类方法。
比如STREAM、CluStream以及扩展(在多数据流,分布式数据流,并行数据流上的扩展)等。
CluStream以及扩展的算法有以下一些缺陷:1、只能发现球形簇,不能发现任意形状的簇。
2、不能够识别噪声和离群点。
3、基于k-means的算法需要多次扫描数据(其实CluStream利用两阶段方法和微簇解决了该问题)。
基于密度的聚类算法介绍。
基于密度的方法可以发现任意形状的簇,可以处理噪声,对原始数据集只需一次扫描。
而且,它不需要像k-means算法那样预先设定k值。
文本提出了D-Stream,一种基于密度的数据流聚类框架。
它不是简单用基于密度的算法替代k-means的数据流算法。
它有两项主要的技术挑战:首先,我们不大愿意将数据流视为静态数据很长的一个序列,因为我们对数据流演化的时间特征更加感兴趣。
为了捕获簇的动态变化,我们提出了一个新颖的方案,它可以将衰减因子与每个数据点的密度联系起来。
与CluStream算法要求用户输入聚类目标的持续时间不同,衰减因子为系统提供一种新颖的机制,可以通过将最近的数据赋予更高的权重而不是完全丢弃历史信息,从而动态地、自动地形成簇。
另外,D-Stream不需要用户输入簇的数目k。
因此,D-Stream特别适合于那些对应用程序数据具有少量领域知识的用户。
其次,由于数据流的数据是海量的,不大可能保留每个数据记录的密度信息。
因此我们提出将数据空间划分成一个个离散的网格,然后将新来的数据映射到对应的网格。
这样,我们不需要保留原始数据,仅仅需要操纵这些网格。
然而,对于高维数据,这些网格的数目是海量的。
因此如何处理高维数据来提高伸缩性是一个关键的问题。
幸运的是,实际上大部分网格是空的或者只包含少量的记录,我们在D-Stream中开发了一种内存有效的技术来管理这些松散的网格。
与CluStream算法比起来,D-Stream在聚类质量和效率方面更有优势,而且针对海量高维的流数据具有更好的伸缩性。
本文的剩余部分是这样组织的:部分2是D-Stream算法的概述;部分3提出了关于密度网格和衰减因子的一些概念和理论;部分4给出了算法的细节和理论分析;部分5是实验,在人工和真实数据集上与CluStream算法做了比较。
部分6是论文总结。
2 算法概述D-Stream算法对一个数据流,在每一个时刻,D-Stream算法的在线部分连续第读入一个新的记录,将多维的数据放置到对应多维空间中的离散密度网格,然后更新密度网格的特征向量(5-8行)。
关于密度网格和特征向量在部分3详细介绍。
离线部分在每隔gap(一个时间整数参数)时间动态地调整簇。
在第一个gap时间内产生了初始簇(9-11行)。
然后,算法周期性地移除松散的网格以及调整簇(12-15行)。
3 密度网格由于不可能保留原始数据,D-Stream将多维数据空间分为许多密度网格然后由这些网格形成簇。
如下图所示:3.1 基础定义文本中,假设输入的数据有d维。
并且在以下的数据空间中定义:在D-Stream中,我们将d维的空间S划分成密度网格。
假设对于每一维,它的空间是Si,i=1,...,d被分为pi个部分。
这样数据空间S被分成了个密度网格。
每个密度网格g是由组成,我们将它表示为:一个数据记录可以映射到下面一个密度网格g(x):对于每个记录x,我们分给它一个密度系数,它随着时间递减。
实际上,如果x在tc时刻到达,我们将它的时间戳定义成:T(x)=tc,这样它在时刻t的密度系数D(x,t)就是:任何网格的密度是经常变动的。
然而,我们发现没有必要在每一个时刻去更新所有数据记录的密度值,而是,只有当一个数据点映射到那个网格时,我们去更新网格的密度。
对于每个网格,当一个新的数据记录到达某个网格,且接收到需要记录的最后的数据记录时,我们才根据下面的结论去更新网格的密度。
命题3.1假设一个网格g在时刻tn接收到一个新的数据记录,假设g接收到最后的数据记录是在时刻tl(tn>tl),那么g的密度可以按下面的方式更新:证明略。
命题3.1节省了大量的计算时间。
原本在每个时间间隔更新所有网格需要计算时间。
相反的是,利用命题3.1我们只用的运行时间就可以更新一个网格。
这种效率的增加是非常明显的,因为网格数目N的数目是巨大的。
而且,命题3.1节省了内存空间。
我们发现在一个网格中,我们没有必要去保存时间戳和密度值。
相反的,对于每个网格,按一下定义的方式存储一个特征向量。
稍后解释该向量中的每一项。
命题 3.2(特征向量)一个网格g的特征向量是一个五元组:其中,tg是g更新的最后时间,tm是g作为松散(稀疏)网格从grid_list中移除的最后时间,D是网格最后更新后的密度,label是网格的类(簇)标签,status={SPORADIC,NORMAL}是一个用来移除松散网格的标签,3.2 基于密度的网格簇我们现在需要决定如何基于密度信息得到簇。
我们的方法是基于以下的观察:命题3.2.让从时刻0到时刻t到达的所有数据记录成为一个集合。
我们有:证明略。
命题3.2表明系统中所有数据记录密度的总和永远不会超过。
由于存在个网格,因此每个网格的平均密度不会超过。
有这个观察得到以下的定义:在时刻t,对一个网格g,如果有我们称它为稠密网格。
其中,Cm>1是一个控制阈值的参数。
比如,我们设定Cm=3。
我们要求N>Cm,因为D(g,t)不能超过。
在时刻t,对一个网格g,如果有我们称它为稀疏网格。
其中,0<Cl<1。
比如,我们设定Cl=0.8。
在时刻t,对一个网格g,如果有我们称它为过渡网格。
在多维空间,为了形成簇,我们考虑连接各个邻接的网格,我们按以下定义:定义 3.3 (邻接网格)考虑两个稠密网格和,如果存在,使得:那么在第k维空间,g1和g2就是邻接网格。
表示为:g1~g2。
定义 3.4 (网格组)如果对于任何两个网格G,存在一系列网格使得,那么密度网格的一个集合就是一个网格组。
定义 3.5 (内部网格和外部网格)考虑到一个网格组G以及一个网格,假如,如果g在每一个维度存在邻接网格。
那么g就是G中的一个内部网格。
否则g就是G中的一个外部网格。
现在我们准备定义如何基于网格的密度形成簇。
定义 3.6 (网格簇)如果G内部每一个网格都是稠密网格而每个外部网格或者是一个稠密网格或者是一个过渡网格,那么G就是一个网格簇。
直观地,一个网格簇就是一个连接的网格组,它比它周围的网格密度要大。
注意到我们总是尝试在任何可能的时候合并簇,因此这样会导致簇被松散的网格所包围。
4 D-Stream算法的组成我们将在图1描述了算法D-Stream的主要部分。
对于每一个新的数据记录x,我们将它映射到一个网格g,然后利用(5)来更新g的密度(图1 中5-8行)。
然后,我们周期性的(每隔gap时间)形成簇以及移除稀疏网格。
下面我们描述确定gap的策略,管理活动网格的列表(list)以及产生簇。
4.1 网格检测以及时间间隔gap为了挖掘数据流的动态特征,我们在部分3开发的密度网格方案会逐渐地使得每个数据记录和网格的密度变小。
如果一个稠密网格长期不接收一个新的数据,它可能会降级成为一个过渡网格或者一个稀疏网格。
另一方面,如果一个稀疏网格接受一些新的数据记录,它可以升级成为一个过渡网格或者稠密网格。
因此,经过一个时间周期后,每个网格的密度应该被重新检查,簇也要调整。
一个关键的决定是确定检查网格的时间间隔的长度。
我们发现这个时间间隔gap不能太大也不能太小。
如果gap太大,数据流的动态变化不能够被很好地识别出来。
如果gap太小,会导致在离线部分频繁地计算从而增加了负载。
当这种计算负载过重,离线部分的处理速度可能不能匹配数据流输入的速度。
我们提出以下的策略来确定gap值的合适大小。
我们认为使一个稠密网格降级成为稀疏网格所需的的最少时间与使一个稀疏网格成为一个稠密网格所需的时间差不多。
为了确保检查除足够频繁地去监测任何网格的密度变化,我们将gap设定为这些最小时间的中的最小值。
命题 4.1对任何稠密网格g,从稠密网格成为一个稀疏网格所需的最少时间是:证明略。
命题 4.2对任何稀疏网格g,从稀疏网格成为一个稠密网格所需的最少时间是:证明略。
基于以上两个命题,我们选择足够小的gap,这样可以识别一个网格从稠密变为稀疏的任何变化,或者从稀疏变为稠密(的任何变化)。
因此,在D-Stream中我们设定:4.2 检测以及移除稀疏网格针对基于密度的方案一个严重挑战是大量的网格,尤其是高维数据。
比如,如果每一个维度被分为20个部分,那么将有20^d(指数级)个可能的网格。
一个关键的观察是空间中的大部分网格是空的或者只接收数据不是很频繁。
在我们的实现方法中,我们只为那些非空的网格分配内存用来存储特征向量,这可以形成一个非常小的网格子空间。
不幸的是,实际上,由于在数据错误中形成的离群点数据,导致在聚类过程中不断地增加处理非空网格的时间,这个方法的效率不是足够高。
由于这些网格包含非常少的数据,我们称它为稀疏网格。
由于大量的数据流高速地到达而且运行很长时间,这样使得稀疏网格不断累积,它们的数目会变得非常巨大,最终导致系统运行越来越慢。