聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内对象相互之间是相似的(相关的),而不同组之间的对象是不同的(不相关的)。组间的相似(同性质)越大,组建的差异越大,聚类就越好。
不同的簇类型如下(也是聚类算法的依据):
![](http://dl2.iteye.com/upload/attachment/0098/8038/87e6c1a3-2db9-3f2c-8c1a-cea2444acc11.jpg)
主要注意根据距离和密度的聚类。
常见的聚类算法包括K均值、凝聚的层次聚类、DBSCAN。
K均值先假设集合有K个簇,开始时随机放置K个质心,将待分类数值归于离它最近的质心,然后不断移动质心,最后使得误差最小。K均值计算过程如下:
![](http://dl2.iteye.com/upload/attachment/0098/8049/2c0f5be4-90b0-3940-aa6f-cd41306d58ea.jpg)
由于K均值的质心开始时是随机放置的,所以结果有一定的随机性,可能不是全局最优,所以要多次尝试然后选择最优解。还有其他方法来减少随机性(例如二分K均值)。
K均值的有点事计算量小,理解简单,缺点是对于非球星、不同密度的簇聚类效果不好。
凝聚层次聚类
凝聚层次聚类可以分为凝聚和分裂两种过程,他们互为逆过程。
凝聚聚类开始将每个个体当做一个簇,每次操作将距离最近的两个簇合并为一个簇,只到集合只剩一个簇。
![](http://dl2.iteye.com/upload/attachment/0098/8051/f87b663b-b487-385c-a690-60f9949dad52.jpg)
DBCAN
DBSCAN是一个根据密度的聚类算法。
DBSCAN首先确定有限半径,然后划分核心点、边缘点和噪音点:
![](http://dl2.iteye.com/upload/attachment/0098/8053/684a0908-07c5-314b-a7ea-9deadddc6e3a.jpg)
DBSCAN的算法可以描述为:
![](http://dl2.iteye.com/upload/attachment/0098/8055/3baef97d-410d-3700-9cd5-759e15812381.jpg)
DBSCAN是有效的根据密度的聚类算法,能够有效划分任意形状和大小的簇。缺点是有效半径需要估算,对于簇密度变化太大以及高维数据,簇密度较困难。