- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于K―means最佳聚类数确定方法探究
基于K―means最佳聚类数确定方法探究 摘要:确定数据集的最佳聚类数是聚类研究中的一个重要难题。为了更有效地确定数据集的最佳聚类数,该文提出了通过改进K-means算法并结合一个不依赖于具体算法的有效性指标[Q(c)]对数据集的最佳聚类数进行确定的方法。理论分析和实验结果证明了该方法具有良好的性能和有效性。
关键词:K-means;最佳聚类数;聚类有效性指标;聚类
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)01-0110-05
传统的获取最佳聚类数的算法一般是采用的是基于一种迭代的trial-and-error过程[1],来获取数据集的最佳聚类数目。由于k-means算法适用于大型数据集的处理,且其效率比较高,特别是当数据集中的数据对象分布呈现类内团聚状时,所得到的聚类结果往往是比较好的。在实际中,由于用户缺乏丰富聚类分析的经验,所以能够准确地确定数据集的聚类数k的值是一个非常困难的问题[2],这样就大大限制的该算法应用,而且确定的k值也往往不能保证是合适的,就需要结合一些有效性指标来确定其最佳聚类数,目前已经提出了一些检验聚类有效性的指标,主要代表有[Vxie]指标[3]、[Vwsj]指标[1]等。由于这些指标都是基于其他算法提出的,在k-means算法运用往往得不到比较理想的结果。鉴于此种情况,该文在传统的k-means算法基础上,给定一个聚类数目k的范围,然后再引入一个不依赖于具体算法的有效性指标,把两者结合在一起来进行最佳聚类数的判定。实验结果和理论分析都表明,该文提出的算法具有良好的性能与可行性。
1 K-means算法
1.1 K-means算法介绍
传统的K-means算法需要用户必须事先给定聚类个数k,并且它能自动地选取k个初始聚类中心,并按最小距离原则将数据对象指派到离其最近的类,然后不停地获取新的聚类质心并不断调整各个数据对象所属的类别,最终达到的结果是各个数据对象到其所属聚类中心的距离平方之和是最小的。K-means算法主要步骤[4]如下:
输入:数据集和该数据集的聚类个数k;
输出:使得某个准则函数最小时的k个类情况。
1)选择k个数据对象作为初始质心;
2)Repeat
3)计算数据对象与各个类的质心的距离,将对象划分到距离其最近的类,形成k个类;
4)重新计算每个类的质心点;
5)until 质心点不再发生变化。
1.2 K-means算法优缺点
K-means算法对大型数据集的处理是具有较高的效率[5]和伸缩性,该算法的时间复杂度为[O(nkt)],其中n为数据集数据成员的个数,k是聚类个数,t是迭代次数。算法主要缺点是必须要求先给定数据集的聚类个数k,不准确的k就会导致聚类的效果[5]。而且对于结构比较复杂的数据集,聚类结果容易受到聚类质心的影响,最终导致聚类效果不理想。
2 聚类有效性指标
为了能够更好的反映聚类效果,一般是采用类内紧凑度和类间分离度进行衡量,该文在此引用一个不依赖于某些具体算法的有效性指标[Q(C)]来评估聚类的效果。该有效性指标主要是通过衡量数据集中的类内数据对象紧凑度和类间分离度 [6]。下面就大概介绍一下所采用的有效性指标。
2.1 聚类有效性指标
假设给定数据集DB,其中的一个聚类划分为[Ck={C1,C2,...,Ck}],在该指标中用[Scat(Ck)]衡量[Ck]的类内紧凑度,[Sep(Ck)]衡量对应[Ck]的类间分离度。[Scat(Ck)]的原理是一个类中的任意两个数据对象之间的距离的平方和,其具体定义如下:
[Scat(Ck)=i=1kX,Y∈CiX-Y2] (1)
其中,X,Y是类[Ci]中的任意两个数据对象,k是此时数据集DB被划分的聚类个数。而[Sep(Ck)]则是将数据类看作是一个比较大的“数据对象”, “数据对象”之间的“距离”是通过类与类之间的点对的平均距离来获取。这样,它们在度量上就保持了一致性[6]。
[Sep(Ck)=i=1kj=1,j≠ik1Ci.CjX∈Ci,Y∈CjX-Y2] (2)
其中,X,Y分别属于类[Ci],[Cj]中的数据对象,k为此时数据集DB被划分的聚类个数。代入欧式距离公式再做简单的变换,[Sep(Ck)]和[Scat(Ck)]可分别表示为:
[Scat(Ck)=2i=1kCiSSi-LSi] (3)
[Sep(Ck)=2k-1i=1kSSiCi-i=1kLSiCi2+i=1kLSi2Ci2] (4)
其中,[SSi=j=1Cix2j],[LSi=j=1Cixj],k表示数据集DB被划分的聚类个数,[xj]表示类[Ci]
文档评论(0)