
聚类是将一个数据集按照一定的标准(如距离准则,即数据点之间的距离)划分到不同的类或簇中,使同一簇中的数据对象的相似性尽可能大,不在同一簇中的数据对象的差异尽可能大。我们可以具体理解为,聚类后,同一类数据会尽可能的聚集,不同类数据会尽可能的分离。
聚类技术正在蓬勃发展,对其做出贡献的研究领域包括数据挖掘、统计学、机器学习、空间数据库技术、生物学和市场营销。各种聚类方法不断被提出和改进,不同的方法适用于不同类型的数据,因此各种聚类方法和聚类效果的比较成为一个值得研究的课题。
聚类分析是一种理想的多元统计技术,主要包括层次聚类法和迭代聚类法。聚类分析,又称群分析、点群分析,是一种研究分类的多元统计方法。
比如,我们可以根据每家银行的储蓄、人力资源、营业面积、特色功能、分支机构级别、功能区域等将分支机构划分为几个档次,然后比较各银行间不同档次的分支机构数量。
聚类算法的分类目前,有大量的聚类算法。对于特定的应用,聚类算法的选择取决于数据的类型和聚类的目的。如果将聚类分析作为描述或探索的工具,可以对同一数据尝试多种算法,以发现数据揭示的可能结果。
主要的聚类算法可以分为以下几类:划分法、层次法、基于密度的方法、基于网格的方法和基于模型的方法。
目前对聚类问题的研究并不局限于上述的硬聚类,即每个数据只能归入一类,而模糊聚类[10]也是聚类分析中被广泛研究的一个分支。模糊聚类通过隶属函数来确定每个数据属于每个聚类的程度,而不是把一个数据对象硬性地归入某个聚类。目前已经提出了很多模糊聚类算法,比如著名的FCM算法,后面会提到。
常用的聚类方法1。K-means聚类分析适用于样本聚类;
2.层次聚类适合对变量进行聚类;
3.两步聚类适用于分类变量和连续变量的聚类;
4.基于密度的聚类算法:
5.基于网络的聚类;
6.机器学习中的聚类算法:
前三种可以通过spss的简单操作实现;
四种常用聚类算法的研究k-means聚类算法k-means是划分方法中经典的聚类算法之一。由于其高效性,该算法被广泛应用于大规模数据的聚类。目前很多算法都是围绕这个算法进行扩展和改进的。
k-means算法的目标是以K为参数将N个对象分成K个簇,使得簇内相似度高,簇间相似度低。
k-means算法的过程是:首先随机选取K个对象,每个对象初始代表一个聚类的平均值或中心;对于每个剩余的对象,根据其到每个簇中心的距离将其分配到最近的簇中;然后重新计算每个聚类的平均值。重复这个过程,直到标准函数收敛。通常采用平方误差准则,定义如下:
其中e是数据库中所有对象的误差平方和,p是空间中的一个点,mi是聚类Ci [9]的平均值。目标函数使生成的聚类尽可能紧凑和独立,使用的距离度量是欧氏距离,但也可以使用其他距离度量。k-means聚类算法的算法流程如下:
输入:包含n个对象的数据库和集群的数量k;
输出:K个聚类以最小化平方误差标准。
(1)随机选择k个对象作为初始聚类中心;
(2)复读;
(3)根据聚类中对象的平均值,将每个对象(重新)分配到最相似的聚类中;
(4)更新聚类的平均值,即计算每个聚类中对象的平均值;
(5)直到不再变化。
总结:优点:简单直接(体现在逻辑思维和实现难度上),容易理解,在低维数据集上效果好(简单的算法不一定能得到优秀的结果)。
缺点:对于高维数据(比如上百维,现实中不止这些),其计算速度很慢,主要表现在计算距离上(指欧氏距离,当然可以并行化,这是算法实现层面的问题)。另一个缺点是,它需要我们设置期望的聚类数k,如果我们对数据没有很好的理解,设置k的值就变成了一项估算工作。
根据层次分解的顺序是自下而上还是自上而下,层次聚类算法分为凝聚层次聚类算法和分裂层次聚类算法。
内聚层次聚类的策略是先把每个对象当作一个簇,然后把这些原子簇合并成越来越大的簇,直到所有对象都在一个簇中或者满足某个终止条件。绝大多数的层次聚类都属于内聚性层次聚类,它们只是在聚类之间相似度的定义上有所不同。四种广泛使用的群集间距离测量方法如下:
这里给出了最小距离凝聚层次聚类的算法流程:
(1)将每个对象视为一个类,并计算成对对象之间的最小距离;
(2)将距离最小的两个类合并成一个新类;
(3)重新计算新类别与所有类别之间的距离;
(4)重复(2)和(3),直到所有类最终合并成一个类。
总结:优点:
1.距离和规则的相似性容易定义,限制少;
2、不需要预先设置簇数;
3、可以发现类的层次关系(在某些特定领域如生物学中有很大作用);
缺点:
1、计算复杂度太高(考虑并行化);
2、奇异值也能产生很大的影响;
3、算法很可能聚类成链(一层包含一层);
4.算法不需要预先确定聚类的个数,但是我们选择哪一级别的聚类作为我们需要的聚类效果,需要根据实际的客观情况和经验来完成。毕竟就内聚聚类而言,从作为个体的底层的每个个体到顶层的所有个体,可能会有很多种聚类结果。
当然,解决这个问题的方法有很多,其中之一是当簇间距离大于某个阈值k时停止聚集。
SOM聚类算法SOM神经网络[11]是由芬兰神经网络专家Kohonen教授提出的。该算法假设输入对象中存在某种拓扑结构或序列,可以实现从输入空间(n维)到输出平面(2维)的降维映射。它的映射具有保持拓扑特征的性质,并且与实际的大脑处理有很强的理论联系。
SOM网络包括输入层和输出层。输入层对应于一个高维输入向量,输出层由一系列在二维网格上组织的有序节点组成。输入节点和输出节点通过权重向量连接。在学习过程中,找到距离最短的输出层单元,即获胜单元,并进行更新。同时,更新相邻区域的权值以保持输入向量的拓扑特征。
算法流程如下:(1)网络初始化,为输出层各节点的权重分配初始值;
(2)从输入样本中随机选择输入向量,以找到与输入向量距离最小的权重向量;
(3)定义获胜单元,调整获胜单元附近的权重,使其接近输入向量;
(4)提供新样本并进行培训;
(5)缩小邻域半径,降低学习率,重复直到小于允许值,输出聚类结果。
FCM聚类算法1965年,美国加州大学伯克利分校的Zade教授首先提出了‘集合’的概念。经过十几年的发展,模糊集理论已经逐渐应用到各种实际应用中。为了克服非此即彼分类的缺点,出现了基于模糊集理论的聚类分析。模糊聚类分析是用模糊数学进行的[12]。
FCM算法是通过隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是对传统硬聚类算法的改进。
算法流程:(1)标准化数据矩阵;
(2)建立模糊相似矩阵并初始化隶属矩阵;
(3)算法开始迭代,直到目标函数收敛到最小值;
(4)根据迭代结果,由最终的隶属度矩阵确定数据所属的类别,并显示最终的聚类结果。
总结:优点:与之前的“硬聚类”相比,FCM方法会计算每个样本对所有类的隶属度,这给了我们一种参考该样本分类结果可靠性的计算方法。我们可以认为,如果一个样本在所有类的隶属度中占有绝对优势,那么这个样本归入这个类就是一个非常安全的做法。另一方面,如果样本在所有类中的隶属度比较平均,我们就需要其他辅助手段来进行分类。
缺点:KNN几乎有它所有的缺点。
在对四种聚类算法的实验数据的实验中,选择了UCI数据库中专门用于测试分类和聚类算法的IRIS [13]数据集。Iris数据集包含150个样本数据,这些数据取自三种不同种类的黄鹂、刚毛黄鹂、杂色黄鹂和海滨黄鹂的花样本,每个数据包含四个属性,即萼片长度、萼片宽度和花瓣长度,单位为厘米。可以对数据集执行不同的聚类算法,得到不同的聚类结果。
实验结果表明,基于上述算法原理和算法流程,用matlab编程得到了如表1所示的聚类结果。
如表1所示,四种聚类算法在三个方面进行了比较:
(1)出错样本数:出错样本总数,即各类别出错样本数之和;
(2)运行时间:即整个聚类过程所花费的时间,单位为s;
(3)平均准确率:假设原始数据集有k个类,I类用ci表示,ni是ci中的样本数,mi是聚类的正确数,mi/ni是I类中的准确率,则平均准确率为:
在四种聚类算法中,k-means和FCM在运行时间和准确性方面都优于其他算法。但是,每种算法仍然存在固定的缺点:k-means聚类算法的初始点选择不稳定,具有随机性,导致聚类结果不稳定。虽然本实验通过多次实验得出平均值,但具体的初始点选取方法有待进一步研究;虽然层次聚类不需要确定分类数,但是一旦进行拆分或合并,就无法纠正,聚类质量受到限制。FCM对初始聚类中心敏感,需要人工确定聚类个数,容易陷入局部最优解。SOM与实际的大脑处理有很强的理论联系。但处理时间较长,需要进一步研究使其适应大型数据库。









