一种基于KNN的密度峰值聚类方法与流程

文档序号:17549640发布日期:2019-04-30 18:10阅读:517来源:国知局
一种基于KNN的密度峰值聚类方法与流程

本发明涉及数据聚类技术领域,特别涉及一种基于knn的密度峰值聚类方法。



背景技术:

当前是一个数据的时代,每时每刻都有大量的数据产生。需要从大量的数据中发现有用的知识和规律,因此数据挖掘技术由此而生,而聚类就是数据挖掘技术中的一个重要分支。聚类是根据用户定义的样本相似度计算方式将数据划分成若干个类簇的过程,最终的结果是希望簇中样本的相似度高,而簇间的相似度低。由于聚类不需要类标签,常常作为其他挖掘步骤的先行分析方式。聚类在模式识别、机器学习、智能推荐、图像处理等多个领域已经有非常广泛的应用。

聚类方法的研究已经有数十年,已有的聚类方法主要分为以下几类:基于划分的聚类、基于密度的聚类、基于层次的聚类、基于网格的聚类和基于模型的聚类。k-means算法是典型的基于划分的聚类方式,该算法首先随机选取k个聚类中心,然后将剩余样本划分到距离其最近的聚类中心所在的簇并重新计算聚类中心,多次迭代直至结果不再划分;其中k由用户指定。k-means算法是将样本划分至距离最近的簇中,因此该算法无法发现任意类型的簇,且k值的指定需要用户对数据有一定的认识。dbscan算法是基于密度的典型算法,通过邻域半径和邻域内样本数量两个参数来判断簇的生成;但是,该算法对邻域半径比较敏感,较小的邻域半径值可能会导致聚类结果产生过多的簇,较大的邻域半径值会导致较小的簇被合并到一个簇中。

2014年,science上发表了一种密度峰值聚类算法(desitypeakscluseringalgorithm,dpca),该算法计算样本点的密度和到其他高密度点的距离做决策图,能够有效发现聚类中心和离群点。接着,dpca引起了广泛的研究,多种密度峰值聚类算法产生。ding等将网格聚类方法和dpca相结合,有效改善了dpca的时间复杂度问题;jiang等人把引力公式引入dpca,使得发现聚类中心和离群点更有效。2016年,meichen等人提出了结合knn的有效密度聚类方法(effectivelyclusteringbyfindingdensitybackbonebased-onknn,club),该算法中k值的计算依赖于数据集的标准差和平均值,如果数据集的平均值接近于0或者小于0,无法得到有效的k值,算法无法进行。



技术实现要素:

针对已有club聚类算法在数据集均值接近0而无法得到有效的k值问题,本发明提供一种基于knn(k-nearestneighbor,k最近邻)的密度峰值聚类方法,通过对算法的优化,进而得到有效的k值,提高数据的聚类效果。

为了实现上述目的,本发明提供以下技术方案:

一种基于knn的密度峰值聚类方法,包括以下几个步骤:

s1:通过自然邻居搜索算法得到数据集中每个样本点的k值;

s2:计算数据集中每个样本点的k个近邻信息,得到第一聚类集合;

s3:计算第一聚类集合中每个样本点的密度,对密度进行降序排列,标记排列前g的密度对应的样本点为核心点,对核心点进行分类形成第二聚类集合;

s4:对数据集中所有样本点进行分配,得到第三聚类集合。

优选的,所述s1中,自然邻居搜索算法通过对k值从1递增进行计算,每次递增都会查找每个样本点的自然邻居,直到所有样本点都有自然邻居或者没有自然邻居的样本点的数量在达到预设的搜索次数后不再发生改变,算法停止。

优选的,所述s2中,包括以下步骤:

s2-1:计算每个样本点的k个近邻信息,计算公式如下:

knn(xi)={xj|xj∈sorted(dist(i))(a)};(1)

公式(1)中,knn(xi)表示样本点xi的k个近邻信息,xj表示xi的近邻,dist表示n*n的距离矩阵,n表示样本点的个数,dist(i)表示样本xi到其余样本点的距离矩阵,大小为1*n,sorted表示对距离矩阵进行升序排序,a=1、2···k。

s2-2:计算样本点之间的共享k近邻信息,形成第一聚类集合;

共享k近邻信息sknn(xi,xj)的计算公式为:

sknn(xi,xj)=knn(xi)∩knn(xj)(2)

公式(2)中,sknn(xi,xj)表示样本点xi和xj的共享k近邻信息,knn(xi)表示样本点xi的k近邻信息,knn(xj)表示样本点xj的k近邻信息,∩表示交集。

优选的,所述s3中,所述样本点的密度计算公式为:

d(xi)=∑d(xi,xj)|xj∈knn(xi)(4)

公式(3)、(4)、(5)中,ρ(xi)表示样本点xi的密度,d(xi)表示样本点xi与其k近邻点的距离之和,d(xi,xj)表示样本点xi和xj的欧式距离,xj和xi是近邻关系,m表示样本点的维数,t代表遍历m时的维数值,xit表示样本点xi的第t维数值。

优选的,所述s3中,对核心点按照共享2*k个近邻信息进行聚类得到第二聚类集合;

核心点的2*k个近邻信息的计算公式为:

2knn(xi)={xj|xj∈sorted(dist(i))(t)};(6)

其中t=1、2…2*k;

核心点分配公式为以下公式:

2knn-connected(xi,xj)=1,xi∈2knn(xj),xj∈2knn(xi)(7)

公式(7)的意义是将满足分配条件的核心点xi和xj分配到同一个第二子聚类中。

优选的,所述s4中,包括以下步骤:

s4-1:对核心点的近邻点进行分配;

核心点形成集合w,其它的样本点形成非核心点集合l;

遍历第二聚类集合w中xi的任一近邻点xq(xq∈l),若xq不属于第二聚类集合w,将xq加入xi所在的第二聚类集合w,并从l中移除xq;

s4-2:对剩余样本点进行分配,得到第三聚类聚合;

经过s4-1步骤后,集合l中移除了已分配样本点,则集合l中尚未分配的样本点为剩余样本点,形成剩余样本点集合o,查找每个剩余样本点xr在第二聚类集合w中的最近邻点xs,将xr加入xs所在的第二聚类集合w中,并将xr从剩余样本点集合o中移除,直至剩余样本点集合o中样本点为零。

最近邻点的查找公式:

xs|min(d(xr,xs),xr∈o,xs∈w(8)

公式(8)、(9)中,xs是xr的最近邻,d(xr,xs)表示样本点xr和xs的欧式距离,m表示样本点的维数,t代表遍历m时的维数值,xrt表示样本点xr的第t维数值。

综上所述,由于采用了上述技术方案,与现有技术相比,本发明至少具有以下有益效果:

本发明将自然邻居搜索算法引入club算法中,解决了club算法对平均值接近0或者小于0的数据集的k值无法计算的问题;同时采取两步分配策略对数据集中样本点进行分配,提高聚类的精度。

附图说明:

图1为根据本发明示例性实施例的一种基于knn的密度峰值聚类方法流程示意图。

图2为根据本发明示例性实施例的自然邻居搜索算法流程示意图。

具体实施方式

下面结合实施例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

图1为根据本发明示例性实施例的一种基于knn(k-nearestneighbor,k最近邻)的密度峰值聚类方法流程示意图。具体包括以下步骤:

步骤s1:计算数据集中每个样本点的k值。

本实施例中,待聚类的数据集为d=[x1,x2,…,xn],xn表示第n个样本点。本实施例中,对数据集中参数进行定义:xi,xj∈d,若xi的k近邻(k个最近的邻居)包含了xj,则xi为xj的逆近邻;若xi为xj的逆近邻且xj为xi的逆近邻,则xi和xj互为自然邻居。

参照图2,本实施例中,自然邻居搜索算法的核心思想是从设置邻域范围从1开始,递增邻域范围值,每次递增都会查找每个样本点的自然邻居,直到所有样本点都有自然邻居或者没有自然邻居的样本点的数量在到达预设搜索次数(例如5次)后不再发生改变,算法停止,邻域范围值递增为自然邻居特征值supk,即为k值。

输入:数据集d

输出:自然邻居特征值supk

初始化supk=1,每个样本点的自然邻居数量nbi=0,每个样本点的自然邻居集合为空集:每个样本点的逆近邻集合为空集:

通过自然邻居搜索算法可以得出,自然邻居特征值实际上是数据集中所有数据点的自然邻居数量的平均值,贴近于club算法中的数据集近邻个数k值,且无论数据集呈现何种分布,通过迭代计算均能得到一个特征值,能够有效改善club算法中数据集平均值为0时k值无效的情况。自然邻居搜索算法主要描述了数据集中每个数据点的邻域信息,拥有自然邻居数量较多的数据点的周边分布较为密集,反之,在拥有自然邻居数量较少的数据点的周边分布较为稀疏。

步骤s2:计算数据集中每个样本点的k个近邻信息,形成第一聚类集合。

s2-1:计算每个样本点的k个近邻信息。

本实施例,在数据集d中,通过以下公式计算每个样本点的k个近邻信息:

knn(xi)={xj|xj∈sorted(dist(i))(a)};(1)

公式(1)中,knn(xi)表示样本点xi的k个近邻信息,xj表示xi的近邻,dist表示n*n,n为样本点的个数,dist(i)表示样本xi到其余样本点的距离矩阵,大小为1*n,sorted表示对距离矩阵进行升序排序,a=1、2···k。

s2-2:计算样本点之间的共享k近邻信息,形成第一聚类集合。

本实施例中,计算数据集d中样本点之间的共享k近邻信息sknn(xi,xj),若(表示空集),则将xi和xj聚为同一个簇,例如第一子聚类c1,依次类推,数据集d中的全部样本点可分为不同的簇,并得到第一聚类集合c={c1,c2,…,cn},cn表示第n个第一子聚类。

共享k近邻信息sknn(xi,xj)的计算公式为:

sknn(xi,xj)=knn(xi)∩knn(xj)(2)

公式(2)中,sknn(xi,xj)表示样本点xi和xj的共享k近邻信息,knn(xi)表示样本点xi的k近邻信息,knn(xj)表示样本点xj的k近邻信息,∩表示交集。

步骤s3:计算数据集中每个样本点的密度,形成第二聚类集合。

本实施例中,第一聚类集合为c={c1,c2,…,cn},而第一聚类集合中会出现聚类过大的情况,因此本发明通过计算每个子聚类中每个样本点的密度值,从而进行再次聚类,得到更准确的第二聚类集合。

本实施例中样本点的密度值计算公式为以下公式:

d(xi)=∑d(xi,xj)|xj∈knn(xi)(4)

公式(3)、(4)、(5)中,ρ(xi)表示样本点xi的密度,d(xi)表示样本点xi与其k近邻点的距离之和,d(xi,xj)表示样本点xi和xj的欧式距离,xj和xi是近邻关系,m表示样本点的维数,t代表遍历m时的维数值,xit表示样本点xi的第t维数值。

本发明通过计算得到第一聚类集合c中的每个子聚类中每个样本点的密度,将密度值进行降序排列得到第一序列,并将第一序列中前g(50%)的密度标记为核心值,即将核心值相对应的样本点标记为核心点。

本实施例中,本发明对核心点按照共享2*k个近邻信息,将核心点分为第二子聚类w1,依次类推可得到第二聚类集合w={w1,w2,…,wn},wn表示第n个第二子聚类。

核心点的2*k个近邻信息的计算公式为:

2knn(xi)={xj|xj∈sorted(dist(i))(a)};(6)

其中a=1、2…2*k;

核心点分配公式为以下公式:

2knn-connected(xi,xj)={(xi,xj)|xi∈2knn(xj),xj∈2knn(xi)}(7)

公式(7)的意义是将满足分配条件的核心点xi和xj分配到同一个第二子聚类中。

步骤s4:通过对数据集中样本点进行分配,得到第三聚类集合。

本实施例中,可将步骤s3中得到的核心点形成集合w,其它的样本点形成非核心点集合l,及d=w+l。

s4-1:对核心点的近邻点进行分配。

本实施例中,遍历第二聚类集合w中xi的任一近邻点xq∈knn(xi),如果xq不属于第二聚类集合w(即xq∈l),将xq加入xi所在的第二聚类集合,并从l中移除xq。

s4-2:对剩余样本点进行分配。

本实施例中,经过s4-1步骤后,集合l中移除了部分样本点进行非配,则集合l中尚未分配的样本点为剩余样本点,形成剩余样本点集合o。首先对集合o中的剩余样本点按密度(公式3)从高到低排序,按照以下查找每个剩余样本点xr(xr∈o)在w中的最近邻点xs(xs∈w),将xr加入xs所在的第二聚类集合w中,并xr从o中移除,直至o中样本点为零。

xs|min(d(xr,xs),xr∈o,xs∈w(8)

公式(8)、(9)中,xs是xr的最近邻,d(xr,xs)表示样本点xr和xs的欧式距离,m表示样本点的维数,t代表遍历m时的维数值,xrt表示样本点xr的第t维数值。

剩余样本点分配结束,数据集中所有样本点均完成聚类,得到第三聚类聚合。

本发明在多个模拟数据集和uci数据集上进行算法实验,采用调整兰德系数(ari,adjustedrandindex)和标准化互信息(nmi,normalizedmutualin-formation)两个评价指标对数据集d的聚类结果进行评价,并将本发明的实验结果与club算法实验结果进行比较。

表1人工数据集实验结果对比

表2uci数据集实验结果对比

实验结果表明,在人工数据集和uci数据集上,本发明中使用自然邻居搜索算法的自然邻居特征值代替club算法中使用标准差和平均值计算得到的k值,具有和club算法同样的聚类效果。在平均值接近0的环形数据集中,club算法无法计算出k值,从而无法完成聚类,本发明方法同样可以得到有效的k值得到理想的聚类结果,适用的场景比club算法更多。

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