由于可能之后需要用到相应的聚类算法,这两天先对于简单的聚类算法有一个初步的了解
分类大致可以分为7类
- 层次化聚类算法
- 划分式聚类算法
- 基于模型的聚类算法
- 基于密度的聚类算法
- 基于网络的聚类算法
- 基于约束的聚类算法
- 基于模糊的聚类方法
- 首先来看一下聚类的含义,聚类属于数据挖掘领域内的词汇,是指按照一定的标准(比如说常用的距离等)将数据集分成不同的类或是簇,使得同一簇内的数据对象其相似性尽可能的大,而不同簇内的对象其差异尽可能的大
- 我们所可能搞混的两个名词是聚类和分类。其中聚类(custering),其不关心某一类具体是什么,只是将相似的对象聚集在一起,通常来说是不需要使用数据进行训练和学习的,属于无监督学习(unsupervised learning);分类(classification),是需要事先告诉某个东西被分为某一类的例子,在理想的情况下,可以通过其得到的训练集学习来获取对于未知对象的数据分类的能力,属于监督学习(supervised learning)
聚类的一般过程:
1.数据准备:特征标准化、降维
2.特征选取:从最初的所有的特征集合中选取有用的特征并且将其存储于向量中
3.特征提取:使得特征通过某种的转换,将其进行突出
4.聚类/分组:选取适合特征的距离向量函数,对于聚类中使用的距离进行度量
5.聚类结果评估:包含外部有效性评估、内部有效性评估以及相关测试评估
下面来介绍上面所说的7类聚类算法:
1.层次化聚类算法
也可以将其称作树聚类算法,为一种层次架构,其中包含反复的分裂或聚合
基本过程:将对象看作一个簇,然后将其进行相关的合并成为一个更大的簇,直至所有的对象都在一个簇中或者满足某个终结 条件
1.1BIRCH算法
使用树的结构进行快速的聚类,CF Tree(clustering feature)聚类特征树,该树的每一结点由若干的CF组成
适用于数据量大,类别数K较多的情况,但是类别数K可以不用输入。此外,其只需要单遍扫描数据集,对于内部节点以及 叶节点的CF数量有限制,可能会使聚类的结果和真实的分布结果之间发生偏差
1.2CURE算法
其中聚类的距离定义为两簇中代表性点的之间距离的最小值
特点:不适用单个的质心或者是对象来代表一个簇,而是选择其数据空间中固定数目的具有代表性的点,也就是由多个点来 代表一个簇,其好处就是可以适应非球形的几何形状,有利于控制其中的孤立点的影响。其针对的是大规模数据库的 设计
1.3CHAMELEON算法
也被称作变色龙算法,使用动态模型,兼具互连性和近似性
过程:构成k近邻图,将k近邻图分散成为小簇,之后再将最小簇进行部分合并
其中分散为小簇的一个方法为,给定一个点,将距离其最近的k个点连接起来作为一个最小簇
进行合并时需要考虑簇间的相似度,需要考虑相对连接性RI(Ci,Cj)以及相对近似性RC(Ci,Cj)
2.划分式聚类算法
通过提前指定聚类数目或者聚类中心,通过不断的迭代来降低与目标函数之间的误差。主要针对于聚类是密集的情况并且类与 类之间的区别明显时的效果比较好
基本流程:
1.随机选择k个对象来代表簇的中心
2.对于剩余对象来计算其与个簇中心的距离,将其加入距离最近的簇
3.重新计算每个簇的平均值,将此平均值更新为聚类中心
4.重复上述的步骤直至收敛
以K-means算法为例:
共有十个点,其初始的位置坐标情况如下,设置k=2:
随机指定初始聚类中心A、B两个点,并且计算其他点到这两个点的距离,据此,将十个点分为两个聚类{A,C}、 {B,D,E,F,G,H,I,J}
完成后,重新计算其聚类中心点坐标,具体的公式见下图:
选取到了新的聚类坐标点之后,重新进行距离的计算,重新将之前的十个坐标点分为两类{A,B,C,D,E}、{F,G,H,I,J}
重新计算新的聚类中心点的坐标
计算好新的聚类中心之后再次进行距离的计算操作,{A,B,C,D,E}、{F,G,H,I,J}
再次计算两个聚类中心的坐标,和之前一个步骤的值保持一致,其进入稳定
最终的聚类结果如下,k=2时如下: