6. DBSCAN浮光略影

6. DBSCAN浮光略影

学机器学习易陷入一个误区:以为机器学习是若干种算法(方法)的堆积,熟练了“十大算法”或“二十大算法”一切即可迎刃而解,于是将目光仅聚焦在具体算法推导和编程实现上;待到实践发现效果不如人意,则又转对机器学习发生怀疑。须知,书本上仅能展示有限的典型“套路”,而现实世界任务千变万化,以有限之套路应对无限之变化,焉有不败!现实中更多更多时候,需要根据任务特点对套路进行改造融通。算法是“死”的,思想才是“活”的。欲行此道,则务须把握算法背后的思想脉络,无论创新科研还是应用实践,皆以此为登堂入室之始。

--西瓜书

DBSCAN是一种基于密度的聚类方法,把空间中扎堆的样本视为一类,类和类之间由低密度区域隔开,把不在任何一类的数据视为异常。那么要怎么样刻画“密度”这一概念呢?

DBSCAN通过2个参数espmin_samples把样本点分为3类:核心点,边缘点和异常点。

  • 核心点。指在 ϵ \epsilon ϵ邻域内至少包含min_samples个样本的点。
  • 边缘点。指在核心点 ϵ \epsilon ϵ邻域内,但是自己的邻域内的点的数目小于min_samples。边缘点在簇的边缘。
  • 异常点。不在任何核心点的邻域内的点被划为异常。

因此一类样本点包括核心点和边缘点,也就是密度大的点。异常点即为密度小的点。调大min_samples或调小esp会提高簇的密度。参数min_samples主要控制对噪声的容忍度。在有噪声和大数据集上,可以增大这个参数。参数esp是至关重要的,需要根据数据的特点自行设置。

下图(来自sklearn)大点表示核心点,小点表示边缘点,黑点表示异常点。

6. DBSCAN浮光略影

杂记

  1. 以前以为聚类需要知道类个数
  2. 算法实现使用ball trees,kd-trees来确定点的邻居,这避免了计算完整的距离矩阵。找机会看下ball trees,kd-trees.
  3. sklearn文档中提到“Due to this rather generic view, clusters found by DBSCAN can be any shape, as opposed to k-means which assumes that clusters are convex shaped.”凸是因为kmearns要计算到中心的距离,所以一定是凸的。

参考:

  1. sklearn
  2. 西瓜书
上一篇:机器学习-聚类分析之DBSCAN


下一篇:基于密度的聚类算法——DBSCAN算法