对于簇形状不规则的数据,像k-means(聚类分析: k-means算法)这种基于划分的方法就不再适用了,因为划分方法(包括层次聚类算法)都是用于发现“球状簇”的。比如下面两个图中,Fig.1所示的数据分布用k-means作聚类是没有问题的,但是对于Fig.2就不行了,会把大量的噪声或者离群点也包含在簇中。
解决这种任意簇形状的聚类问题,就要采用一种与划分聚类或者层次聚类不同的聚类方法——基于密度聚类。对于基于密度的聚类,最常用的算法就是本文要说的DBSCAN(Density-Based Spatial Clustering of Application with Noise),简单直译过来就是“具有噪声应用的基于密度的空间聚类”。
概念介绍
在讲解DBSCAN具体的工作原理之前,先介绍关于这个算法的一些专门定义的概念。
核心对象:一个数据点可被称为核心对象,如果以这个数据点为球心,以长度 ϵ ϵ 为半径的超球面区域内,至少有 MinPts M i n P t s 个数据点。为了后面叙述简单,我将这个核心对象称为 (ϵ,MinPts) ( ϵ , M i n P t s ) -核心对象,将它的这个球面区域称为核心对象的 ϵ ϵ -邻域。
直接密度可达:对于 (ϵ,MinPts) ( ϵ , M i n P t s ) -核心对象 O1 O 1 和对象 O2 O 2 ,我们说 O2 O 2 是从 O1 O 1 直接密度可达的,如果 O2 O 2 在 O1 O 1 的 ϵ ϵ -邻域内。注意,这里只要求 O1 O 1 是核心对象,而