数据流的聚类方法和装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据流的聚类方法和装置。
背景技术
随着互联网的发展和普及,各种基于网络进行的活动都在源源不断的产生数据,呈现出数据流的状态。从数据流中尽快找出有意义的模式或规则,近乎实时的为业务决策、业务过程控制等提供辅助支持,成为利用数据的重要方式。
聚类作为一种常用的数据挖掘方法,被广泛应用在用户分类、文本分析等各方面。聚类是按数据记录的内在相似性将数据集(也称点集,每个点为一个数据记录)划分为多个类别,使类别内的点相似度较大而类别间的点相似度较小。
现有技术中,一种对数据流的聚类方式是,按照一定的规则(如椎体时间窗口、滑动窗口等)从某系统产生的数据流中提取出一段数据,针对这段数据构成的数据集,采用某种聚类算法进行聚类;然后按照一样的规则提取下一段数据,再用同样的聚类算法对下一段数据构成的数据集聚类。由于各段数据反映了不同时间段的业务情形,而业务情形往往会发生暂时性的变化,对各个数据段分别聚类得出的聚类结果会随之出现较大的变动,导致聚类结果抖动严重,使得根据聚类结果进行的业务发生跳变,影响业务的平稳性和效果。
发明内容
有鉴于此,本申请提供一种数据流的聚类方法,所述数据流包括具有时序关系的若干个数据分区,所述方法包括:
获取当前数据分区之前的N个在先数据分区的结果模型,N为不小于2的自然数;所述每个结果模型根据对应的在先数据分区的聚类结果生成,每个结果模型中包括每个类别的代表参数;
根据所述N个结果模型确定当前数据分区的起始模型,所述起始模型中每个类别的代表参数由所述N个结果模型中相同类别的代表参数确定;
采用起始模型对当前数据分区中的数据记录进行聚类。
本申请还提供了一种数据流的聚类装置,所述数据流包括具有时序关系的若干个数据分区,所述装置包括:
在先结果模型获取单元,用于获取当前数据分区之前的N个在先数据分区的结果模型,N为不小于2的自然数;所述每个结果模型根据对应的在先数据分区的聚类结果生成,每个结果模型中包括每个类别的代表参数;
起始模型生成单元,用于根据所述N个结果模型确定当前数据分区的起始模型,所述起始模型中每个类别的代表参数由所述N个结果模型中相同类别的代表参数确定;
当前分区聚类单元,用于采用起始模型对当前数据分区中的数据记录进行聚类。
由以上技术方案可见,本申请的实施例中,根据当前数据分区之前的至少两个在先数据分区的结果模型,来确定当前数据分区的起始模型,并以起始模型中的类别为起点来进行当前数据分区的聚类,使得在先数据分区的历史数据能够对当前数据分区的聚类产生影响,使当前数据分区的聚类结果同时兼具长效性和时效性,避免了聚类结果的严重抖动,在为业务的及时性提供支持的同时,提高了业务的平稳度。
附图说明
图1是本申请实施例中一种数据流的聚类方法的流程图;
图2是本申请实施例中三种在数据流中提取数据分区的方式的示意图;
图3是本申请应用示例中一种对数据分区进行聚类的处理流程图;
图4是运行本申请实施例的设备的一种硬件结构图;
图5是本申请实施例中一种数据流的聚类装置的逻辑结构图。
具体实施方式
在聚类分析中,点集在聚类过程中形成的每一种类别划分情形都可以对应于一个聚类模型,包括作为一些聚类算法启动时的类别划分初始值、聚类算法迭代过程中的类别划分情形、以及作为聚类结果的类别划分情形。聚类模型中记载了每个类别的抽象表述。类别的抽象表述由属于该类别的所有的点确定,在聚类算法中采用类别的抽象表述来计算点与类别之间的相似程度,和/或类别与类别之间的相似程度,从而决定点与类别之间的归属关系,以及类别与类别之间的划分关系。
类别的抽象表述由表述形式和代表参数两部分构建而成,类别的表述形式由所采用的聚类算法确定,例如,GMM(Gaussian Mixture Model,高斯混合模型)聚类算法中类别的表述形式为一种高斯分布;k-means(k均值)聚类算法中类别的表述形式为类别中心点。由于一个聚类模型中所有的类别都采用相同的表述形式,类别的不同在于其代表参数的不同,因此每个类别的代表参数可以即可唯一的确定一个类别,同样,代表参数也确定了点集中的点和该代表参数所属类别的相似程度,以及该代表参数所属类别和其他类别的相似程度。在聚类算法的迭代过程中,代表参数通常随着其所属类别中点的增加而有所变化。
代表参数可以是一个到多个,其数量和具体形式与所采用的聚类算法相关,仍以数据流的聚类采用GMM和k-means聚类算法为例,GMM中类别的代表参数通常是类别的均值和标准差,k-means中类别的代表参数通常是类别中心点的位置(如K维空间中的一个坐标点,K为自然数)。
在第一点集的聚类过程中生成的聚类模型,可以用来对具有相同或相类似数据内在属性的第二点集进行聚类,这种情况下第二点集的聚类结果不仅取决于第二点集中的数据分布,还会受到第一点集中数据分布的影响。例如,第一点集的结果模型(本申请中将按照一个点集的聚类结果生成的聚类模型称为该点集的结果模型)可以作为具有类似数据内在属性的第二点集的起始模型(本申请中将在对一个点集进行聚类时,用来确定聚类算法中类别初始值的聚类模型称为该点集的起始模型),这种情形下相当于对第一点集和第二点集的并集进行聚类,第一点集的数据分布将完全体现在对第二点集的聚类结果中。
在对数据流进行聚类时,由于数据流中的点是随时间陆续生成的,作为聚类对象的点集是分别对应于不同时间段的一个个数据流的片段,本申请中称之为数据分区,每个数据分区即为一个点集。由于数据流中的点通常是来自同一个业务系统、甚至是来自同一个业务过程,这些对应于不同时间段的数据分区中点往往具有相类似的内在数据属性,因此可以借鉴由对应于之前时间段的数据分区在聚类过程中生成的聚类模型,来对当前待分类的数据分区进行聚类。这样,对当前数据分区的聚类结果中将体现之前数据分区的数据分布特征,从而将业务的延续性带入到对当前数据分区的聚类中,使得聚类结果随时间平稳变化,避免了聚类结果过大波动。
有鉴于此,本申请的实施例提出一种新的数据流的聚类方法,由之前至少两个数据分区的结果模型中每个类别的代表参数,生成当前数据分区的起始模型中同一类别的代表参数,来确定当前数据分区的起始模型,并利用该起始模型对当前数据分区进行聚类,从而使当前数据分区的聚类结果既能很好地体现较长时间窗口内的长期数据特性,又能捕获当前时间段的短期数据变化,避免了因数据的短暂变化而导致的聚类结果过大波动,以解决现有技术中存在的问题。
本申请的实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本申请实施例中的各项功能。
本申请的实施例中,数据流的聚类方法的流程如图1所示。
步骤110,获取当前数据分区之前的N(N为不小于2的自然数)个在先数据分区的结果模型。
本申请的实施例中,数据流中包括若干个具有时序关系的数据分区,每个数据分区相当于是用一个时间窗口在数据流中截取的一段数据,两个时序上相邻的数据分区的时间窗口可以有部分重合(即有部分数据同时属于两个数据分区,如图2-1所示),可以相邻(即将数据流划分为各个数据分区,如图2-2所示),也可以有一定间隔(即数据流中有的数据不属于任何一个数据分区,如图2-3所示),不做限定。另外,各个数据分区的时间窗口的长度可以有相同或不同,数据分区中包括的点的数量也可以相同或不同,同样不做限定。
当前数据分区是将要进行聚类的数据分区,在先数据分区是在时序上先于当前数据分区、已经完成聚类的数据分区。每个在先数据分区的结果模型根据该在先数据分区的聚类结果生成,其中包括在对该分区完成聚类时,每个类别的代表参数。
可以在每个数据分区聚类结束时,生成该数据分区的结果模型,并将结果模型保存起来,在本步骤中读取保存的在先数据分区的结果模型即可。
回到图1,步骤120,根据N个在先数据分区的结果模型确定当前数据分区的起始模型,起始模型中每个类别的代表参数由该N个结果模型中相同类别的代表参数确定。
可以考虑所采用聚类算法的类型、数据流的业务变化速度等因素来决定从N个结果模型生成当前数据分区的起始模型的具体方式,本申请的实施例不做限定。以下以两种应用场景为例进行说明。
在第一种应用场景中,数据流聚类所采用的聚类算法为固定类别数量的聚类算法。固定类别数量的聚类算法有设定的类别个数,每个结果模型中都有相同的M(M为大于等于2的自然数)个类别,但通常同一个类别在不同的结果模型中有不同的代表参数。当前数据分区的起始模型也有与结果模型中相同的M个类别,采用每个类别在N个结果模型中的代表参数,按照预定融合算法计算出该类别在起始模型中的代表参数,即可确定起始模型。
例如,可以按照N个在线数据分区的结果模型中相同类别的相同代表参数的加权和,来确定起始模型中该类别的该代表参数。在设定权值时,可以使某个代表参数的权值与其所属结果模型对应的在先数据分区与当前数据分区的时间间隔相关,时间间隔越近,权值越高。这样,既可以通过采用N个结果模型的代表参数来使得对应时间段的聚类结果反映在对当前数据分区的聚类中,以体现历史数据的长期影响;又能侧重于临近时间段的数据分布情况,以充分反映短期的数据变化。
在第一种应用场景的一个具体的例子中,数据流的聚类采用k-means算法,固定类别数量为M。k-means算法中,类别的代表参数为类别中心点的位置。当前数据分区的起始模型可以由式1确定:
式1中,D
t为当前数据分区的起始模型中第t个类别的中心点位置,
为第i个在先数据分区的结果模型中第t个类别的中心点位置,ω
i为第i个在先数据分区的结果模型的权重。
在第二种应用场景中,数据流聚类所采用的聚类算法为不固定类别数量的聚类算法。不固定类别数量的聚类算法根据点集中点的分布情况确定将点集划分为多少个类别,如DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)算法等。这种应用场景中,N个在先数据分区的结果模型可能会包括不同的类别。在确定当前数据分区的起始模型时,可以将N个结果模型中包括每个类别都作为当前数据分区的起始模型中的类别(即起始模型中类别的集合是N个结果模型中类别集合的并集),然后采用每个类别在包括该类别的结果模型中的代表参数,按照预定融合算法计算出该类别在起始模型中的代表参数,即可确定起始模型。
第二种应用场景中的预定融合算法可以参照第一种应用场景实现,如采用加权和的计算方式。由于在聚类过程中可能产生新的类别,第二种应用场景中可能存在某个起始模型中的类别,只在P(P为小于N的自然数)个结果模型中存在的情形,此时,预定融合算法可以按照P个结果模型中该类别的代表参数,计算得出该类别在起始模型中的代表参数。
类似的,在第二种应用场景的聚类过程中,随时间推移也可能会发生有的类别已经不再适合当前数据分布的情形。可以对在先数据分区的聚类结果进行监测,当某个类别在至少一个在先数据分区的聚类结果满足预定删除条件时,在当前数据分区的起始模型中删除该类别。预定删除条件可以根据应用场景中数据的变化速度和变动程度等因素来设置,例如,可以设置为连续P个在先数据分区的聚类结果中,属于该类别的点数少于总点数的某个百分比阈值。
需要说明的是,不同结果模型中的相同类别是指对于依据聚类结果所进行的业务而言,对这些属于不同结果模型的类别的业务处理、或者依据这些类别所进行业务过程是一致的。换言之,就聚类分析的目的而言,这些属于不同结果模型的类别可以认为是同一个类别。判断不同结果模型中的哪些类别是相同类别的方式,可以根据应用场景的具体特点来确定。例如,在上述第一种应用场景中,可以将最初N个结果模型(即数据流的第1个到第N个数据分区的结果模型)作为起始模型,对进行过类别标记的点集进行聚类,N个聚类结果中包括相同已标记类别的点的类别即是相同的类别。再如,在上述第二种应用场景中,可以由人工将最初N个结果模型中的相同类别标注出来。在第三个例子中,对第一种应用场景,可以分别计算第一个结果模型中类别a与第二个结果模型中M个类别的距离,将距离最近的一个类别作为第二个结果模型中与类别a相同的类别;以此类推,即可得到所有的相同类别。
步骤130,采用起始模型对当前数据分区中的数据记录进行聚类。
在确定当前数据分区的起始模型后,以起始模型中的类别作为初始值,来以当前数据分区为对象运行所采用的聚类算法时的初始值,对当前数据分区中的点进行聚类。
在聚类算法运行完毕后,得到当前数据分区的聚类结果。可以按照当前数据分区的聚类结果生成当前数据分区的结果模型,以便用来对后续的数据分区进行聚类。
需要说明的是,当对数据流的第1个到第N个数据分区进行聚类时,即第1个到第N个数据分区为当前数据分区时,其在先数据分区的数量不到N个,此时可以按照现有技术中的方式分别对第1个到第N个数据分区进行聚类,将以这N个聚类结果生成的聚类模型作为第(N+1)个数据分区起始模型的基础;也可以按照现有技术中的方式得到第1个数据分区的聚类结果,再利用第1个到第(L-1)(L为大于等于2并且小于N的自然数)个数据分区的结果模型确定第L个数据分区起始模型;还可以以其他方式对第1个到第N个数据分区进行聚类;本申请的实施例不做限定。
可见,本申请的实施例中,根据之前N个数据分区的结果模型中每个类别的代表参数,生成当前数据分区的起始模型中同一类别的代表参数,从而确定当前数据分区的起始模型,并以起始模型中的类别为起点来进行当前数据分区的聚类,使得在先数据分区的历史数据能够对当前数据分区的聚类产生影响,既能在当前数据分区的聚类结果中体现较长时间窗口内的长期数据特性,又能及时反映当前时间段的短期数据变化,避免了聚类结果的严重抖动,在为业务的及时性提供支持的同时,提高了业务的平稳度。
在本申请的一个应用示例中,采用GMM聚类算法对数据流进行聚类。来自业务系统的流式数据按照用户设置的时间段,被切分成多个数据分区(如每10分钟的数据保存为1个数据分区),按照时间先后的顺序进行存储。存储的数据分区可以在用户设置的老化时间到后被删除,以节省存储空间。
对各个数据分区进行聚类的处理流程如图3所示。设预设的类别数量为M,对GMM聚类算法,每个类别为一个高斯分布。
步骤310,对第1个、第2个和第3个数据分区,分别采用GMM算法进行聚类,按照聚类结果生成结果模型,每个结果模型中包括M个高斯分布的均值和标准差(类别的代表参数)。
步骤320,将第1个、第2个和第3个数据分区的结果模型保存在历史模型库中。
步骤330,令Q=4,以第4个数据分区为当前数据分区。
步骤340,从历史模型库中读取当前数据分区之前的3个数据分区的结果模型,从中提取出M个高斯分布的均值和标准差,按照式2和式3确定当前数据分区起始模型的M个高斯分布的均值和标准差:
式2中,μ
Q,t为第Q个数据分区(即当前数据分区)的起始模型中第t个高斯分布的均值,
为第i个数据分区的结果模型中第t个高斯分布的均值。式3中,σ
Q,t为第Q个数据分区的起始模型中第t个高斯分布的标准差,
为第i个数据分区的结果模型中第t个高斯分布的标准差。
步骤350,以当前数据分区的起始模型为GMM聚类算法的初始值,运行GMM聚类算法,对当前数据分区中的点进行聚类。
步骤360,根据当前数据分区的聚类结果生成当前数据分区的结果模型,保存在历史模型库中。
步骤370,将Q加1,以下一个数据分区作为当前数据分区,转步骤340。
与上述流程实现对应,本申请的实施例还提供了一种数据流的聚类装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的CPU、内存以及非易失性存储器之外,数据流的聚类装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图5所示为本申请实施例提供的一种数据流的聚类装置,所述数据流包括具有时序关系的若干个数据分区,所述装置包括在先结果模型获取单元、起始模型生成单元和当前分区聚类单元,其中:在先结果模型获取单元用于获取当前数据分区之前的N个在先数据分区的结果模型,N为不小于2的自然数;所述每个结果模型根据对应的在先数据分区的聚类结果生成,每个结果模型中包括每个类别的代表参数;起始模型生成单元用于根据所述N个结果模型确定当前数据分区的起始模型,所述起始模型中每个类别的代表参数由所述N个结果模型中相同类别的代表参数确定;当前分区聚类单元用于采用起始模型对当前数据分区中的数据记录进行聚类。
一个例子中,所述起始模型中每个类别的代表参数由所述N个结果模型中相同类别的代表参数确定,包括:起始模型中每个类别的每个代表参数由所述N个结果模型中相同类别的相同代表参数的加权和确定。
上述例子中,所述代表参数的权值与其所属结果模型对应的在先数据分区与当前数据分区的时间间隔相关,时间间隔越近,权值越高。
可选的,所述装置还包括:当前结果模型生成单元,用于按照当前数据分区的聚类结果生成当前数据分区的结果模型,用于对后续的数据分区进行聚类。
可选的,所述数据流的聚类采用k均值聚类算法,所述代表参数包括类别中心点的位置;或,所述数据流的聚类采用高斯混合模型聚类算法,所述代表参数包括类别的均值和标准差。
一种实现方式中,所述数据流的聚类采用不固定类别数量的聚类算法;所述起始模型生成单元包括:类别组合模块,用于将N个结果模型中包括每个类别均作为所述起始模型中的类别。
上述实现方式中,所述起始模型生成单元还可以包括:类别删除模块,用于当某个类别在至少一个在先数据分区的聚类结果满足预定删除条件时,在当前数据分区的起始模型中删除所述类别。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。