一种基于密度峰值的混合属性数据聚类方法与流程

文档序号:11432798阅读:261来源:国知局

本发明涉及计算机数据挖掘及处理技术领域,尤其涉及一种基于密度峰值的混合属性数据聚类方法。



背景技术:

聚类分析一直是数据挖掘和机器学习领域中的研究热点之一,随着大数据时代的发展,各类数据层出不穷,其中大部分是同时具有数值和分类等多种属性类型的数据,传统的聚类算法如k-means等主要是针对数值属性数据的聚类算法。为了处理混合属性数据聚类问题,研究人员提出了各种各样的解决方案,按其处理思路可主要分为传统的类型转换方法、聚类融合方法、基于原型的方法和基于密度的方法、基于层次的方法等。

类型转换的方法就是将其他属性转换为某种属性再进行聚类,如david和averbuch提出的spectralcat算法,这个方法首先把数值属性转换成分类属性,然后使用谱聚类方法处理转换后的数据。

聚类融合的思想是采用多种算法对一组对象进行划分,将不同算法得出的结果采用共识函数加以合并以得出最终的聚类结果。其最早由a.strehl和j.ghosh于2002年提出,随后成为混合属性聚类的主流方法之一。赵宇等提出了一种基于聚类融合的混合属性聚类算法cemc,将聚类融合的方法体系引入混合属性数据聚类问题中。he等提出了基于聚类融合和squeezer算法的混合属性聚类算法cebmdc,该算法针对分类属性子集聚类和最后的聚类融合都采用了squeezer算法进行。

huang于1997年提出的k-prototypes(k原型)算法,该算法采用k-means算法的基本思想,将数值属性的聚类中心和分类属性的模式组合起来,构建了一个新的混合属性数据中心即原型(prototype),并以原型为基础构建了一个针对混合属性数据的距离度量公式和代价函数,采用k-means算法类似的聚类过程直接对混合属性进行聚类。基于原型的算法思想简单,效率高,其关键是在于数据元组之间的距离度量公式的定义。yiu-mingcheung等提出了一种统一相似性度量(unifiedsimilaritymetric)方法,将数值属性部分的距离度量进行归一化处理,使相似性度量的值约束在[0,1]区间,然后将各分类属性的相似性度量分别赋予权重并进行归一化处理,最后获得一个统一的距离度量公式。基于此公式,他们提出了一种迭代算法ocil来对混合属性数据进行聚类,同时,通过引入竞争和惩罚机制,对ocil进行了进一步的改进,提出了能够自动判别聚类数目的混合属性聚类算法(pcl-oc)。他们将ocil算法与k-prototypes算法进行了实验比较,其聚类精度有较大提高,但其统一度量值的计算复杂度较高。

li和biswas提出了sbac(similaritybasedagglomerativeclustering)算法[i],这是基于goodall相似度的凝聚层次聚类算法,该方法效果不错,但计算复杂度高于o(n2*logn)。

黄德才等提出的rdbc_m算法采用了面向维度的距离公式,对每一维单独计算距离,对数值属性采用欧氏距离,对分类属性则通过专家打分的方式为该属性不同值之间的相似性定义一个距离矩阵来衡量维度距离,其构建需要人工打分。

陈晋音等提出的mdcden算法和dc-mdacc算法均是将混合属性数据分为数值占优、分类占优和均衡型混合属性数据三类,然后针对每一类定义不同的距离度量函数。它们需要先对数据集进行占优分析。

上述基于原型的方法仍存在需要确定聚类个数、对簇中心的选取敏感、不能发现任意形状的簇以及对异常点比较敏感等缺点;基于层次的方法存在时间和空间复杂度较高、聚类过程不可逆的缺点;rdbc_m算法中的分类属性的相似度度量需要领域专家的评价赋值;mdcden算法需要调节三个参数来获得较佳结果。

2014年,alexrodriguez和alessandrolaio在《science》杂志上发表了一种快速搜索和发现密度峰值的聚类算法(本文简称dpc算法)。该算法聚类效果好、效率高、参数少,能够发现聚类数目,并能够对不同形状的数据进行聚类,自动识别离群点。dpc算法的输入是数据点间的距离矩阵,只要解决混合属性数据的数据点间的距离度量问题,就可以直接应用该算法进行聚类分析,但目前尚未查询到其他采用dpc算法对混合属性数据进行聚类的研究报告。

因此,亟需一种合理的混合属性数据点距离计算方法和处理混合属性数据的聚类方法,比传统的k-prototypes算法聚类效果好、算法效率高且能够自动发现聚类数目,对离群点的影响不敏感。



技术实现要素:

本发明实施例的目的在于提供一种基于密度峰值的混合属性数据聚类方法,比传统的k-prototypes算法聚类效果好、算法效率高且能够自动发现聚类数目,对离群点的影响不敏感。

为了解决上述技术问题,本发明实施例提供了一种基于密度峰值的混合属性数据聚类方法,所述方法包括:

s1、获取待聚类混合属性数据集,并根据所述待聚类混合属性数据集,计算出所述待聚类混合属性数据集中每两个数据点之间的距离,以及计算出所述待聚类混合属性数据集的截断距离;

s2、根据所述计算出的待聚类混合属性数据集中每两个数据点之间的距离以及所述计算出的截断距离,得到所述待聚类混合属性数据集中每一个数据点的局部密度,并进一步根据所述得到的待聚类混合属性数据集中每一个数据点的局部密度,计算出所述待聚类混合属性数据集中每一个数据点的相对距离;

s3、定义由所述待聚类混合属性数据集中每一个数据点的局部密度及其对应的相对距离形成的γ参数曲线,并确定所述待聚类混合属性数据集中每一个数据点的γ参数值;

s4、根据所述待聚类混合属性数据集中每一个数据点的序号、γ参数值及相对距离,构建拐点索引矩阵,并采用预设的双拐点算法对所述构建的拐点索引矩阵求解,得到所述待聚类混合属性数据集的聚类中心点;

s5、根据所述得到的待聚类混合属性数据集的聚类中心点,实现所述待聚类混合属性数据集聚类结果的表示和输出;其中,所述待聚类混合属性数据集中除所述得到的聚类中心点之外的数据点将被分配到近邻局部密度最高的聚簇中,完成聚类结果的表示和输出。

其中,所述待聚类混合属性数据集中每两个数据点之间的距离是通过公式d(xi,xj)=d(xi,xj)r+d(xi,xj)c来实现;其中,d(xi,xj)r表示待聚类混合属性数据集中数值属性部分的距离,d(xi,xj)c表示待聚类混合属性数据集中分类属性部分的距离;

其中,d(xi,xj)r是通过公式来实现;其中,表示数据点xi和xj的数值部分属性归一化后的欧氏距离,且距离值d(xi,xj)r在[0,1]区间;

其中,d(xi,xj)c是通过公式来实现;其中,为数据点xi和xj在第t维分类属性上的匹配距离;为第t维分类属性上的熵权,其中,p(ats)为第t维分类属性上的分类值的总个数为mt时,第s(s=1,2,...,mt)个值出现的概率。

其中,所述待聚类混合属性数据集中每一个数据点的γ参数值是通过公式γi=ρi×δi而获得的;其中,γi为第i个数据点的γ参数值;ρi为第i个数据点的局部密度;δi为第i个数据点的相对距离。

其中,所述步骤s4具体包括:

确定所述待聚类混合属性数据集中每一个数据点的序号、γ参数值及相对距离,并进一步分别形成序号集合、γ参数值集合及相对距离集合;其中,序号集合i=[1,2,…,n],γ参数值集合γ=[γ1,γ2,…,γn],相对距离集合δ=[δ1,δ2,…,δn];n为所述待聚类混合属性数据集中数据点总数,且为正整数;

根据所述形成的序号集合、γ参数值集合及相对距离集合,构建拐点索引矩阵ct=[i;γ;δ];其中,所述拐点索引矩阵ct=[i;γ;δ]是由数据点的序号、γ参数值及相对距离分别为作为行向量,数据点总数n为列向量所形成的3xn矩阵;

将所述拐点索引矩阵ct=[i;γ;δ]按照先对γ行从大到小排序再对δ行从大到小排序的方式进行调整,得到调整后的拐点索引矩阵,并对所述调整后的拐点索引矩阵求解γ行的二阶导数,得到的值作为拐点,且进一步在所述调整后的拐点索引矩阵中保留列数小于或等于所述拐点的所有向量,形成候选中心集;

判断所述候选中心集中向量列数是否小于或等于2;

如果是,则将所述候选中心集中列数对应序号的数据点作为聚类中心点;

如果否,则对所述候选中心集继续求解δ行的二阶导数,得到的值作为二次拐点,并将所述候选中心集中小于或等于所述二次拐点之前列数对应序号的数据点作为聚类中心点。

实施本发明实施例,具有如下有益效果:

本发明实施例对混合属性数据集提供统一的混合属性数据点的距离度量公式,并以此构建混合属性数据的数据点间的拐点索引矩阵,进而提出了基于双拐点的自动聚类中心确定方法,从而比传统的k-prototypes算法聚类效果好、算法效率高且能够自动发现聚类数目,对离群点的影响不敏感。

附图说明

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

图1为本发明实施例提供的基于密度峰值的混合属性数据聚类方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例中,提出一种基于密度峰值的混合属性数据聚类方法,所述方法包括:

步骤s101、获取待聚类混合属性数据集,并根据所述待聚类混合属性数据集,计算出所述待聚类混合属性数据集中每两个数据点之间的距离,以及计算出所述待聚类混合属性数据集的截断距离;

具体过程为,确定待聚类混合属性数据集,可设待聚类混合属性数据集s={x1,x2,…,xn}是待聚类的d维n个数据点的混合属性数据集;其中,第j个数据点可表示为xj=[xj1,xj2,…,xjd];假设待聚类混合属性数据集s中数值属性有dr维和分类属性有dc维,使得dr+dc=d,如前dr为个属性为数值属性,后dc个属性为分类属性,此时待聚类混合属性数据集s的截断距离即为分类属性的dc。

对待聚类混合属性数据集s提出统一距离度量定义,计算出待聚类混合属性数据集s中每两个数据点之间的距离,如对待聚类混合属性数据集s中的任意两个数据点xi和xj,他们的距离可以通过公式(1)计算所得:

d(xi,xj)=d(xi,xj)r+d(xi,xj)c(1);

式(1)中,d(xi,xj)r表示待聚类混合属性数据集中数值属性部分的距离,d(xi,xj)c表示待聚类混合属性数据集中分类属性部分的距离;

而d(xi,xj)r可以采用公式(2)表示,公式(2)如下;

式(2)中,表示数据点xi和xj的数值部分属性归一化后的欧氏距离。由于欧氏距离是非负的,因此可保证数值属性部分的距离值d(xi,xj)r在[0,1]区间。

d(xi,xj)c可以采用公式(3)表示,公式(3)如下;

式(3)采用加熵权的匹配方法,其中,为数据点xi和xj在第t维分类属性上的匹配距离;为第t维分类属性上的熵权,其中,p(ats)为第t维分类属性上的分类值的总个数为mt时,第s(s=1,2,...,mt)个值出现的概率。

步骤s102、根据所述计算出的待聚类混合属性数据集中每两个数据点之间的距离以及所述计算出的截断距离,得到所述待聚类混合属性数据集中每一个数据点的局部密度,并进一步根据所述得到的待聚类混合属性数据集中每一个数据点的局部密度,计算出所述待聚类混合属性数据集中每一个数据点的相对距离;

具体过程为,根据待聚类混合属性数据集s中每两个数据点之间的距离d(xi,xj)以及截断距离dc,通过公式(4)计算出待聚类混合属性数据集s中每一个数据点的局部密度ρi:

式(4)中,ρi为第i个数据点的局部密度;

再通过公式(5),计算出待聚类混合属性数据集s中每一个数据点的相对距离δi:

式(4)中,δi为第i个数据点的相对距离,当局部密度不是最大密度时,数据点xi对应的距离是该点到所有密度比它大的点的距离的最小值,否则,取它到所有其他点的最大距离。

综上,根据每一个数据点的局部密度ρi和距离δi构建的决策图,用户可以显式地发现和选择聚簇的数目和中心点。

步骤s103、定义由所述待聚类混合属性数据集中每一个数据点的局部密度及其对应的相对距离形成的γ参数曲线,并确定所述待聚类混合属性数据集中每一个数据点的γ参数值;

具体过程为,为了实现聚类中心的自动确定,首先定义γ参数值γi=ρi×δi来制定γ参数曲线,并将γ参数曲线的γ参数值γi倒序排列,这时γi比较大的点一定是局部密度ρi或者相对距离δi比较大的点。其中,γi为第i个数据点的γ参数值。

步骤s104、根据所述待聚类混合属性数据集中每一个数据点的序号、γ参数值及相对距离,构建拐点索引矩阵,并采用预设的双拐点算法对所述构建的拐点索引矩阵求解,得到所述待聚类混合属性数据集的聚类中心点;

具体过程为,通过计算γi和δi两个拐点可以确定出聚类中心点,即在双拐点前的那些中心点可以满足局部密度ρi和距离δi都比较大。因此,可以根据函数的拐点定义和求解方法,通过计算一个函数f(x)的二阶导数f”(x)。求解拐点x0,使得f”(x0)=0,且在x0的两边数值正负值不同,具体如下:

确定待聚类混合属性数据集s中每一个数据点的序号、γ参数值及相对距离,并进一步分别形成序号集合、γ参数值集合及相对距离集合;其中,序号集合i=[1,2,…,n],γ参数值集合γ=[γ1,γ2,…,γn],相对距离集合δ=[δ1,δ2,…,δn];n为待聚类混合属性数据集s中数据点总数,且为正整数;

根据序号集合、γ参数值集合及相对距离集合,构建拐点索引矩阵ct=[i;γ;δ];其中,拐点索引矩阵ct=[i;γ;δ]是由数据点的序号、γ参数值及相对距离分别为作为行向量,数据点总数n为列向量所形成的3xn矩阵;

将拐点索引矩阵ct=[i;γ;δ]按照先对γ行从大到小排序再对δ行从大到小排序的方式进行调整,得到调整后的拐点索引矩阵,并对调整后的拐点索引矩阵求解γ行的二阶导数,得到的值作为拐点,且进一步在调整后的拐点索引矩阵中保留列数小于或等于拐点的所有向量,形成候选中心集;

判断候选中心集中向量列数是否小于或等于2;

如果是,则将候选中心集中列数对应序号的数据点作为聚类中心点;

如果否,则对候选中心集继续求解δ行的二阶导数,得到的值作为二次拐点,并将所述候选中心集中小于或等于所述二次拐点之前列数对应序号的数据点作为聚类中心点。

作为一个例子,以银行信用凭证为例,形成10列调整后的拐点索引矩阵,如下表1所示:

表1

对调整后的拐点索引矩阵求解γ行的二阶导数,如下表2所示:

表2

由γ”可以看出,拐点出现在第8列,由此可得出前8列作为候选中心集hsct,由于拐点出现在第8列大于2,则可以再对候选中心集hsct的求解δ行的二阶导数,如下表3所示:

表3

从上表3中可以看到,δ拐点出现在第2列,可得出该数据集的聚类中心是2个,即第407和127个数据点作为聚类中心点。

步骤s105、根据所述得到的待聚类混合属性数据集的聚类中心点,实现所述待聚类混合属性数据集聚类结果的表示和输出;其中,所述待聚类混合属性数据集中除所述得到的聚类中心点之外的数据点将被分配到近邻局部密度最高的聚簇中,完成聚类结果的表示和输出。

具体过程为,根据聚类中心点,实现所述待聚类混合属性数据集聚类结果的表示和输出,当然将非聚类中心点依次分配与其最近邻高密度点相同的类标,由此完成一趟聚类并输出聚类结果,即待聚类混合属性数据集s中除聚类中心点之外的数据点将被分配到近邻局部密度最高的聚簇中,完成聚类结果的表示和输出。

本发明实施例中,数据点数为n的数据集,算法空间复杂度主要来自距离矩阵的存储,需要3*n*(n-1)/2的存储空间,即距离矩阵共存储3列,1列和第2列是数据点序号,第3列为两个数据点的距离。

步骤s103中需要3个长度为n的数组存储局部密度ρ、距离δ和其乘积γ,因此空间复杂度为o(n2),而且局部密度计算和相对距离计算以及二者的乘积计算,时间复杂度均为o(n2);步骤s104中双拐点计算中排序时间复杂度取决于采用的排序算法,最小为o(nlog(n)),最大为o(n2),因此时间复杂度不超过o(n2);步骤s105中聚类结果的表示和输出的数据点分配时间复杂度为o(n)。因此,算法总的复杂度为o(n2),比传统的k-prototypes算法聚类效果好、算法效率高且能够自动发现聚类数目。

实施本发明实施例,具有如下有益效果:

本发明实施例对混合属性数据集提供统一的混合属性数据点的距离度量公式,并以此构建混合属性数据的数据点间的拐点索引矩阵,进而提出了基于双拐点的自动聚类中心确定方法,从而比传统的k-prototypes算法聚类效果好、算法效率高且能够自动发现聚类数目,对离群点的影响不敏感

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如rom/ram、磁盘、光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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