聚类的四种算法

爱⌒轻易说出口 提交于 2019-12-04 01:27:20

最近看了一篇论文,涉及到数据挖掘的聚类算法,这里总结一下

一、聚类算法的简介

 聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。聚类算法与分类算法最大的区别是:聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。

1、K-Means算法的概述

  基本K-Means算法的思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,知道质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上K-Means算法的收敛速度比较慢。

1.1、K-Means算法的流程

初始化常数K,随机选取初始点为质心

重复计算一下过程,直到质心不再改变

计算样本与每个质心之间的相似度,将样本归类到最相似的类中

重新计算质心

输出最终的质心以及每个类

2. DBSCAN算法

2.1基本概念

1Eps邻域:给定对象半径Eps内的邻域称为该对象的Eps邻域;

2)核心点(core point):如果对象的Eps邻域至少包含最小数目MinPts的对象,则称该对象为核心对象;

3)边界点(edge point):边界点不是核心点,但落在某个核心点的邻域内;

4)噪音点(outlier point):既不是核心点,也不是边界点的任何点;

5)直接密度可达(directly density-reachable):给定一个对象集合D,如果pqEps邻域内,而q是一个核心对象,则称对象p从对象q出发时是直接密度可达的;

6)密度可达(density-reachable):如果存在一个对象链  p1, ,pi,.., pn,满足p1 = p pn = qpi是从pi+1关于EpsMinPts直接密度可达的,则对象p是从对象q关于EpsMinPts密度可达的;

7)密度相连(density-connected):如果存在对象OD,使对象pq都是从O关于EpsMinPts密度可达的,那么对象pq是关于EpsMinPts密度相连的。

8)类(cluster:设非空集合,若满足:从(a)到(b)和密度相连。则称构成一个类簇

1红色为核心点,黄色为边界点,蓝色为噪音点,minPts = 4Eps是图中圆的半径大小有关“直接密度可达”和“密度可达”定义实例如图2所示[5]其中,Eps用一个相应的半径表示,设MinPts=3,请分析Q,M,P,S,O,R5个样本点之间的关系。

2  “直接密度可达”和“密度可达”概念示意描述。根据前文基本概念的描述知道:由于有标记的各点­MPOREps近邻均包含3个以上的点,因此它们都是核对象;是从P“直接密度可达”;而Q则是从­M“直接密度可达”;基于上述结果,Q是从P“密度可达”;但PQ无法“密度可达”(非对称)。类似地,SRO是“密度可达”的;ORS均是“密度相连”(对称)的。


2.2 DBSCAN算法原理

1DBSCAN通过检查数据集中每点的Eps邻域来搜索簇,如果点pEps邻域包含的点多于MinPts个,则创建一个以p为核心对象的簇;

2)然后,DBSCAN迭代地聚集从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并;

3)当没有新的点添加到任何簇时,该过程结束。

2.3 DBSCAN算法优缺点

优点:

1)聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类;

2)与K-MEANS比较起来,不需要输入要划分的聚类个数;

3)聚类簇的形状没有偏倚;

4)可以在需要时输入过滤噪声的参数。

缺点:

1)当数据量增大时,要求较大的内存支持I/O消耗也很大;

2)当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差,因为这种情况下参数MinPtsEps选取困难。

3)算法聚类效果依赖与距离公式选取,实际应用中常用欧式距离,对于高维数据,存在“维数灾难”。

2.4. 算法描述

输入:包含n个对象的数据库,半径,最少数目MinPts

输出:所有生成的簇,达到密度要求

(1)  Repeat

(2)  从数据库中抽取一个未处理的点

(3)  IF抽取的点是核心点THEN找出所有从该点密度可达的对象,形成一个簇

(4)  ELSE抽出的点是边缘点,跳出本次循环,寻找下一点

(5)UNTIL所有的点都被处理

3.BIRCH算法

3.1 算法思想

阶段1:BIRCH扫描数据库,建立一个初始存放于内存的CF树,它可以被看作数据的多层压缩,试图保留数据内的聚类结构。随着对象的插入,CF树被动态的构造,不要求所有的数据读入内存,而可在外层上逐个读入数据项。因此,BIRTCH方法对增量或动态聚类也非常有效

阶段2:BIRCH采用某个聚类算法对CF树的叶节点进行聚类,在这个阶段可以执行任何聚类算法。   

CF tree的结构类似于一棵B-树,它有两个参数:内部节点平衡因子B,叶节点平衡因子L,簇半径阈值T。树中每个节点最多包含B个孩子节点,记为(CFi,CHILDi),1<=i<=B,CFi是这个节点中的第i个聚类特征,CHILDi指向节点的第i个孩子节点,对应于这个节点的第i个聚类特征。

 一棵CF树是一个数据集的压缩表示,叶子节点的每一个输入都代表一个簇C,簇C中包含若干个数据点,并且原始数据集中越密集的区域,簇C中包含的数据点越多,越稀疏的区域,簇C中包含的数据点越少,簇C的半径小于等于T。随着数据点的加入,CF树被动态的构建,插入过程有点类似于B-树。

4  MeanShift算法

4.1 Meanshift算法基本思想

均值漂移的基本概念:沿着密度上升方向寻找聚簇点

设想在一个有N个样本点的特征空间

1.初始确定一个中心点center,计算在设置的半径为D的圆形空间内所有的点(xi)与中心点center的向量

2.计算整个圆形空间内所有向量的平均值,得到一个偏移均值

3.将中心点center移动到偏移均值位置

4.重复移动,直到满足一定条件结束


 



 






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!