1、算法简介
(1)概述:DBSCAN算法是密度聚类中最具有代表性的一个算法。密度聚类算法认为簇可以看作一种高密度区域,这种区域被低密度区域分割,这种做法能够将“噪声”和孤立点数据的影响忽略,不管什么形状的簇都能被发现。DBSCAN算法就是一种利用高密度连接区域划分簇的密度聚类算法。在该算法中,簇具有密度相连的点的最大集以及高密度区域等特征。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
(2)主要用途:聚类,发现数据之间的关联。
(3)优缺点
[1] 优点:能够发现任意形状的簇,并有效识别离群点;与K-means算法相比,DBSCAN不需要事先知道要形成的簇类的数量;DBSCAN对于数据库中样本的顺序不敏感,即Pattern的输入顺序对结果的影响不大,但对于处于簇类之间边界样本,可能会根据哪个簇类优先被探测到而其归属有所摆动;DBSCAN可被设计与数据库一同使用,可以加速区域查询。
[2] 缺点:聚类之前需要人工选择Eps和minPts这两个参数;当数据量增大时,要求较大的内存支持;DBSCAN不能很好地反映高维数据和数据集已变化的密度;由于DBSCAN算法使用了全局性表征密度的参数,因此当各个类的密度不均匀,或类间的距离相差很大时,聚类的质量较差;经典的DBSCAN算法中参数Eps和MinPts在聚类过程中是不变的,使得该算法难以适应密度不均匀的数据集。
2、算法流程
(1)第一步:设定聚类半径Eps和密度阈值MinPts;
(2)第二步:输入数据集D,目标是输出聚类结果和噪声数据;
(3)第三步:从数据集D中随机抽取一个未被处理的对象p,且在它的Eps-近邻满足密度阈值要求时把该对象p称为核对象;
(4)第四步:遍历整个数据集,找到所有从对象p密度可达对象,形成一个新的簇;
(5)第五步:通过密度相连产生最终的簇结果;
(6)第六步:重复执行第四步和第五步,直到数据集中所有对象都为“已处理”状态。
3、模拟例子
(1)说明
[1] 数据情况:小明班上30名同学的考试成绩(语文、数学、英语、物理、化学、生物);
[2] 研究目的:将小明班上的同学进行聚类,并发现噪声数据。
(2)分析步骤
[1] 第一步:设定聚类半径Eps和密度阈值MinPts为常用的值;
[2] 第二步:输入小明班上同学的成绩数据;
[3] 第三步:使用DBSCAN算法进行聚类,并输出聚类的结果。
(3)结果模拟:小明班上的同学被聚为了3类,有2个同学被识别为了噪声数据。进一步研究,发现第1类同学的语数外成绩较好,物化生成绩一般;第2类同学的物化生成绩较好,语数外成绩一般;第3类同学的所有科目成绩都一般。而2个噪声点同学的成绩情况为,第1个噪声点同学是语数外物化生成绩均非常好;第2个噪声点同学的成绩情况为,语数外物化生的成绩都非常烂。