参考:

  1. https://www.cnblogs.com/zhengxingpeng/p/6670486.html
  2. https://www.cnblogs.com/chaosimple/p/3164775.html
  3. https://www.jianshu.com/p/e8dd62bec026

1. DBSCAN简介:

  • DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。该算法利用基于密度聚类的概念,即要求聚类空间中的一定区域内所包含对象(点或其他空间对象)的数目不小于某一给定阈值。
  • DBSCAN算法的显著优点是聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类。但是由于它直接对整个数据库进行操作且进行聚类时使用了一个全局性的表征密度的参数,因此也具有两个比较明显的弱点:
    (1)当数据量增大时,要求较大的内存支持,I/O消耗也很大;
    (2)当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差。

2. DBSCAN和传统聚类算法对比:

  • DBSCAN算法的目的在于过滤低密度区域,发现稠密度样本点。跟传统的基于层次的聚类和划分聚类的凸形聚类簇不同,该算法可以发现任意形状的聚类簇,与传统的算法相比它有如下优点:
    (1)与K-means比较起来,不需要输入要划分的聚类个数;
    (2)聚类簇的形状没有偏倚;
    (3)可以在需要时输入过滤噪声的参数;

3. 算法涉及的基本定义:

  • DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。

    可以发现:
    1.由于q必须是核心对象,因此直接密度可达不满足对称性,除非p也是核心对象。
    2.密度可达满足传递性。此时序列中的传递样本p1,p2,…,pn−1均为核心对象,因为只有核心对象才能使其他样本直接密度可达。密度可达不满足对称性
    3.密度相连关系是满足对称性的。密度可达是直接密度可达的传递闭包,并且这种关系是非对称的。只有核心对象之间相互密度可达。然而,密度相连是对称关系。DBSCAN目的是找到密度相连对象的最大集合
  • 从下图可以很容易理解上述定义。图中MinPts=5,红色的点都是核心对象,因为其ϵ邻域至少有5个样本。黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心对象组成了密度可达的样本序列。在这些密度可达的样本序列的ϵ邻域内所有的样本相互都是密度相连的。

4. 基本思想:

  • DBSCAN的聚类定义很简单:由密度可达关系导出的最大密度相连的样本集合,即为我们最终聚类的一个类别,或者说一个簇。
  • 这个DBSCAN的簇里面可以有一个或者多个核心对象。如果只有一个核心对象,则簇里其他的非核心对象样本都在这个核心对象的ϵ邻域里;如果有多个核心对象,则簇里的任意一个核心对象的ϵ邻域中一定有一个其他的核心对象,否则这两个核心对象无法密度可达。这些核心对象的ϵ邻域里所有的样本的集合组成的一个DBSCAN聚类簇。
  • 那么怎么才能找到这样的簇样本集合呢?DBSCAN使用的方法很简单,它任意选择一个没有类别的核心对象作为种子,然后找到所有这个核心对象能够密度可达的样本集合,即为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,这样就得到另一个聚类簇。一直运行到所有核心对象都有类别为止。
  • 基本上这就是DBSCAN算法的主要内容了,是不是很简单?但是我们还是有三个问题没有考虑。
    (1)第一个是一些异常样本点或者说少量游离于簇外的样本点,这些点不在任何一个核心对象在周围,在DBSCAN中,我们一般将这些样本点标记为噪声点。
    (2)第二个是距离的度量问题,即如何计算某样本和核心对象样本的距离。在DBSCAN中,一般采用最近邻思想,采用某一种距离度量来衡量样本距离,比如欧式距离。这和KNN分类算法的最近邻思想完全相同。对应少量的样本,寻找最近邻可以直接去计算所有样本的距离,如果样本量较大,则一般采用KD树或者球树来快速的搜索最近邻。
    (3)第三种问题比较特殊,某些样本可能到两个核心对象的距离都小于ϵ,但是这两个核心对象由于不是密度直达,又不属于同一个聚类簇,那么如果界定这个样本的类别呢?一般来说,此时DBSCAN采用先来后到,先进行聚类的类别簇会标记这个样本为它的类别。也就是说DBSCAN的算法不是完全稳定的算法。

5. 基本要点:

  • 1.DBSCAN算法需要选择一种距离度量,对于待聚类的数据集中,任意两个点之间的距离,反映了点之间的密度,说明了点与点是否能够聚到同一类中。由于DBSCAN算法对高维数据定义密度很困难,所以对于二维空间中的点,可以使用欧几里德距离来进行度量。
  • 2.DBSCAN算法需要用户输入2个参数:一个参数是半径(Eps),表示以给定点P为中心的圆形邻域的范围;另一个参数是以点P为中心的邻域内最少点的数量(MinPts)。如果满足:以点P为中心、半径为Eps的邻域内的点的个数不少于MinPts,则称点P为核心点。
  • 3.DBSCAN聚类使用到一个k距离的概念,k距离是指:给定数据集P={p(i); i=0,1,…n},对于任意点P(i),计算点P(i)到集合D的子集S={p(1), p(2), …, p(i-1), p(i+1), …, p(n)}中所有点之间的距离,距离按照从小到大的顺序排序,假设排序后的距离集合为D={d(1), d(2), …, d(k-1), d(k), d(k+1), …,d(n)},则d(k)就被称为k距离。也就是说,k距离是点p(i)到所有点(除了p(i)点)之间距离第k近的距离。对待聚类集合中每个点p(i)都计算k距离,最后得到所有点的k距离集合E={e(1), e(2), …, e(n)}。
  • 4.根据经验计算半径Eps:根据得到的所有点的k距离集合E,对集合E进行升序排序后得到k距离集合E’,需要拟合一条排序后的E’集合中k距离的变化曲线图,然后绘出曲线,通过观察,将急剧发生变化的位置所对应的k距离的值,确定为半径Eps的值。
  • 5.根据经验计算最少点的数量MinPts:确定MinPts的大小,实际上也是确定k距离中k的值,DBSCAN算法取k=4,则MinPts=4。
  • 6.另外,如果觉得经验值聚类的结果不满意,可以适当调整Eps和MinPts的值,经过多次迭代计算对比,选择最合适的参数值。可以看出,如果MinPts不变,Eps取得值过大,会导致大多数点都聚到同一个簇中,Eps过小,会导致一个簇的分裂;如果Eps不变,MinPts的值取得过大,会导致同一个簇中点被标记为离群点,MinPts过小,会导致发现大量的核心点。

我们需要知道的是,DBSCAN算法,需要输入2个参数,这两个参数的计算都来自经验知识。半径Eps的计算依赖于计算k距离,DBSCAN取k=4,也就是设置MinPts=4,然后需要根据k距离曲线,根据经验观察找到合适的半径Eps的值。

6. 算法过程描述:

输入:样本集D=(x1,x2,…,xm),邻域参数(ϵ,MinPts), 样本距离度量方式;
输出: 簇划分C. 

7. 小结:

  • 和传统的K-Means算法相比,DBSCAN最大的不同就是不需要输入类别数k,当然它最大的优势是可以发现任意形状的聚类簇,而不是像K-Means,一般仅仅使用于凸的样本集聚类。同时它在聚类的同时还可以找出异常点,这点和BIRCH算法类似。
  • 那么我们什么时候需要用DBSCAN来聚类呢?一般来说,如果数据集是稠密的,并且数据集不是凸的,那么用DBSCAN会比K-Means聚类效果好很多。如果数据集不是稠密的,则不推荐用DBSCAN来聚类。
  1. DBSCAN的主要优点有:
    1) 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
    2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
    3) 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
  2. DBSCAN的主要缺点有:
    1)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
    2) 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
    3) 调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。

DBSCAN 聚类算法详解相关推荐

  1. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  2. 聚类 python_python中实现k-means聚类算法详解

    算法优缺点: 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近 ...

  3. 谱聚类算法详解及代码实现

    谱聚类算法详解及代码实现 文章目录 谱聚类算法详解及代码实现 参考 关于谱聚类介绍 谱聚类概述 谱聚类前置知识 无向权重图 邻接矩阵 度矩阵 拉普拉斯矩阵 相似度矩阵 确定目标函数 初始化目标函数(最 ...

  4. kmeans聚类算法matlab_KMeans聚类算法详解

    "如果把人工智能比作一块大蛋糕,监督学习只是上面的一层奶油". 日常生活中,从人脸识别.语音识别到搜索引擎,我们看到越来越多人工智能领域的算法逐渐走向落地.尽管全球每日新增数据量以 ...

  5. 聚类算法详解——深度AI科普团队

    聚类是一种无监督的学习,它将相似的对象归到同一个簇中.它有点像全自动分类.聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好. K-均值聚类算法 基本概念: 簇:假定有一些数据,现在将相 ...

  6. kmeans算法_KMeans聚类算法详解

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  7. FCM聚类算法详解(Python实现iris数据集)

    参考:https://blog.csdn.net/on2way/article/details/47087201 模糊C均值(Fuzzy C-means)算法简称FCM算法,是一种基于目标函数的模糊聚 ...

  8. Kmeans聚类算法详解

    1. 前言 作为无监督聚类算法中的代表--K均值聚类(Kmeans)算法,该算法的主要作用是将相似的样本自动归到一个类别中.所谓的监督算法,就是输入样本没有对应的输出或标签.聚类(clustering ...

  9. K-means聚类算法详解

    K-means也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般.最早我使用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用.看了Andrew Ng的这个讲义后才有些明白K- ...

  10. spectral-cluster聚类算法详解

    欢迎关注"生信修炼手册"! spectral clustering,称之为谱聚类算法,和近邻传播AP算法一样,也是基于图论的算法,都是将样本点两两相连,构成图这一数据结构,不同的是 ...

最新文章

  1. 测试MM32F3277中的MicroPython的Signal功能
  2. How to change windows applicatioin's position via Win32 API
  3. 设计模式 -行为型模式_ 观察者模式Observer Pattern 之 JDK内置的实现
  4. 你不可不知的30个项目管理术语(中英文对照)
  5. 查询分析300万笔记录_一分钟狂销100万件商品!Shopee虾皮双12大促再创记录
  6. Windows下访问VirtualBox的mysql服务
  7. python函数的作用降低编程复杂度_Python函数式编程
  8. C++ 解析Json
  9. mysql数据操作-数据库的定义-DLL
  10. idea中配置maven仓库
  11. iPhone 12在二季度iPhone出货量中占63% 低于iPhone 11同期
  12. PHP Curl 多线程实现
  13. windows系统的启动工作原理
  14. 彻底卸载删除微软Win10易升方法
  15. js获取非行间样式(兼容ie和标准浏览器)
  16. 前端速成:双月Java之旅(week3)_day2
  17. OSChina 周三乱弹 —— 谈什么对象?睡什么觉?
  18. 国外java_Java开发必知道的国外10大网站
  19. 快牛智能凉经(数据挖掘日常实习)
  20. 京东口罩到货,邮件实时通知

热门文章

  1. 电子管:6J1基本特性文献调研
  2. 基于stm32风力摆控制系统(电赛获得省一)
  3. 小熊派·叔BearPi-HM Micro环境搭建(双系统)
  4. 如何使用Bootbox
  5. 【今年年会,你中奖了吗?】在线抽奖活动中如何实现中奖概率的自适应调整...
  6. java毕业生设计大学生旅游拼团网站计算机源码+系统+mysql+调试部署+lw
  7. 魅族Android版本,魅族Flyme安卓版本
  8. 移动端字体小于12px的解决方案
  9. 美团/饿了么外卖红包小程序源码
  10. 阵列卡直通模式和raid模式_服务器通过RAID也可以在线扩容?学会这些,你也可以...