一.聚类的概念
1.定义
聚类指的是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。
(注:聚类方法是属于无监督的分类方式。)
2.聚类的分类
聚类方法主要划分为五大类:
(1)基于层次的聚类
原理:试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略和“自顶向下”的拆分策略。
(2)基于分割(划分)的聚类
原理:首先要确定一堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后依据预先定好的启发式算法(heuristic algorithms)给数据点做迭代重置(iterative relocation),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。
(3)基于密度的聚类
原理:定一个距离半径,最少有多少个点,然后把可以到达的点都连起来,判断为同类。
(4)基于网格的聚类
原理:将数据空间划分为网格单元,将数据对象集映射到网格单元中,并计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,密度足够大的网格单元形成簇。
(5)基于模型的聚类
原理:为每簇假定了一个模型,寻找数据对给定模型的最佳拟合,这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。
二.五类聚类方法详解
1.基于层次的聚类
(1)算法流程
以下流程以自下向上为例。
a.将每个对象看作一类,计算两两之间的最小距离;
b. 将距离最小的两个类合并成一个新类;
c. 重新计算新类与所有类之间的距离;
d. 重复b, c, 直到所有类最后合并成一类。(在此我们了已选择我们需要多少个簇)
(2)代表算法:BIRCH、Chameleon、CURE等
算法 | 具体描述 |
---|---|
BIRCH | BIRCH算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程 |
Chameleon | 首先由数据集构造成一个K-最近邻图Gk ,再通过一个图的划分算法将图Gk划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇 |
CURE | 先将每个数据点看成一个簇,然后再以一个特定的“收缩因子”向簇中心“收缩”它们,即合并距离最近的两个簇直到簇的个数为所要求得个数为止 |
三种算法优缺点比较:
算法 | 优缺点 |
---|---|
BIRCH | 优点: 可以在数据量很大时使用、节省内存、速度快、可识别噪声点。缺点: 对高维数据特征的聚类效果不好、若数据集分布簇不是类似于超球体或凸的则聚类效果不好。 |
Chameleon | 优点: 可以处理非常复杂不规则形状的簇。缺点: 高维数据的运算复杂度比较高。 |
CURE | 优点: 可以处理复杂空间的簇、受噪点影响小,对孤立点的处理更加健壮。缺点: 参数较多、对空间数据密度差异敏感 |
2.基于划分的聚类
基于划分的聚类代表方法有:K-means及其变体包括k-medoids、k-modes、k-medians等、CLARA、PAM等算法。
k-means算法流程:
a. 随机地选择k个对象,每个对象初始地代表了一个簇的中心;
b.对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;
c.重新计算每个簇的平均值,更新为新的簇中心;
d.不断重复b, c, 直到准则函数收敛。
算法 | 具体描述 |
---|---|
k-means | 以集群点的平均值作为参考对象进行聚类 |
k-medoids | 以集群点中最中心(中位数)的对象为参考进行聚类 |
k-modes | 以集群点特征的众数作为参考进行聚类 |
PAM | k-medoids的一个变体,使用迭代和贪心算法进行聚类 |
CLARA | 在PAM的基础上对数据进行了抽样 |
各类基于划分的算法优缺点比较:
算法 | 优缺点 |
---|---|
k-means | 优点: 算法简单,时间复杂度低。缺点: 无法处理非球形等不规则的数据、对初始值k的设置很敏感、对离群点敏感。 |
k-medoids | 优点: 对噪点和离群点不敏感。缺点: 处理时间比k-means长、须事先指定所需聚类簇个数k。 |
k-modes | 优点: 可适用于离散性数据集、时间复杂度更低。缺点: 需要事先对k值进行确定。 |
PAM | 优点: 对离群点数据不敏感。缺点: 时间复杂度高。 |
CLARA | 优点: 可用于大规模数据集的聚类。缺点: 在对数据进行随机抽样过程中采样不准确。 |
3.基于密度的聚类
(1)算法流程
a.指定合适的r(点的半径)和M(在一个点半径内至少包含的点的个数);
b.计算所有的样本点,如果点p的r邻域里有超过M个点,则创建一个以p为核心点的新簇;
c.反复寻找这些核心点直接密度可达的点,将其加入到相应的簇,对于核心点发生"密度相连"状况的簇,给予合并;
d.当没有新的点可以被添加到任何簇,算法结束。
(2)代表算法:DBSCAN、OPTICS、DENCLUE等。
算法 | 具体描述 |
---|---|
DBSCAN | 这类方法采用空间索引技术来搜索对象的邻域,将簇看做是数据空间中被低密度区域分割开的稠密对象区域 |
OPTICS | 是DBSCAN算法的一种改进,对数据对象集合中的对象进行排序,得到一个有序的对象列表,其中包含了足够的信息用来提取聚类 |
DENCLUE | 将每个数据点的影响用一个数学函数形式化地模拟出来,聚类簇通过密度吸引点(全局密度函数的局部最大值)来确定 |
各种算法的优缺点比较:
算法 | 优缺点 |
---|---|
DBSCAN | 优点: 可以处理任何形状的聚类簇、能够检测异常点。缺点: 需要给定数据点的半径r和最少数量m、对输入参数较敏感。 |
OPTICS | 优点: 对输入参数不敏感。缺点: 计算量大、速度较慢。 |
DENCLUE | 优点: 对有巨大噪声的数据点有良好的聚类效果、比DBSCAN算法快得多、有严格的数学基础。缺点:需要大量的参数并且参数对结果的影响巨大。 |
4.基于网格的聚类
(1)算法流程:
a.划分网格;
b.使用网格单元内数据的统计信息对数据进行压缩表达;
c.基于这些统计信息判断高密度网格单元 ;
d.最后将相连的高密度网格单元识别为簇。
(2)代表算法:STING、WaveCluster、CLIQUE等。
算法 | 具体描述 |
---|---|
STING | 将输入对象的空间区域划分成矩形单元,每个网格单元的统计信息(均值、最大值、最小值)被作为参数预先计算和存储 |
WaveCluster | 把多维数据看做一个多微信号处理,即划分为网格结构后,通过小波变换将数据空间变换成频域空间进行处理 |
CLIQUE | 对高维数据集采用了子空间的概念,划分为网格结构后识别出密集单元,然后运用深度优先算法发现空间中的聚类,再对每个聚类簇确定最小覆盖区域 |
各个算法的优缺点比较:
算法 | 优缺点 |
---|---|
STING | 优点: 效率高、时间复杂度低。缺点: 聚类质量受网格结构最底层的粒度影响、欠缺对网格单元之间的联系的考量。 |
WaveCluster | 优点: 速度快、是一个多分辨率算法,高分辨率可获得细节信息,低分辨率可获得轮廓信息。缺点: 对已处理簇与簇之间没有明显边缘的情况聚类效果较差。 |
CLIQUE | 优点: 善于处理高维数据和大数据集。缺点: 聚类的准确度较低。 |
5.基于模型的聚类
这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。
这里的概率模型主要指概率生成模型(generative Model),同一”类“的数据属于同一种概率分布,即假设数据是根据潜在的概率分布生成的。
代表算法:高斯混合模型(GMM)、SOM(Self Organized Maps)
算法 | 具体描述 |
---|---|
GMM | 基于概率模型,将数据分解为若干个基于高斯概率密度函数形成的模型 |
SOM | 基于神经网络模型,一种无监督学习网络,输入层接受输入信号,输出层由神经元按一定方式排列成一个二维节点矩阵 |
各算法的优缺点比较:
算法 | 优缺点 |
---|---|
GMM | 优点: 结果用概率表示,更具可视化并且可以根据俄这些概率在某个感兴趣的区域重新拟合预测。缺点: 需要使用完整的样本信息进行预测、在高维空间失去有效性。 |
SOM | 优点: 映射至二维平面,实现可视化、可获得较高质量的聚类结果。缺点: 计算复杂度较高、结果一定程度上依赖于经验的选择。 |
6.各种算法的使用场景总结
三.五大聚类方法优缺点总结
分类 | 特点及优缺点 |
---|---|
基于层次 | 1.算法简单 2.层次用于概念聚类(生成概念、文档层次树) 3.处理大小不同的簇 4.得到不同粒度上的多层次聚类结构 6.适用于任意形状的聚类 7.对样本的输入顺序不敏感 8.算法时间复杂度较大 9.过程具有不可逆性 10.聚类终止条件具有不精确性。 |
基于划分 | 1.算法简单 2.基于距离 3.易于发现球形互斥的簇 4. 时间复杂度相对较低 5.基于质心的聚类,对边缘点离群点处理效果一般 |
基于密度 | 1.可以发现任意形状的簇 2.广泛应用于空间信息处理 3.对噪音不敏感 4.比较直观 |
基于网格 | 1.处理速度快 2.精确性不高 3.所有的聚类都在网格结构中进行 |
基于模型 | 1.更具可视化 2.计算复杂度较高 3.执行效率低 4.数据量小的时候效果不好 |
参考:
1.聚类
2.常见的六大聚类算法
3.聚类评估
4.各种聚类算法的系统介绍和比较