增量聚类方法和装置与流程

文档序号:18398787发布日期:2019-08-09 23:40阅读:257来源:国知局
增量聚类方法和装置与流程

本发明实施例涉及数据处理技术领域,尤其涉及增量聚类方法和装置。



背景技术:

聚类是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程,即将对象分类到不同的类或者簇的过程,同一个类中的对象有很大的相似性,不同类之间的对象有很大的相异性。

聚类方法包括很多种类。基于密度和基于层次的聚类算法虽然简单易行,广受欢迎,但是现有的基于密度的算法有着一些局限性。

部分基于密度的聚类算法,基于全局密度,只能对数据提供一种比较单一的标签,使用单一的密度阈值,对于密度不均匀的数据集,不能产生合适的具有特性的聚类效果;部分基于层次的聚类不能自适应的简化层次成为一种简单的,可分辨的,具有代表性的,最有意义的聚类;部分基于层次的聚类只是从全局密度阈值中提取一种单一的划分,这对由不同密度等级的聚类对象,不能得出有意义的聚类;很多聚类方法常常依靠多个具有重要影响的参数。

其中,基于密度的聚类方法与其它的聚类方法不同的是,它不是基于各种距离,而是基于密度,只要一个区域中的点的密度大于某个阀值,就把它加到与之相近的聚类中去。这样能够克服基于距离的聚类算法只能发现“类圆形”的聚类的缺点。例如,dbscan(density-basedspatialclusteringofapplicationswithnoise)算法就是基于密度的聚类方法中一种典型算法,dbscan算法将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可以在噪声的空间数据库中发现任意形状的聚类。dbscan算法引入了核心对象的概念和两个初始参数eps(扫描半径)和minpts(最小包含对象数)。如果存在一个对象,在距它eps的范围内有不少于minpts个对象,则该对象就是核心对象。核心对象和它的eps范围内的邻居对象形成一个簇。在一个簇内如果出现多个对象都是核心对象,则以这些核心对象为中心的簇要合并。但是,此种聚类算法的聚类结果对参数eps和minpts的取值非常敏感,即eps和minpts的取值不同,产生不同的聚类结果,从而导致聚类结果的不确定性。基于密度的聚类由于其参数的难调节性,聚类的结果在密度大的地方往往数量很大,而密度小的地方数量较少,这对于大多数应用场景(比如定位)来说是不利的条件,因为当数据匹配到密度大的类中时,由于该类的数据很多,会造成在该类中匹配的计算量很大,而且该类中的数据不一定对最后的结果有用。原始的基于密度的聚类对于真实世界中复杂的数据效果并不好。

增量聚类方法是当有一批聚类结果时,新增加一些数据,只对新增的数据进行聚类,并对已有的聚类结果进行增量式修改,不需要对新增数据后的整个数据集进行重新聚类。但是,相关技术中的聚类方法和增量聚类方法均无法同时保证高精确率和高召回率。例如,基于密度层次的hdbscan(hierarchicaldensity-basedspatialclusteringofapplicationswithnoise)算法能获得较好的密度可变的聚类结果,但在做增量更新时,无法有效更新已有的聚类状态,只能在原有的聚类基础上,靠分类来容纳新增的对象。



技术实现要素:

针对现有技术存在的无法在密度可变的聚类结果的基础上进行增量聚类的问题,本发明实施例提供一种增量聚类方法和装置。

本发明实施例提供一种增量聚类方法,所述方法用于在根据基于密度的层次聚类算法获得首次聚类结果的基础上,对首次聚类后每次新增数据点进行聚类;所述方法包括:

对于新增数据点,以全部类的类密度的最大值作为邻域半径,获取所述新增数据点的邻域内的数据点;

根据所述新增数据点的邻域内的每一数据点所属的类的类密度,确定所述新增数据点所属的类。

本发明实施例提供一种增量聚类装置,所述装置用于在根据基于密度的层次聚类算法获得首次聚类结果的基础上,对首次聚类后每次新增数据点进行聚类;所述装置包括:

邻域扫描模块,用于对于新增数据点,以全部类的类密度的最大值作为邻域半径,获取所述新增数据点的邻域内的数据点;

增量聚类模块,用于获取所述新增数据点的邻域内的每一数据点所属的类的类密度,根据全部所述类密度,确定所述新增数据点所属的类。

本发明实施例提供的增量聚类方法和装置,根据全部类密度确定邻域半径,当新增数据点对邻域半径内的数据点均为核心点时,将新增数据点所属的类确定为类密度最小的类,并对该类进行增量更新,使每个类中分布的数据点数量尽可能一致,改善了增量聚类的聚类效果,适用于数据点分布密度不均的情况,提高了增量dbscan聚类的性能,拓展了基于密度的增量算法的应用范围,实现了在密度可变的聚类结果的基础上进行增量聚类。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例增量聚类方法的流程图;

图2为本发明实施例增量聚类装置的功能框图;

图3为本发明实施例增量聚类设备的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,本发明实施例提供的增量聚类方法和装置用于在根据基于密度的层次聚类算法获得首次聚类结果的基础上,在首次聚类后,在上一次聚类或增量聚类结果的基础上,对本次新增数据点进行聚类。

优选地,基于密度的层次聚类算法为hdbscan算法。

图1为本发明实施例增量聚类方法的流程图。如图1所示,一种增量聚类方法包括:步骤s1、对于新增数据点,以全部类的类密度的最大值作为邻域半径,获取新增数据点的邻域内的数据点;步骤s2、根据新增数据点的邻域内的数据点所属的每个类的类密度,确定新增数据点所属的类。

步骤s1,上一次聚类或增量聚类的结果为获得的类的集合为cen={c1,c2,...,cn}。

其中ci表示上一次聚类或增量聚类生成的类,i=1,...,n。

当出现新增数据点xnew时,根据上一次聚类或增量聚类获得的每个类的类密度dci,将其中的最大值作为邻域半径ε,获取新增数据点xnew的邻域内的全部数据点。

类密度,用于反映类中数据点的聚集程度。

优选地,类密度为该类中两个数据点之间距离的平均值。

其中,1≤p≤mi,1≤q≤mi且p≠q,mi表示类ci中的数据点的个数;dist(xp,xq)代表类ci中两个不相同数据点之间的距离;xp、xq表示类ci中的数据点。

步骤s2,获取新增数据点xnew的邻域内的全部数据点后,根据上述全部数据点分别所属的类的类密度,判断新增数据点xnew的邻域内的每一数据点是否为核心点,并根据上述全部数据点是否均为核心点,确定新增数据点xnew所属的类。

根据基于密度的聚类算法中密度的定义,核心点指稠密区域内部的点,边界点指稠密区域边缘上的点,噪声点(或称为背景点)指稀疏区域中的点。稠密区域和稀疏区域通过区域内数据点的数量判断。

核心点的密度较大,且大于边界点的密度;边界点的密度较小,且大于噪声点的密度。

可以理解的是,可以在完成上一次聚类或增量聚类,确定每个数据点的属性,即确定该点为核心点、非核心点或噪声点;也可以在获得新增数据点的邻域内的数据点后,仅确定新增数据点的邻域内的每一数据点为核心点、非核心点或噪声点。

新增数据点xnew后,数据点增加,原来的稀疏区域可能变成稠密区域,原来的非核心点可能变成核心点,可能导致上一次聚类或增量聚类获得的类的合并,由于类密度反映了类中数据点的聚集程度,因此,可以根据新增数据点xnew的邻域内的全部数据点是否均为核心点,确定如何根据新增数据点xnew进行增量聚类,获得新增数据点xnew所属的类。

若新增数据点xnew的邻域内的全部数据点均为核心点,根据上述全部数据点分别所属的每个类的类密度,确定新增数据点xnew所属的类;

若新增数据点xnew的邻域内的数据点不全部为核心点,即新增数据点xnew的邻域内的至少一个数据点为非核心点,上述非核心点可能变成核心点,则生成一个新类,并确定是否将新增数据点xnew所属的类确定为该类。

本发明实施例根据全部类密度确定邻域半径,当新增数据点对邻域半径内的数据点均为核心点时,将新增数据点所属的类确定为类密度最小的类,并对该类进行增量更新,使每个类中分布的数据点数量尽可能一致,改善了增量聚类的聚类效果,适用于数据点分布密度不均的情况,提高了增量聚类的性能,拓展了基于密度的增量算法的应用范围,实现了在密度可变的聚类结果的基础上进行增量聚类。进一步地,弥补了dbscan算法对于参数调整鲁棒性差的缺陷,具有很高的可靠性。

基于上述实施例,根据新增数据点的邻域内的数据点所属的每个类的类密度,确定新增数据点所属的类的具体步骤包括:对于新增数据点的邻域内的每一数据点,根据该数据点所属的类的类密度,确定该数据点是否为核心点;当新增数据点的邻域内的数据点均为核心点时,将新增数据点所属的类,确定为新增数据点的邻域内的数据点所属的类中类密度最小的类。

具体地,数据点为核心点或非核心点,可以根据该数据点周围的区域是稠密区域还是稀疏区域判断,即通过该数据点周围的区域内数据点的数量判断。

对于每个类,以类的类密度作为该类中每个数据点的邻域半径,根据每个数据点的邻域内数据点的数量,确定该数据点的邻域为稠密区域或稀疏区域,从而确定该数据点是否为核心点。

确定新增数据点的邻域内的每个数据点是否为核心点后,可以确定新增数据点的邻域内的数据点是否全部为核心点。

当新增数据点的邻域内的数据点均为核心点时,说明新增数据点xnew位于若干个核心点附近,不会改变新增数据点的邻域内的数据点的属性,可以作为核心点的邻域内的数据点,融合到新增数据点的邻域内的任一数据点所属的类中。

若新增数据点的邻域内的数据点所属的类不止一个,计算新增数据点的邻域内的数据点所属的每个类的类密度,确定新增数据点的邻域内的数据点所属的类中类密度最小的类,将该类密度最小的类确定为新增数据点xnew所属的类。

基于上述实施例,对于新增数据点的邻域内的每一数据点,根据该数据点所属的类的类密度,确定该数据点是否为核心点之后还包括:当新增数据点的邻域内的数据点包括非核心点时,将新增数据点的邻域内的非核心点组成一个新类;根据新类的类密度与每一非核心点所属的原类的类密度,确定是否将该非核心点保留在新类中,并获取保留在新类中的数据点的个数;根据保留在新类中的数据点的个数,确定新增数据点所属的类。

具体地,确定新增数据点的邻域内的每个数据点是否为核心点后,可以确定新增数据点的邻域内的数据点是否全部为核心点,当新增数据点的邻域内的数据点包括非核心点时,说明新增数据点xnew附近存在非核心点,可能使非核心点变成核心点。

当新增数据点的邻域内的数据点包括非核心点时,判断上述非核心点是否变成核心点。

假设上述非核心点均变成核心点,将新增数据点的邻域内的非核心点组成一个新类。

通过比较上述新类的类密度和上述每一个非核心点所属的原类的类密度,判断上述非核心点中是否有数据点变成核心点,且该核心点的邻域内的数据点的个数是否大于阈值,即判断上述新类满足基于密度的聚类算法中类的生成条件。

判断上述新类满足基于密度的聚类算法中类的生成条件,通过比较上述新类的类密度和上述每一个非核心点所属的原类的类密度,确定是否将该非核心点保留在上述新类中,从而获得上述新类中数据点的个数。

根据上述新类中数据点的个数,可以判断上述新类是否可以作为基于密度的聚类算法中类。

根据上述新类是否可以作为基于密度的聚类算法中类,确定新增数据点xnew所属的类。

基于上述实施例,根据保留在新类中的数据点的个数,确定新增数据点所属的类的具体步骤包括:当保留在新类中数据点的个数大于预设的阈值时,将保留在新类中数据点所属的类确定为新类,并将新增数据点所属的类确定为新类;当保留在新类中数据点的个数小于预设的阈值时,删除新类,保留在新类中数据点所属的类仍为该数据点所属的原类,将新增数据点所属的类,确定为非核心点所属的原类中类密度最大的类。

具体地,获得保留在新类中的数据点的个数,判断保留在新类中的数据点的个数是否大于预设的阈值。

当保留在新类中数据点的个数大于预设的阈值时,说明上述新类满足基于密度的聚类算法中类的生成条件,可以作为基于密度的聚类算法中类,则将上述新类确定为新增数据点xnew所属的类,并将保留在上述新类中的数据点所属的类确定为上述新类。

当保留在新类中数据点的个数大于预设的阈值时,说明上述新类不满足基于密度的聚类算法中类的生成条件,不能作为基于密度的聚类算法中类,删除该类,新增数据点xnew的邻域内的非核心点所属的类仍为该数据点所属的原类。此时,确定新增数据点的邻域内的非核心点所属的原类中类密度最大的类,将该类密度最大的类确定为新增数据点xnew所属的类。

基于上述实施例,根据新类的类密度与每一非核心点所属的原类的类密度,确定是否将该非核心点保留在新类中的具体步骤包括:若新类的类密度小于该非核心点所属的原类的类密度,则将该非核心点保留在新类中;若新类的类密度大于该非核心点所属的原类的类密度,则将该非核心点从新类中删除。

具体地,比较上述新类的类密度与每一非核心点所属的原类的类密度后,若上述新类的类密度小于该非核心点所属的原类的类密度,说明该非核心点可能变成核心点,将该非核心点保留在上述新类中;若上述新类的类密度大于该非核心点所属的原类的类密度,说明上述新类比该非核心点所属的原类更稀疏,该非核心点仍为非核心点,将该非核心点从上述新类中删除,不保留在上述新类中。

基于上述实施例,确定新增数据点所属的类之后还包括:当新增数据点所属的类不为新类时,根据基于密度的增量聚类算法,对新增数据点所属的类进行增量聚类。

具体地,当新增数据点的邻域内的数据点均为核心点,将新增数据点所属的类,确定为新增数据点的邻域内的数据点所属的类中类密度最小的类后,或当新增数据点的邻域内的数据点包括非核心点,将新增数据点所属的类确定为上述非核心点所属的原类中类密度最大的类后,将新增数据点作为增量,根据基于密度的增量聚类算法,对新增数据点所属的类进行增量聚类。

可以理解的是,在上述情况下,根据基于密度的增量聚类算法,对新增数据点所属的类进行增量聚类。

优选地,基于密度的增量聚类算法为改进后的增量dbscan算法。

改进后的增量dbscan算法的具体步骤包括:

判断新增数据点xnew是否为核心点;

若新增数据点xnew为核心点,则判断新增数据点xnew的邻域内是否存在核心点;

当新增数据点xnew的邻域内不存在核心点时,将新增数据点xnew确定为噪声点,从该类中删除;

其他情况下,新增数据点xnew仍为该类中的数据点。

基于上述实施例,获取新增数据点的邻域内的数据点之后还包括:当获取的所述新增数据点的邻域内的数据点的数量为零时,将新增数据点确定为噪声点。

具体地,通过步骤s1获取不到新增数据点xnew的邻域内的数据点时,即新增数据点xnew的邻域内没有数据点,说明新增数据点xnew位于稀疏区域,将新增数据点xnew确定为噪声点。

图2为本发明实施例增量聚类装置的功能框图。基于上述实施例,如图2所示,一种增量聚类装置包括:邻域扫描模块201,用于对于新增数据点,以全部类的类密度的最大值作为邻域半径,获取新增数据点的邻域内的数据点;增量聚类模块202,当判断获知邻域内的数据点均为核心点时,将新增数据点加入邻域内的数据点所属的类中类密度最小的类,并根据基于密度的增量聚类算法对该类进行增量聚类。

本发明提供的增量聚类装置用于执行本发明提供的增量聚类方法,增量包括的各模块实现相应功能的具体方法和流程详见上述增量聚类方法的实施例,此处不再赘述。

图3为本发明实施例增量聚类设备的结构框图。基于上述实施例,如图3所示,增量聚类设备包括:处理器(processor)301、存储器(memory)302和总线303;其中,处理器301和存储器302通过总线303完成相互间的通信;处理器301用于调用存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:增量聚类的方法;根据基于密度的层次聚类算法进行聚类的方法;基于密度的增量聚类算法进行增量聚类的方法;计算类密度的方法;生成新类的方法。

本发明另一实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:增量聚类的方法;根据基于密度的层次聚类算法进行聚类的方法;基于密度的增量聚类算法进行增量聚类的方法;计算类密度的方法;生成新类的方法。

本发明另一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:增量聚类的方法;根据基于密度的层次聚类算法进行聚类的方法;基于密度的增量聚类算法进行增量聚类的方法;计算类密度的方法;生成新类的方法。

以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1