一、基于密度的聚类
K-Means 算法、K-Means++ 算法和Mean Shift 算法都是基于距离的聚类算法,当数据集中的聚类结果是球状结构时,能够得到比较好的结果,但当数据集中的聚类结果是非球状的结构时,基于距离的聚类算法的聚类效果并不好。球状结构的聚类如我们前面讲的,非球类结构的聚类如下图所示:
基于距离的三种聚类算法其解得的聚类结果都不对,在上图中,数据的分布呈现明显的密度趋势,所以基于密度的聚类算法 DBSCAN 被提出。
二、DBSCAN 算法原理
1.基本概念
DBSCAN 是一种典型的基于密度的聚类算法,它有两个最基本的邻域参数——邻域、MinPts:
- 邻域:在数据集 D 中与样本点 xi 的距离不大于 的样本,即,如下图所示,x* 不在样本点xi 的邻域内,xi 的密度可由 xi 的 邻域内的点数来估计。
- MinPts:在样本xi的邻域内的最少样本点的数目
基于邻域参数邻域和MinPts,在DBSCAN算法中将数据点分为以下三类:
- 核心点:半径内含有超过MinPts数目的点;
- 边界点:在半径内点的数量小于MinPts,但是落在核心点的邻域内;
- 噪音点:既不是核心点也不是边界点的点。
在上图中,设置MinPts的值为10,对应的x1的邻域中有11个样本点,大于MinPts,则x1为核心点。x2的邻域中有6个样本点,小于MinPts且在x1的