一种基于最大隶属度的模糊层次聚类方法与流程

文档序号:15776485发布日期:2018-10-30 15:25阅读:1037来源:国知局
一种基于最大隶属度的模糊层次聚类方法与流程

本发明涉及一种基于最大隶属度的模糊层次聚类方法,属于数据挖掘技术领域。



背景技术:

数据挖掘是从大量数据中提取可信的、新颖的、有效的并能被人们理解的模式的处理过程。聚类分析是数据挖掘中的一个重要研究领域,聚类算法是数据挖掘领域中用于分析数据的一种重要算法,该算法用于将由多个数据组成的集合按照数据的不同类别进行分类。聚类是指根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程。聚类的目的是使得属于同类别的对象之间的差别尽可能的小,而不同类别上的对象的差别尽可能的大。因此,聚类的意义就在于将观察到的内容组织成类分层结构,把类似的事物组织在一起。通过聚类,人们能够识别密集的和稀疏的区域,因而发现全局的分布模式,以及数据属性之间的关系。

聚类技术主要是以统计方法、机器学习、神经网络等方法为基础。比较有代表性的聚类技术是基于几何距离的聚类方法,如欧氏距离、曼哈坦距离、明考斯基距离等。聚类分析广泛应用于商业、生物、地理、网络服务等多种领域。其中,k均值聚类、模糊聚类和层次聚类是较常用的三种聚类算法。

基于k-means的聚类算法需要事先确定聚类类别数k,k意味着最终聚类的结果类别数。首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,知道质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,k-means算法的收敛速度比较慢。

fcm算法首先是由e.ruspini提出来的,后来j.c.dunn与j.c.bezdek将e.ruspini算法从硬聚类算法推广成模糊聚类算法。fcm算法是基于对目标函数的优化基础上的一种数据聚类方法。聚类结果是每一个数据点对聚类中心的隶属程度,该隶属程度用一个数值来表示。fcm算法是一种无监督的模糊聚类方法,在算法实现过程中不需要人为的干预。这种算法的不足之处:首先,算法中需要设定一些参数,若参数的初始化选取的不合适,可能影响聚类结果的正确性;其次,当数据样本集合较大并且特征数目较多时,算法的实时性不太好。

层次聚类的算法是通过计算两个类之间的距离,即类间距离,从而将类间距离小于一定值的两个类合并为一个新类。由于每个类可能包含不止一个数据对象,因此,计算类间距离时,需将一个类中的所有数据对象与另一个类的所有数据对象进行两两计算,对所有的计算结果进行统计,得到平均值或最小值,将其作为类间距离,从而根据类间距离实现后续的聚类。

在实现本申请的过程中,发明人发现相关聚类技术至少存在以下问题:

1不管是k均值聚类方法,还是模糊聚类方法,在进行聚类之前都需要用户事先确定要得到的聚类的数目。然而在现实数据中,聚类的数目是未知的,最好能存在一种根据相应准则自动确定聚类数目的方法。

2部分聚类方法需要随机选择初始聚类点,每次聚类会根据初始点的不同而有不同的聚类效果,导致聚类结果不稳定,随机性较大。

3由于现实数据通常是很复杂的,噪声很大。这使得在聚类过程中,每个类中可能包含不属于该类的数据对象,即噪声,使用该数据对象进行类间距离的计算并形成新类之后,可能会引入更多的噪声,导致聚类结果较差,不利于后续的数据分析。因此如何有效的消除或减弱噪声的影响,提高处理现实数据的能力是非常重要的。

4传统的聚类方法一般都是适合于某种情况的聚类,没有一种方法能够满足各种情况下的聚类,因此需要将不同的聚类思想进行融合以形成新的聚类算法,从而综合利用不同聚类算法的优点。



技术实现要素:

本发明的目的是改进现有聚类方法存在的类别聚合程度过深以及鲁棒性不高的技术现状,提出了一种基于最大隶属度的模糊层次聚类算法,本方法将隶属度作为聚类的基准方式,采用相邻分类的形式,并利用提前设定隶属度阈值λ的方式,防止类别聚合程度过深。

本方法的核心思想是:首先将数据样本各自归为一类;然后利用模糊隶属度进行类别关联计算,依据最大隶属度聚类的基本准则,构造二叉树的形式建立层次聚类结构;最后通过聚类二叉树子图集合判别最终聚类结果。

一种基于最大隶属度的模糊层次聚类算法,包括如下步骤:

步骤1,初始化样本聚类中心及相关参数;

步骤1,又包括如下子步骤:

步骤1.1将样本数据集x={x1,x2,…,xn}中的每个元素都记为初始聚类的中心,则初始聚类中心集记为c={c1,c2,…,ck},一共有k个;

此处,k=n;

步骤1.2初始化二叉树图集v={v1,v2,…,vk},二叉树图集v中有k个二叉树子图,每一个二叉树子图均为一个样本数据节点;

其中,k=n;

步骤1.3初始化最小聚类类别数α、隶属度阈值λ和隶属度因子m;

步骤1.4初始化循环次数cycle=1;

步骤2,计算步骤1.2中数据节点关于聚类中心的隶属度,具体为:

利用模糊矩阵u=[uij]表示聚类中心c的模糊划分,即用uij表示第j(j=1,2,…,k)个聚类中心属于第i(i=1,2,…,k)类的隶属度uij,并通过如下公式(1)计算隶属度:

其中,dij=d(cj,ci)=||ci-cj||,ci和cj分别表示第i类和第j类的聚类中心,m为隶属度因子;表示对从1到k求和;

步骤3,判断u中隶属度uij的最大值,并判断此最大值是否大于隶属度阈值,若大于执行步骤4,否则跳至步骤8,具体为:

3.a如果uijmax>λ,则执行步骤4;

3.b若uijmax≤λ,证明聚类达到预设条件,则跳至步骤8;

其中,u中隶属度uij最大的一对聚类中心ci和cj,记为uijmax;

步骤4,构造新的聚类二叉树子图,即将聚类中心ci和cj合并成新聚类中心cnew,在聚类二叉树图集v中找到ci或cj所在的二叉树子图,以cnew为新的根节点、ci和cj为子节点合并不同的二叉树子图;

步骤5,以新聚类中心centernew为根节点,在聚类二叉树图集v中查找所有的叶子节点,以此为一类,设该类有p个数据节点,并利用式计算新类的中心centernew;

步骤6,在聚类中心集c中增加新的聚类中心centernew,并将聚类中心集c中的ci和cj删掉,跳至步骤7;

步骤7,判断二叉树图集v的子图个数,若聚类二叉树图集v中的二叉树子图数小于或等于聚类最小类别数α,则跳至步骤8,否则跳至步骤2,具体为:

7.a如果聚类二叉树图集v中的子图数小于或等于聚类最小类别数α,说明所有的样本元素已经聚类完成,跳至步骤8;

7.b如果聚类二叉树图集v中的二叉树子图数大于聚类最小类别数α,说明所有的样本元素还没完成聚类,令cycle=cycle+1,跳至步骤2,继续进行聚类;

步骤8:聚类完成,统计聚类结果;

根据最终的聚类二叉树图集v,统计子图个数,即可得到最终的聚类个数,并将所有子图的叶子节点进行分类,即得到最终的聚类结果。

有益效果

本发明一种基于最大隶属度的模糊层次聚类算法,对比已有技术,能够具有以下优势:

1.整个聚类过程无需设置聚类初始点和聚类类别数,只需根据隶属度阈值即可自动调节聚类数目;

2.引入了模糊的处理方法,使聚类方法具有一定的减小数据噪声的能力,具有较好的鲁棒性;

3.依靠隶属度阈值划分聚类程度,这使得聚类的条件更加直观;

4.与随机选择初始点的算法相比,本方法由于选择了基于最大隶属度的方法,故在相同的隶属度阈值情况下,聚类结果保持一致,没有随机性。

附图说明

图1为本发明一种基于最大隶属度的模糊层次聚类算法及实施例的流程图;

图2为本发明一种基于最大隶属度的模糊层次聚类算法及实施例中聚类的初始样本分布图;

图3为本发明实施例中聚类的运行后结果图。

具体实施方式

下面根据附图及实施例对本发明进行详细说明,但本发明的具体实施形式并不局限于此。

实施例1

本实施例阐述了将本发明“一种基于最大隶属度的模糊层次聚类方法”应用于基本数据聚类方面的一个具体实现流程,如图1所示。

具体包括如下步骤:

步骤a,初始化相关参数,具体到本实施例,相关参数设置如下:

a.1将样本数据集中的80个样本都记为初始聚类中心,设该中心的集合为centerset,令datatotalnum=80,其分布见图2。

a.2令最小类别数α=4,隶属度阈值λ=0.25且隶属度因子m=2,并初始化循环次数cycle=1。

a.3初始化新中心编号,令newcenternumber=datatotalnum+cycle。

a.4初始化二叉树图集,即构建一个空的聚类列表clusterlist,该列表的每项元素构成为[节点a编号节点b编号节点a与节点b的最大隶属度合成后的节点编号],这样构成的列表即具有表达二叉树的能力。

步骤b,利用计算第j(j=1,2,…,k)个聚类中心属于第i(i=1,2,…,k)类的隶属度uij,得到模糊矩阵u=[uij],为了简便计算,只计算矩阵的上三角形式即可。

步骤c,选择u中隶属度uij最大的一对聚类中心ci和cj,并记为uijmax。如果uijmax>λ,则执行步骤d;如果uijmax≤λ,则执行步骤h。

步骤d,构造新的根节点cnew、并以ci和cj为子节点合成一个新的聚类二叉树,以[节点a编号节点b编号节点a与节点b的最大隶属度合成后的节点编号]的规则在聚类列表clusterlist中添加新的元素,然后执行步骤e。

步骤e,以合成后的新节点cnew为初始节点,通过递归的二叉树查找算法,依次在聚类列表clusterlist中查找到该类的所有初始样本节点的相关成员,并返回该类成员编号,得到该类所有初始样本节点的集合newclusterset;

同时,利用式计算新的聚类中心cnew的具体属性值newclustercenter,然后执行步骤f;

步骤f,在totalcenterlist中添加newcenternumber和newclustercenter,建立中心编号和中心属性值的对应关系;

同时,删除centerset中对应于uijmax的两个中心,并添加新的中心cnew;

步骤g,如果index_newcenter≥datatotalnum-α或uijmax≤λ,则说明所有的样本已经聚类完成,故执行步骤h;否则,说明尚未完成聚类,则令cycle=cycle+1,且newcenternumber=datatotalnum+cycle,跳转到步骤b,继续进行聚类。

步骤h,通过centerlist中的中心在聚类列表clusterlist查找各个类及其类成员,统计最终的聚类个数及其成员个数,可得最终的聚类结果。

本实施例聚类结束后的最终统计结果如图3。

实施例2

将实施例1中步骤a.4和步骤d的构造二叉树的形式更改为链表形式或其他形式,实施例1同样成立;将实施例1中步骤e的二叉树查找算法更改为其他二叉树查找算法,实施例1同样成立。

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

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