聚类
聚类算法是一种无监督的分类方法。有层次聚类和K均值聚类两种。
层次聚类
层次聚类是一种以分层的方式建立簇的方法。这种方法根据算法的过程,分成两类。
分裂聚类:从一个包含所有实例的簇开始。每一次迭代时,它从现有的簇中选择一个簇分成两个(或者可能更多)簇。不断进行这个过程,直到总共产生K个簇。算法的结果很大程度上依赖于如何选择和分割簇。它是自顶向下分裂成一棵树的过程。
聚合聚类:是将所有的样本点自底向上合并组成一棵树,聚合聚类算法开始时把每个样本当成单独的簇,算法每次将两个最相似的簇合并成一个新的簇。因此,每次迭代都使总数下降,当剩余K个簇时,算法停止。
两种算法的代表:
传统的聚合层次聚类算法有AGENES,初始时,AGENES将每个样本点自为一簇,然后这些簇根据某种准则逐渐合并,例如,如果簇C1中的一个样本点和簇C2中的一个样本点之间的距离是所有不同簇的样本点间欧几里得距离最近的,则认为簇C1和簇C2是相似可合并的。
传统的分裂层次聚类算法有DIANA,初始时DIANA将所有样本点归为同一类簇,然后根据某种准则进行逐渐分裂,例如簇C中两个样本点A和B之间的距离是簇C中所有样本点间距离最远的一对,那么样本点A和B将分裂成两个簇C1和C2,并且先前簇C中其他样本点根据与A和B之间的距离,分别纳入到簇C1和C2中,例如,簇C中样本点O与样本点A的欧几里得距离为2,与样本点B的欧几里得距离为4,因为Distance(A,O)<Distance(B,O)那么O将纳入到簇C1中。
如图所示:
K均值聚类
K-均值聚类(K-means clustering)是Mac Queen提出的一种非监督实时聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K。该算法原理简单并便于处理大量数据,在基因表达数据分析中得到广泛应用,如Tavazoie等应用K-means聚类酵母细胞周期表达数据。在K-means算法运行前必须先指定聚类数目K和迭代次数或收敛条件,并指定K个初始聚类中心,根据一定的相似性度量准则,将每一条基因分配到最近或“相似”的聚类中心,形成类,然后以每一类的平均矢量作为这一类的聚类中心,重新分配,反复迭代直到类收敛或达到最大的迭代次数。
K-means聚类算法对初始聚类中心依赖性比较大,随机选取初始聚类中心的缺点是如果使得初始聚类中心得到的分类严重偏离全局最优分类,这样算法可能会陷入局部最优值。而且当聚类数比较大的时候,这种缺点更为明显,往往要经过多次聚类才有可能达到较满意的结果。Yeung等提出了采用均连接层次聚类结果初始化K-means聚类中心。此方法有效地排除了随机初始化过程中引入的随机性因素,使得算法成为确定性的,可以得到稳定的聚类结果;而且,这种初始化方式也能够利用数据中的类结构信息,使得聚类质量相对于随机初始化时的平均质量有显著的提高。
K-means聚类算法的一般步骤:
- 初始化。输入基因表达矩阵作为对象集X,输入指定聚类类数N,并在X中随机选取N个对象作为初始聚类中心。设定迭代中止条件,比如最大循环次数或者聚类中心收敛误差容限。
- 进行迭代。根据相似度准则将数据对象分配到最接近的聚类中心,从而形成一类。初始化隶属度矩阵。
- 更新聚类中心。然后以每一类的平均向量作为新的聚类中心,重新分配数据对象。
- 反复执行第二步和第三步直至满足中止条件。



浙公网安备 33010602011771号