一种二次聚类方法及系统的制作方法
【专利摘要】本发明提供了一种二次聚类方法,应用于数据挖掘【技术领域】,包括以下步骤:对数据流进行分块并读入数据块;使用DBSCAN算法聚类,获得密度簇参考点;对获取的所述密度簇参考点进行k-means算法聚类并采用分层的结构保存k-means算法聚类所获得的k均值参考点。本发明有效地提高数据分布不规则和含有噪音的数据流的聚类质量、聚类精度及效率。
【专利说明】一种二次聚类方法及系统
【技术领域】
[0001]本发明属于数据流挖掘【技术领域】,尤其涉及一种二次聚类方法及系统。
【背景技术】
[0002]近年来,随着硬件技术的发展,有越来越多的应用产生数据流,数据流不同于传统的存储在磁盘上的静态数据,而是一类新的数据对象,它是无限的、连续的、有序的、快速变化的、海量的数据;典型的数据流包括网络与道路交通监测系统的监测信息数据、电信部门的通话记录数据、由传感器传回的各种监测数据、股票交易所的股票价格信息数据以及环境温度的监测数据等。数据流本身的这些特点决定了对数据流进行处理时只能对数据作一到两遍的扫描,并只能临时存储少量的数据。因此原来很多成熟的数据挖掘、数据分析和数据查询技术在数据流上变得不适用了,需要提出新的解决方法。
[0003]因此,数据流的问题一出现马上引起了研究者的重视,出现了很多研究成果,对数据流从管理、查询、分析与挖掘算法等多个方面进行了研究;数据流挖掘技术作为数据挖掘领域的新问题,很多挖掘算法需要针对数据流进行改造;数据流聚类分析作为数据流挖掘的一个重要研究方向,同样面临着巨大的挑战,也引起了研究者们的广泛关注,目前出现了不少相关的研究成果,并应用到了实践中。
[0004]传统的聚类是建立在数据库操作模式下的;传统的数据库可以对所有数据进行存储并支持复杂的查询操作。因此,在数据库模式下,传统方法可以采用多次读取数据,并对数据进行随机存取等操作实现对所存储数据的聚类。然而,在数据流环境下,这些操作方法都是不可行的,数据流本身所具有的特征使得传统的聚类算法不可能(甚至不能)直接应用于数据流聚类。
[0005]因而,与传统的聚类方法相比,数据流聚类算法应当具有以下特点:
[0006]首先,使用有限的内存及存储空间。数据流具有连续无限性,其中的数据总量远远超过了能够提供给聚类算法使用的空间(主存)容量,因此完整存储数据流中的数据是不可行的,也是不可能的。数据流聚类算法不可能对所有需要处理的数据对象进行存储,只能通过概化或有选择地舍弃数据来保证所使用的空间大小是有限的,合理的。
[0007]其次,线性扫描增量式处理或一遍扫描。对于数据流中超大规模的海量数据而言,线性扫描是唯一有效的读取数据方法,而随机读取数据需要相当昂贵的计算代价。而且,即使对数据流中的数据进行多次线性扫描,也是需要很多计算代价的,因为这些数据通常存储在读取速度很慢的外存设备中。况且,在很多数据流环境中,数据以非常快的速度变化,并不需要将其存储。这些数据必须在其产生时就被处理,然后即被丢弃。因此,数据流聚类算法应当只对数据进行一遍扫描,至少要实现线性扫描的增量式处理。
[0008]再次,对数据记录的处理具有实时性。数据流中数据的变化速度很快,对响应速度的要求很高。因此,数据流聚类算法中使用数据记录的处理过程必须具有很快的处理速度,避免遗漏需要处理的数据记录。
[0009]但是,已知的数据流聚类算法大多适用于具有特定分布的数据,且对噪音比较敏感。然而,实际应用领域中的数据流大多具有数据分布不规则、含有噪音等特点,使已有的数据流聚类算法的难以取得令人满意的聚类质量。
【发明内容】
[0010]本发明提供了一种二次聚类方法及系统,以解决上述问题。
[0011]本发明提供了一种二次聚类方法,包括以下步骤:
[0012]对数据流进行分块并读入数据块;
[0013]使用DBSCAN算法聚类,获得密度簇参考点;
[0014]对获取的所述密度簇参考点进行k-means算法聚类并采用分层的结构保存k-means算法聚类所获得的k均值参考点。
[0015]本发明提供了一种二次聚类系统,包括:分块读入模块、密度簇参考点获取模块、k均值参考点获取模块;分块读入模块通过密度簇参考点获取模块与k均值参考点获取模块相连;
[0016]所述分块读入模块,用于对数据流进行分块并读入数据块;
[0017]所述密度簇参考点获取模块,用于使用DBSCAN算法聚类,获得密度簇参考点;
[0018]所述k均值参考点获取模块,用于对获取的所述密度簇参考点进行k-means算法聚类并采用分层的结构保存k-means算法聚类所获得的k均值参考点。
[0019]本发明提出了一种二次聚类方法,先对数据流进行分块做DBSCAN聚类生成中间聚类结果密度簇参考点集,随后对这些密度簇参考点进行k-means聚类,用分层的结构保存每次聚类所获得的簇参考点,有效地提高数据分布不规则和含有噪音的数据流的聚类质量、聚类精度及效率。
【专利附图】
【附图说明】
[0020]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0021]图1是本发明实施例1的处理流程图;
[0022]图2是本发明实施例2的实现系统图。
【具体实施方式】
[0023]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0024]图1是本发明实施例1的处理流程图,包括以下步骤:
[0025]步骤101:对数据流进行分块并读入数据块;
[0026]步骤102:使用DBSCAN算法聚类,获得密度簇参考点;
[0027]步骤103:对获取的所述密度簇参考点进行k-means算法聚类并采用分层的结构保存k-means算法聚类所获得的k均值参考点。
[0028]其中,对数据流进行分块并读入数据块的过程为:在滑动窗口内实现对数据流的分块循环处理,并获取最终的聚类结果;如果数据未处理完,则读入下一数据块,直到数据流处理完为止。[0029]其中,密度簇参考点的定义如下:
[0030]假设数据流中数据以块XI,X2,? ? ? , Xn, * * *的形式到达,每块都可以在内存中进行处理,每个数据块包含相同数目的数据点;
[0031]定义1: {I古:密度簇参考点:对时刻t到达的数据块Xt,以基于密度的聚类算法进行聚类,生成k。(kt=l,2, ? ? ?)个聚簇,均值点分别为cl, ? ? ? , Ci, ? ? *,ek,则数据块将由k。个形如(ci,ni)的二元组构成,ni为Xi中隶属于ci的数据点数目,称rd(ei,ni)为数据流中的密度簇参考点。
[0032]其中,k均值参考点的定义如下:
[0033]假设数据流中数据以块XI,X2,? ? ? , Xn, * * *的形式到达,每块都可以在内存中进行处理,每个数据块包含相同数目的数据点;
[0034]定义2:k均值参考点:对m个密度簇参考点进行k均值聚类生成的2k个聚簇,均值点分别为Cl,? ? ?,Ci,? ? ?,c2k,则数据块将由2k个形j / N(el, hi)的二元组构成,ni为隶属于ci的数据点数目,称rk(ci,ni)为数据流中的k均值参考点。
[0035]本发明提出了数据流二次聚类方法(TwiceClustering Streaming Algorithm一TCLUSA),以提高聚类精度。
[0036]TCLUSA是基于分区思想,使用DBSCAN方法对每块数据聚类删除离群点以每个簇的均值点作为其代表点,得到局部聚类结果(密度簇参考点),再用k-means方法对所获得的代表点进行聚类获得最终结果(k均值参考点)。
[0037]TCLUSA 描述:
[0038]假设数据流中数据以块XI,X2,? ? ? , Xn, * * *的形式到达,每块都可以在内存中进行处理,每个数据块包含相同数目的数据点。
[0039]定义1:{|古:密度簇参考点。对时刻t到达的数据块Xt,以基于密度的聚类算法进行聚类,生成k。(kt=l,2, ? ? ?)个聚簇,均值点分别为cl, ? ? ? , Ci, ? ? ? , ek,则数据块将由k。个形如(ci,ni)的二元组构成,ni为Xi中隶属于ci的数据点数目,称rd(ei,ni)为数据流中的密度簇参考点。
[0040]定义2:k均值参考点。对m个密度簇参考点进行k均值聚类生成的2k个聚簇,均值点分别为Cl,? ? ?,Ci,? ? ?,c2k,则数据块将由2k个形j / N(el, hi)的二元组构成,ni为隶属于ci的数据点数目,称rk(ci,ni)为数据流中的k均值参考点。
[0041]在定义I和定义2中,可将Ili理解为参考点的权重。
[0042]TCLUSA算法基于分区的思想对数据流进行分块处理,并按照分层的结构保存每次聚类所获得的簇参考点,每层保存m个参考点,这使得本算法可以在有限的内存空间中实现对数据流的聚类,数据流按时间顺序每m个数据点构成一个数据块。
[0043]该算法使用DBSCAN算法对每个数据块聚类,计算出密度簇参考点,得到局部聚类结果,使用k-means算法对密度簇参考点聚类,直至得到最终的结果(k均值参考点)。
[0044]下面对上述原理的具体实现进行详细说明:
[0045]伪代码如下所示:
[0046]Procedure TCLUSA
[0047]/木Function:积累一段时间的数据流于滑动窗口,然后利用TCLUSA算法对数据流聚类,并根据结果划分处多个聚类块。[0048]Input:数据块记录数oncepattern,簇的个数k,邻域半径eps,核心点至少包含的点数 minpits。
[0049]Output:k 个族
[0050]*/
[0051](I) do while (不到数据流末尾)
[0052](2)f=l ; / / f表示处理的层数
[0053](3)读取一个数据块;
[0054](4)使用DBSCAN算法对该数据块进行聚类;
[0055](5)计算出密度簇参考点,存储在第f层;
[0056](6) if (密度簇参考点的数目==m) / / m表示存储中间密度簇参考点最大个数
[0057](7) t=0 ; Ilf为二值变量:f为I表示所有
[0058]的层都未存满数据,
[0059]/ / f为O则表示有层已存满数据。
[0060](8) dowhile (f==0)
[0061](9)用k-means算法对i层簇参考点聚类;
[0062](10)汁 + ;
[0063](11)将得到的2Ji}个k均值参考点存储到第f层;
[0064](12) if (f层的簇参考点数!=所)
[0065](13)t t=l ;
[0066](14) end if
[0067](15) end / / end while
[0068](16) end if
[0069](17) end / / end while
[0070](18)用k-means算法对存储的所有的密度簇参考点聚类,生成最终的k个簇;
[0071]步骤(I)在滑动窗口内实现对数据流的分块循环处理,并获取最终的聚类结果。如果数据未处理完,则读入下一数据块,直到数据流处理完为止;步骤(3)-(5)对读入的数据块使用DBSCAN算法聚类,计算密度簇参考点,保存到第i层;
[0072]步骤(6)- (8)判断第i层的密度簇参考点是否已满,若第i层参考点已满,则使用k.means算法对密度簇参考点的分层处理,将结果保存到其上一层,直到所有的层都未存满;步骤(9)-(11)使用k-means算法对i层参考点进行聚类,得到2k个均值参考点,保存到i+Ι层,第(12)步判断其上层的均值参考点数是否未满,如未满,则结束处理;当数据流结束时,步骤(18)表示使用k-means算法对存储的所有密度簇参考点进行聚类,得到k个簇((k均值参考点))并输出。
[0073]下面进行算法分析,详细说明如下:
[0074]记m为块内数据点个数,k为聚类簇数,C为循环次数,t为获得m个密度簇均值参考点的数据块数,算法的时间开销由两部分构成:对数据流进行分块,顺序的111个数据点构成一个数据块,对每个数据块的m个数据点进行DBSCAN聚类生成密度簇均值参考点,该部分的开销为0(m2);对111个密度簇均值参考点进行Lmeans聚类,这一部分的开销为O (mkc)。所以总的时间开销达O (m2t+mkc)。[0075]由于一般情况下数据分块中数据点个数m较小,因此,总的时间开销不大。当生成m个密度簇均值参考点后,对这m个密度簇参考点进行k.means聚类,由于其具有简单、高效的优点,其计算复杂度为O (rake),通常有k〈〈m和c〈m,而且,这一部分的计算次数要小于计算密度簇均值参考点的次数,所以,其时间开销较小。在算法的空间开销方面,由于本算法采用分层的结构和用均值点的信息对数据进行保存,使得算法可以在有限的内存空间内实现对数据流的聚类。[0076]在聚类质量方面,TCLUSA算法采用DBSCAN算法对数据流进行第一层聚类预处理,针对分布不规则和含有大量噪音的数据进行处理,使得生成的密度簇参考点具有较高的精度。采用完全划分算法k.means对密度簇参考点进行聚类,因此,聚类过程中保留了所有的簇参考点信息,使得聚类的结果更能反映出数据分布的整体情况。[0077]下面进行一个具体的实验,对本发明技术方案进行详细说明:[0078]实现所提出的数据流聚类算法TCLUSA软硬件配置如下:CPU主频为P4.2.80G,内存为DDR.1I256MB,硬盘大小为80GB ;操作系统为Windows XP,以C++为开发语言。以ScatComp系数【38】衡量聚类质量(Scat Comp系数越小,则聚类质量越好)。本文实验以网络入侵检测数据集KDD.CUP99数据源,该数据集来源于MIT的Lincoln实验室2周内494020条局域网连接记录,是一种含有噪音和数据分布不规则的数据。数据集中每条记录有42个属性,对应正常模式或某种入侵模式,只利用其中的120000条数据记录来模仿流数据进行聚类,删除了数据中的非数值属性,只用其中的34个数值属性。[0079]将数据流聚类算法TCLUSA与文献【39】中基于k-means的数据流聚类算法(本文中称为KS⑶C算法)进行比较。本算法将每100个数据记录划分为一块,k取5,minpits取7,eps取0.5。分别用KS⑶C算法和TCLUSA算法对2万到10万条的不同数据进行聚类,实验结果如表1所示。从表1可知:算法TCLUSA在不同参数条件下均能取得比算法KS⑶C更好的聚类质量。由于在第一层聚类采用DBSCAN算法,耗时比k-means算法多,导致算法TCLUSA比算法KSCDC稍差,然而在聚类质量重要度更大的环境中这部分时间性能的损失在可接受的范围之内。[0080]表1算法KS⑶C和TCLUSA的时间性能和聚类质量比较[0081]
【权利要求】
1.一种二次聚类方法,其特征在于,包括以下步骤: 对数据流进行分块并读入数据块; 使用DBSCAN算法聚类,获得密度簇参考点; 对获取的所述密度簇参考点进行k-means算法聚类并采用分层的结构保存kneans算法聚类所获得的k均值参考点。
2.根据权利要求1所述的方法,其特征在于: 对数据流进行分块并读入数据块的过程为:在滑动窗口内实现对数据流的分块循环处理,并获取最终的聚类结果;如果数据未处理完,则读入下一数据块,直到数据流处理完为止。
3.根据权利要求1所述的方法,其特征在于:密度簇参考点的定义如下: 假设数据流中数据以块XI,X2,...,Xn,..?的形式到达,每块都可以在内存中进行处理,每个数据块包含相同数目的数据点; 定义1: {I古 :密度簇参考点:对时刻t到达的数据块Xt,以基于密度的聚类算法进行聚类,生成k。(kt=l,2,...)个聚簇,均值点分别为cl,..., Ci,..., ek,则数据块将由k。个形如(ci, ni)的二元组构成,ni为Xi中隶属于ci的数据点数目,称rd(ei,ni)为数据流中的密度簇参考点。
4.根据权利要求1所述的方法,其特征在于:k均值参考点的定义如下: 假设数据流中数据以块XI,X2,...,Xn,..?的形式到达,每块都可以在内存中进行处理,每个数据块包含相同数目的数据点; 定义2:k均值参考点:对m个密度簇参考点进行k均值聚类生成的2k个聚簇,均值点分别为cl,..., Ci,..., c2k,则数据块将由2k个形j / N(el, hi)的二元组构成,ni为隶属于ci的数据点数目,称rk(ci,ni)为数据流中的k均值参考点。
5.一种二次聚类系统,其特征在于,包括: 分块读入模块、密度簇参考点获取模块、k均值参考点获取模块;分块读入模块通过密度簇参考点获取模块与k均值参考点获取模块相连; 所述分块读入模块,用于对数据流进行分块并读入数据块; 所述密度簇参考点获取模块,用于使用DBSCAN算法聚类,获得密度簇参考点; 所述k均值参考点获取模块,用于对获取的所述密度簇参考点进行k-means算法聚类并采用分层的结构保存k-means算法聚类所获得的k均值参考点。
6.根据权利要求5所述的系统,其特征在于, 所述分块读入模块,还用于对数据流进行分块并读入数据块的过程为:在滑动窗口内实现对数据流的分块循环处理,并获取最终的聚类结果;如果数据未处理完,则读入下一数据块,直到数据流处理完为止。
【文档编号】G06F17/30GK103577602SQ201310581217
【公开日】2014年2月12日 申请日期:2013年11月18日 优先权日:2013年11月18日
【发明者】侯德龙 申请人:浪潮(北京)电子信息产业有限公司