1、预备知识
密度聚类方法的核心是,只要样本点的密度大于某个阈值,则将该样本添加到最近的簇中。该算法的优势是可发现任意形状的聚类,且对噪声数据不敏感;但是计算密度单元的计算复杂度大,需要建立空间索引来降低计算量。
2、DBSCAN算法核心
DBCSAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在有“噪声”的数据中发现任意形状的聚类。
3、若干重要概念
1)对象的ε-领域:给定对象在半径ε内的区域。
2)核心对象:对于给定的数目m,如果一个对象的ε-领域至少包含m个对象,则称该对象为核心对象。
3)直接密度可达:给定一个对象集合D,如果p在q的ε-领域内,而q是一个核心对象,则对象p从对象q出发是直接密度可达的。
如图ε=1,m=5,q是一个核心对象,则从q出发到对象p是直接密度可达的。
4)密度可达:如果存在一个对象链p1p2···pn,p1=q,pn=p,对pi∈D(1≤i≤n),pi+1是从pi关于ε和m直接密度可达的,则对象p是从对象q和m密度可达的。
5)密度相连:如果集合D中存在一个对象O,使得对p和q是从O关于ε和m密度可达的,那么对象p和q是关于ε和m密度相连的。
6)簇:一个基于密度的簇是最大的密度相连对象的集合。
7)噪声:不包含在任何簇中的对象称为噪声。
4、DBSCAN算法步骤
下图中有若干个点,其中标出了A、B、C、N这四个点,根据这个图来说明DBSCAN算法的步骤:
1)首先选择A点为切入点,将ε设置为图中圆的半径,对象个数m(minPts)设定为4。从图中可以看到:A点的ε-领域包含4个对象(其中也包含自身)大于等于m(minPts),则创建A作为核心对象的新簇,簇内其他点都(暂时)标记为边缘点。
2)在标记的边缘点中选取一个点重复上述步骤,寻找并合并核心对象直接密度可达的对象。对暂时标记为的边缘点反复递归上述算法,直至没有新的点可以更新簇时,算法结束。这样就形成了一个以A为起始的一个聚类,为图中红色的中心点和黄色的边缘点。
3)如果还有点未被处理,则再次新产生一个类别来重新启动这个算法过程。遍历所有数据,如果有些点既不是边缘点也不是中心点,则将其标记为噪音。
5、DBSCAN算法的优缺点
优点:
- 无需确定聚类个数;
- 可以发现任意形状的聚类;
- 可有效处理噪声;
- 对数据输入顺序不敏感;
- 参数可由领域专家设置。
缺点:
- 边界点具有不确定性;
- 维数灾导致Euclid距离度量失效;
- 不能处理密度差异过大的聚类;
- 参数选取不当,聚类质量下降。
(本文部分内容来自
http://freewill.top/2017/02/23/)