(1)尽量选择数据最开始的连续的点作为初始点,这样可以用最少的迭代次数完成聚类;
(2)改变K-均值算法的初始点可以影响数据集的迭代次数,对聚类结果影响不大;
(3)每次初始值的改变也会造成数据输出顺序的改变,即使是在聚类结果不变的情况下。
实验二:
本次试验是验证不同的数据输入顺序,对聚类结果的影响,实验的数据集为了更具说服力,还是用实验一中的数据,不同之处是,此次实验只是将数据集中的后75个数放到前面,也就是与前75个数调换一下顺序,本次试验只是验证数据集输入顺序的改变对聚类结果的影响,所以只选取两种初始值进行验证,与实验一进行对比,可得实验结果如下:
令前三个数据p[1]p[2]p[3]作为初始聚类中心,如图4.5所示:
图4.5 数据输入顺序改变聚类图1
把第p[4]p[5]p[6]个数据作为初始聚类中心,得到的聚类结果如图4.6所示:
23
图4.6 数据输入顺序改变聚类图2
实验分析与结论:
分析:本次实验主要是与之前的数据顺序不同时所得的聚类结果,由图4.5与图4.1,图4.6与图4.2的对比结果可得出,改变了数据的输入顺序,造成聚类结果有很大的改变,同时迭代次数也增加了,这说明K-均值算法对数据输入顺序的敏感性不仅体现在迭代次数上,而且更会改变数据的迭代次数。另外,再对比图4.5与图4.6的结果,虽然两次的聚类结果是一样的,但是迭代的次数当选取第4、5、6个数据为初始点比选取第1、2、3个数据为初始点迭代次数有所增加,聚类结果的输出顺序也有所改变,同时也验证了实验一的结论。
结论:由实验可得K-均值算法对数据集的输入顺序也是敏感的,不同的的顺序会有不同的聚类结果,这也是今后改进算法可以尝试的方向,也可以在应用该算法时,通过改变数据集的输入顺序来适当提高聚类效果。本次试验改变了输入顺序反而使迭代次数增加,很可能再次改变输入顺序会让迭代次数减少,这些都说明K-均值算法对数据输入顺序特别敏感,因此我们得到的结论是:
(1)当我们聚类数据集迭代次数很多时,我们可以适当改变一下数据的输入顺序; (2)K-均值算法的聚类结果对数据输入顺序很敏感,与之前没有改变顺序之前的聚类结果差距很明显,所以不要轻易变动数据集的输入顺序;
24
4.2 本章小结
本章主要是实现K-均值算法,并且在实现该算法的基础上,对影响K-均值聚类效果的两方面因素初始点的选择和数据输入顺序两个方面的因素对聚类结果的影响情况进行验证。通过两个实验,实验一有4个运行结果,实验二有2个运行结果,比较充分的验证了这两方面的因素对聚类结果的影响,并通过对比试验结果,得到结论:初始点选取的不同会影响数据集的迭代次数,不会特别明显的影响聚类结果,而不同的数据输入顺序,会对聚类结果造成明显的影响,同时也会改变迭代次数,这些结论为用户在将来使用传统K-均值算法的时候提供一些降低因K-均值算法的缺陷带来的损失和避免造成不必要麻烦的建议。
25
5 总结与展望
5.1 总结
本文主要介绍了数据挖掘中的聚类分析,对聚类分析中的K-均值算法进行了探索研究,主要是对影响K-均值算法的聚类效率因素的探究。
首先,介绍了本文的研究背景与本文的研究意义,简单介绍了数据挖掘的背景,着重介绍了聚类分析目前研究的国内外现状,主要是对聚类分析的应用领域与研究方向进行了探讨,并分析了目前聚类分析还有哪些亟待解决的问题。
其次,对数据挖掘中聚类分析进行了系统与完整的分析,主要是对聚类的定义及表示、聚类的相似测量函数、距离测量函数和聚类的五个常用算法的介绍,着重研究划分聚类算 法。
最后,对基于划分的聚类算法中的K-均值算法进行了探究,在详细的介绍了K-均值算法的定义、基本思想、算法流程等方面对该算法进行了分析,并对该算法的特点进行研究,分析了它的长处和不足,并根据该算法本身存在的问题,对应该算法自身不足的因素进行了探究与实验,经过实验表明,初始值的选取不当和数据输入顺序的改变都会影响聚类结果,但是初始值的改变对聚类结果的影响不明显,对于不同的初始值会有不同的迭代次数,而数据输入顺序的改变,对聚类结果造成的影响很大。因此我们在实际应用中应该注意这方面的不同因素,会对聚类结果造成哪些影响,通过本次试验,也可以为希望出现的聚类结果提供改进算法的思考方向,使该算法能够更好的为我们服务。
5.2 展望
通过实验证明的结论并未对更多的数据集进行验证,还不能验证出更多的影响K-均值聚类算法的因素对聚类结果会造成怎样的影响,这部分工作应该进一步深入下去,可以通过对更大更多类型的数据集验证其他不同因素改变所得结果进行比较,来得出各个因素影响K-均值算法的聚类结果的哪些方面,得出K-均值算法最敏感的初始条件,比较出哪些条件在实际应用中最容易得到优化,这样就会使得之前提出的改进的K-均值算法得到优化,更好的有的放矢,为将来该算法和该算法的改进后的算法更加灵活的应用到现实的生活中去。
26
目前已经存在了很多中改进的算法,以后的工作是我们应该对多种算法通过相同的数据集进行全方位的对比,通过对比得出的结果往往更加明确,从而分析出各个算法的因各个因素的不同受影响的范围与程度,并将这些结论利用大量的数据集进行验证,来作为每一个新的算法使用帮助,有助于用户对大量算法的选择起一个指导性的作用,更加方便我们使用。当然没有一种算法是完美无缺的,再优秀的算法设计也会有它不能很好聚类的数据领域,这就要我们在实际应用中,扎实我们自身的算法知识的积累,要灵活的选取不同的算法为我们服务,不要拘泥于过分复杂算法,有的时候简单的算法也有它的自身优势,比如本文介绍的K-均值算法,总之,知识不但要积累,还要灵活使用,才能发挥科学最大的力量。
27