这是一种基于密度的,可在噪声环境下聚类的无监督机器学习算法。
算法描述如下:
考虑一组在一个空间中待聚类的点,设参数 为一个点的领域半径;
算法 DBSCAN 将这些点分成三类:核心点(),可达点(),外部点()
1. 若一个点 的领域 内,至少有 个点,则点 为核心点;
2. 若一个点 在核心点 的领域 内,则点 为直接可达点(注意到直接可达点仅是相对于核心点而言);
3. 若存在一条路径 ,其中 ,且每个 都是 的直接可达点,则点 是点 的可达点(注意到,这意味着 都必须是核心点, 可能不是);
4. 其他对于任意核心点都不是可达点的点,则被成为外部点或噪声点。
现在,若点 是核心点,则这个点集就会被分类为两部分:可达点和边缘点;
而根据定义,点的可达性()不是对称的概念,只有核心点可以到达非核心点,反之不可达,因此还需要一个概念:连通性(),若对于点 和点 ,存在点 ,使得 都是点 的可达点,则 是密度连通的()。
算法 DBSCAN 基本流程:
1. 找到所有点的领域的点,并标记出哪些点是核心点;
2. 在邻域图中,找到核心点的连通组成,忽略所有非核心点;
3. 对于每个非核心点,若可归类于某个核心点的连通域,则直接归类,否则视为噪点。
算法复杂度:由于 DBSCAN 需要计算每两个点之间的距离,因此其复杂度为 。
算法参数:在上面的描述中,可以发现 DBSCAN 需要两个参数,分别是邻域半径 和密度参数
参考:
https://en.wikipedia.org/wiki/DBSCAN#Extensions
https://towardsdatascience.com/explaining-dbscan-clustering-18eaf5c83b31