Kmeans聚类与层次聚类

聚类

聚类就是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小.

数据聚类算法可以分为结构性或者分散性,许多聚类算法在执行之前,需要指定从输入数据集中产生的分类个数。

1.分散式聚类算法,是一次性确定要产生的类别,这种算法也已应用于从下至上聚类算法。

2.结构性算法利用以前成功使用过的聚类器进行分类,而分散型算法则是一次确定所有分类。

结构性算法可以从上至下或者从下至上双向进行计算。从下至上算法从每个对象作为单独分类开始,不断融合其中相近的对象。而从上至下算法则是把所有对象作为一个整体分类,然后逐渐分小。

3.基于密度的聚类算法,是为了挖掘有任意形状特性的类别而发明的。此算法把一个类别视为数据集中大于某阈值的一个区域。DBSCAN和OPTICS是两个典型的算法。

 

相似度/距离计算:

1.欧氏距离相似度

 

2.Jaccard相似度

 

3.余弦相似度

4.Pearson相似度

5.相对熵(K-L距离)

 

一.分散性聚类(kmeans)

K-均值算法表示以空间中k个点为中心进行聚类,对最靠近他们的对象归类。

例如:数据集合为三维,聚类以两点:X =(x1, x2, x3),Y =(y1, y2, y3)。中心点Z变为Z =(z1, z2, z3),其中z1 = (x1 + y1)/2,z2 = (x2 + y2)/2,z3 = (x3 + y3)/2。

 

算法流程:

1.选择聚类的个数k.

2.任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心。

3.对每个点确定其聚类中心点。

4.再计算其聚类新中心。

5.重复以上步骤直到满足收敛要求。(通常就是确定的中心点不再改变。)

K-means是初值敏感的

 

优点:

1.是解决聚类问题的一种经典算法,简单、快速

2.对处理大数据集,该算法保持可伸缩性和高效率

3.当结果簇是密集的,它的效果较好

缺点

1.在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用

2.必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同结果。

3.不适合于发现非凸形状的簇或者大小差别很大的簇

4.对躁声和孤立点数据敏感

二.结构性聚类(层次聚类)

层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。

在已经得到距离值之后,元素间可以被联系起来。通过分离和融合可以构建一个结构。传统上,表示的方法是树形数据结构层次聚类算法,要么是自底向上聚集型的,即从叶子节点开始,最终汇聚到根节点;要么是自顶向下分裂型的,即从根节点开始,递归的向下分裂。

源数据:

 

 

层次聚类:

1.凝聚层次聚类:AGNES算法(自底向上)

首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到某个终结条件被满足

2.分裂层次聚类:DIANA算法(自顶向下)

首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到达到了某个终结条件。

 

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

posted @ 2016-03-08 15:22  xmeo  阅读(19039)  评论(1编辑  收藏  举报