此文章主要讲解聚类分析的基本概念和方法,参考的内容是《数据挖掘概念与技术》Jiawei Han Micheline Kamber Jian Pei 著。
聚类分析: 是把一个数据对象划分成子集的过程,每个子集是一个簇,满足一下两点:
说到了聚类分析,就离不开无监督学习:没有预先定义的类
聚类分析典型的应用:
1、特征选择:
2、邻近性度量:两个特征向量的相似性。
3、聚类准则:通过成本函数或一些规则表示。
4、聚类算法:选择聚类算法。
5、聚类评估:验证测试。
6、结果解释:集成在应用中。
一个好的聚类方法可以产生高质量的簇:
聚类方法的质量取决于:
说白了,就是把数据集分成几个子集,越容易区分越好。
相似性度量:
聚类质量:
划分标准:单层分区与分层分区(通常多级分层分区更容易描述)。
簇的分离性:排他性(一个客户只属于一个区域)与非排他性(一个文档可能属于多个类)。
相似性度量:基于距离的(欧几里得,曼哈顿、切比雪夫),基于联通的(密度或连通性)。
聚类空间:全空间(通常在低纬度)与子空间(通常在高纬度集群中)
可伸缩性:对多有数据进行聚类,而不是对样本聚类。
能够处理不同类型的属性:数值的、二元的、序数的。
基于约束的聚类:用户可以输入约束条件,使用领域知识确定输入参数。
用于决定输入参数的领域知识最小化。可解释性和可应用性强。
其他:发现具有任意形状的簇,能够处理有噪声的数据,增量聚类和对输入顺序不敏感,高纬度数据。
划分方法:构造不同的分区,然后根据一些标准对他们进行评估。典型的方法有:K-means,K-中心点,CLARANS.
层次方法:使用一些标准对数据集分层。典型的方法:Diana,Agnes,BIRCH,CAMELEON.
基于密度的方法:基于连通性和密度函数。典型方法:DBSCAN,OPTICS,DenClue.
基于网络的方法:基于多粒度结构。典型的方法:STING,WaveCluster,CLIQUE
| 方法 | 一般特点 |
|---|---|
| 划分方法 | ①发现球形互斥的簇 ②基于距离 ③可以使用均值或中心点等代表簇中心 ④对中小数据规模有效 |
| 层次方法 | ①聚类是一个层次分解 ②不能纠正错误的合并或划分 ③可以集成其他技术,如微聚类或考虑对象链接 |
| 基于密度方法 | ①可以发现任意形状的簇 ②簇是对象空间中被低密度区域分隔的稠密区域 ③簇密度:每个点的邻域内必须具有多少个点(阈值点)④可能过滤离群点 |
| 基于网络的方法 | ①使用一种多分辨率网格数据结构 ②快速处理(典型地,独立于数据对象,但依赖于网格大小) |
划分方法:将一个包含 n 个对象的数据集 D 划分成 k 个簇。使距离平方和最小化(cic_ici 是簇cic_ici 的中心或质心)
E=∑i=1kΣp∈Ci(d(p,ci))2E=\sum_{i=1}^{k} \Sigma_{p \in C_{i}}\left(d\left(p, c_{i}\right)\right)^{2}E=i=1∑kΣp∈Ci(d(p,ci))2
给定 k,根据选定的划分标准找出最优的 k 个簇。
k-means 算法分成四个步骤:

优点:
缺点:
大多数 k-means 方法的变种在于以下几个方面;
处理分类数据 k-众数:
注意:k-means 算法对孤立点很敏感:均值由于极大值的对象可能会严重的扭曲数据的分布。
k-medoids(k-中心) :不采用簇中对象的平均值作为参照点,而是选用簇中位置最中心的对象最为参照点,也就是簇中心肯定是一个对象。
k-中心 基本思想:
PMA (Partitioning Around Medoids,1987)就是利用上述方法,它对于较小的数据集非常有效,但不能很好的扩展到大型数据集。
为了判定一个非代表对象 OrandomO_{random}Orandom 是否是当前一个代表对象 OjO_jOj 的好的代替,对于每一个非代表对象 p,考虑以下四种情况:

算法 k-中心:

使用距离矩阵作为聚类准则。这个方法不需要簇 k 的数量作为输入,但是需要一个终止条件。

上图就是 AGNES 算法和 DIANA 算法简略图,这个不作为重点学习,需要了解的请查阅别处资料。
两大参数:
NEpsN_{Eps}NEps : {P属于数据集D∣dist(p,q)≤Eps}\{P 属于数据集 D\space | \space dist(p,q)\leq Eps\}{P属于数据集D ∣ dist(p,q)≤Eps} ,给定对象半径为 Eps 内的区域称为该对象的 E 邻域。
核心对象:如果给定对象 E 邻域内的样本点数大于或者等于 MinPts, 该对象为核心对象。
直接密度可达:对于样本集合 D,如果样本点 p 在 q 的 E 邻域内,并且 q 为核心对象,那么对象 p 从对象 q 直接密度可达。

密度可达:对于样本集合D, 给定一串样本点 p1, p2, … ,pn, p = p1, q = pn, 假如 pi 从 pi-1 直接密度可达,那么对象 q 到对象 p 密度可达。传递性。

密度相连:对于样本集合 D 种一点 o,如果对象 o 到对象 p 和对象 q 都是密度可达的,那么 p 和 q 密度相连。也就是在密度可达中间加了一个对象,传递得更远而已。我们通过这种传递性,可以更好的聚类。

DBSCAN 应用:依赖于基于密度的簇概念,簇被定义为密度连接点的最大集合。在有噪声的空间中发现任意形状的簇。

DBSCAN 伪代码:

介绍了聚类里面基础的知识和几个三个经典的聚类算法。这只是一种认识,希望可以带来入门级的理解,需要熟练掌握的话要多用。对于机器学习的友友们,算法的基本流程可能不能满足你们,实现出来或者要看清怎么实现的具体细节还需要自己去哔站搜索。算法是美丽的,过程简单,实现简单,关键要我们怎么开拓思维。好的数学功底,编程能力,语言组织(怎么转换成数学语言,怎么讲清刚认识的算法)都是干我们这行所具备的。模仿吧,模仿多了直到那些人的作品不好,再往后面知道怎么改造形成自己喜欢的风格,最后就是你自己的了。