聚类分析
1.常用聚类分析算法
与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。与分类模型需要使用类标记样本构成的训练数据不同,聚类模型可以建立在五类标记的数据上,是一种非监督的学习算法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将它们划分成若干组,划分的原则是组内距离最小化而组间距离最大化。
常用聚类方法:划分法,层次分析方法,基于密度的方法,基于网格的方法,基于模型的方法。常用聚类方法表如下所示:
类别 | 包括的主要算法 |
划分(分裂)方法 | K-means算法(K-平均)、K-MEDOIDS算法(k-中心点)、CLARANS算法(基于选择的算法) |
层次分析方法 | BIRCH算法(平衡迭代规约和聚类)、CURE算法(代表点聚类)、CHAMELEON算法(动态模型) |
基于密度的方法 | DBSCAN算法(基于高密度连接区域)、DENCLUE算法(密度分布函数)、OPTICS算法(对象排序识别) |
基于网格的方法 | STING算法(统计信息网络)、CLIOUE(聚类高维空间)、WAVE-CLUSTER算法(小波变换) |
基于模型的方法 | 统计学方法、神经网络方法 |
2.K-means聚类算法
K-means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即两个对象的距离越近,其相似度就越大。
2.1)算法过程
1) 从N个样本数据中随机选取K个对象作为初始的聚类中心
2) 分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;
3) 所有对象分配完成后,重新计算K个聚类的中心
4) 与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转2),否则转5)
5) 当质心不发生变化时停止并输出聚类结果。
2.2)计算相似度
距离
对于连接属性,要先对各属性值进行零-均值规范化,再进行距离的计算。K-means聚类算法一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。
度量样本之间的相似性最常用的是欧几里得距离、曼哈顿距离和闽科夫斯基距离等。
余弦相似性度量
对于文档数据使用余弦相似性度量,先将文档数据整理成文档-词矩阵格式。
2.3)选取目标函数
使用误差平方和SSE作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果。
3.聚类分析算法评价
聚类分析仅根据样本数据本身样本分组。其目标是,组内的对象相互之间是相似性,而不同组中的对象是不同的。组内的相似性越大,组间差别越大,聚类效果就越好。
1) purity评价法
purity方法是极为简单的一种聚类评价方法,只需计算正确聚类数占总数的比例
2) RI评价法
实际上这是一种用排序组合原理对聚类进行评价的手段,RI评价公式如下:
RI= R+W/(R+M+D+W)
公式中R是指被聚在一类的两个对象被正确分类了;W是指不应该被聚在一类的两个对象呗正确分开了;M指不应该放在一类的对象被错误的放在了一类;D是指不应该分开的对象被错误的分开了
3) F值评价法
这是基于上述RI方法衍生出的一个方法,F评价公式如下:
Fa =( 1+a2) *p*r/(a2*p+r)
公式中p=R/(R+W), r=R/(R+W)
实际上RI方法就是把准确率p和召回率r看得同等重要,但是有时候我们可能需要某一特性更多一点,这时候就适合使用F值方法。
4.R语言主要聚类分析算法函数
R语言里实现的聚类主要包括:K-均值聚类、K-中心点聚类、密度聚类以及EM聚类,其主要相关函数如下表所示:
函数名 | 函数功能 | 软件包 |
kmeans() | 构建一个K-均值聚类模型 | stats |
Pam() | 构建一个K-中心点聚类模型 | cluster |
Dbscan() | 构建一个密度聚类模型 | fpc |
Mclust() | 构建一个EM聚类模型 | mclust |