一、DBSCAN算法
DBSCAN是一种基于密度的聚类算法,聚类前不需要预先指定聚类的个数,生成的簇的个数不定(和数据有关)。该算法利用基于密度的聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值。该方法能在具有噪声的空间数据库中发现任意形状的簇,可以将密度足够大的相邻区域连接,能有效处理异常数据。
1.基本概念
DBSCAN算法将数据点分为三类:
- 核心点:在半径Eps内含有不小于MinPts数目的点(红色点)
- 边界点:在半径Eps内,点的数量小于Minpts,但是落在核心点的领域内(黄色点)
- 噪音点:既不是核心点也不是边界点的点(蓝色点)
2.Matlab软件代码(DBSCAN算法)
Matlab官网推荐下载的代码:DBSCAN Clustering Algorithm
输出结果中,IDX表示聚类结果,其中0表示是孤立点
3.DBSCAN算法的优点
- 基于密度定义,能处理任意形状和大小的簇;
- 可以在聚类的同时发现异常点;
- 与K-means算法比起来,不需要输入初始的聚类个数
4.DBSCAN算法的缺点
- 对输入的参数Eps和Minpts敏感,确定参数困难;
- 由于DBSCAN算法中,变量Eps和Minpts是全局唯一的,当聚类的密度不均匀时、聚类距离相差很大时,聚类的效果差;
- 当数据量大时,计算密度单元的计算复杂度大。
二、几类聚类算法的使用建议
- 只有两个指标,且做出散点图后发现数据表现得很“DBSCAN”,这时使用DNSCAN进行聚类
- 大部分情况下,使用系统聚类的方法;K-means也可以使用,但是此时在论文中可能无话可说。