文章目录
聚类(Clusting)算法——概述
聚类算法 是机器学习(Mahine Learning)的一种,属于无监督学习(Unsupervised Learning),即数据样本没有数据标签。它的目的是将海量数据中具有相似特征的数据自动聚为一类。
一、聚类分析的八类方法
根据聚类算法的核心思想的差异性,将聚类分析分为以下八类方法:
- 划分方法 ,根据一定的标准(例如数据特征间的最小均方误差总)和来划分类别,划分方法满足两个条件: (1)每个簇至少包含一个对象; (2)每个对象必需属于且仅属于某一个簇。典型的算法有K-Means,K-Medoids,CLARANS,Canopy;
- 层次方法, 根据一定的标准进行数据的层次分解,典型的算法有Diana,Agnes,BIRCH,CAMELEON;
- 基于密度的方法 功能,根据数据间的连接性和密度函数来划分类别,典型的算法有DBSCAN,OPTICS,DenClue;
- 基于模型的方法 ,对每个类别进行概率假设,直到拟合到最佳模型,典型的算法有EM(期望极大算法),SOM,COBWEB;
- 基于网格的方法 ,基于多层粒度结构,典型的算法有SING,Wave Cluster,CLIQUE;
- 基于约束的方法,基于特定用户或特定应用的约束,典型的算法有COD(obstacles),constrained clustering;
- 基于频繁模式的方法 等功能,功能按钮位于编辑区域与预览区域中间;
- 基于链接的方法,数据对象通常以各种方式链接在一起,典型的算法有SimRank,LinkCLus。
1. 划分方法
1)K-Means聚类
K-Means算法(K-均值算法)是划分方法中的一种,其相似性指标采用了欧式距离,即两个样本之间距离越近,则相似度越高,越易被划分为一类,最终期望得到紧凑且独立的簇。
工作原理:
输入:K值(簇的个数),归一化的特征列
输出:K个类别的数据
优点:1. 适用于圆形数据;
2. 在处理大数据集时,该算法是相对可扩展性的,并且具有较高的效率,其算法复杂度为O(nkt),其中,n为数据集中对象的数目,k为期望得到的簇的数目,t为迭代的次数。
缺点:1. 需设定K值;
2.对孤立点(即噪声数据)敏感,如果具有极值,就可能大幅度地扭曲数据的分布;
3. 仅能处理数值类型的数据。
2)K-Medoids聚类
K-Medoid算法(K-中心点算法)是划分方法中的一种,其相似性指标采用了欧式距离,即两个样本之间距离越近,则相似度越高,越易被划分为一类,最终期望得到紧凑且独立的簇。
K-medoids算法不适合于大数据量的计算。
K-Medoids与K-Means的区别在于类中心点的计算 ,前者是选取类内间距最小的样本点作为中心点,后者是使用类内样本均值作为中心点。
工作原理:
输入:K值(簇的个数),归一化的特征列
输出:K个类别的数据
选择k个对象作为初始的簇中心
优点:1. 对孤立点和噪声数据的敏感性小;
2. 可处理非数值数据。
缺点:1. 需设定K值,且不同的K值对结果影响较大;
2.时间成本比K-Means高。
3)CLARANS算法
CLARANS算法即随机搜索聚类算法,它是划分方法中的一种,聚类过程为从实际数据中抽取numlocal次采样,在每个采样上都用K-medoids算法得到相应的聚类中心,然后在这当中选取类内误差和最小的一个作为最终的结果。
CLARANS算法适合于大数据量的计算。
工作原理:
输入:numlocal(抽样次数) ,maxneighbor(一个样本可以和任意特定邻居进行比较的数目),K值,归一化的特征列
输出:K个类别的数据
4)Canopy算法
Canopy算法属于软聚类,每个样本可以属于多个类,它实现了对数据的粗聚类,其结果不准确,但可以为k-means算法确定大致的K值和聚类中心点。
工作原理:
输入:T1,T2(T1>T2),归一化的特征列
输出:聚类结果
2. 层次方法
1)BIRCH算法
BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)算法的主要过程是建立聚类特征树CF Tree的过程。
BIRCH算法适用于样本量较大,类别较多的聚类。
优点:1. 节约内存,所有的样本都在磁盘上,CF Tree仅仅存了CF节点和对应的指针;
2. 聚类速度快,只需要一遍扫描训练集就可以建立CF Tree,CF Tree的增删改都很快;
3. 可以识别噪音点;
4.适用于凸形或球形分布的数据。
缺点:1. 对高维特征的数据聚类效果不好;
2.由于CF Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的类别分布不同。
3. 基于密度的方法
1)DBSCAN算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法是根据样本分布的紧密程度实现聚类。该算法的过程为任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止。
DBSCAN算法适用于稠密数据,它既可以实现凸样本集的聚类,也可以实现非凸样本集的聚类。
优点:1. 可以对任意形状的稠密数据集进行聚类;
2. 可以在聚类的同时发现异常点,对数据集中的异常点不敏感;
3. 聚类结果没有偏倚。
缺点:1. 如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差;
2.如果样本集较大时,聚类收敛时间较长;
3.调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响 。
二、聚类评估
1. K-Means、K-Medoids聚类评估指标
-
Cp(Compactness)紧密性
C P ˉ = 1 k ∑ k = 1 k C P k ˉ , 其 中 \bar{CP}=\frac{1}{k}\sum_{k=1}^{k}{\bar{CP_k}},其中 CPˉ=k1k=1∑kCPk