密度聚类( DBSCAN

密度聚类的思想是不同于K-Means的,但是更符合我们人类的思维,基本的思想是通过是否紧密相连来判断样本点是否属于一个簇。代表性的算法就是DBSCAN,它基于一组邻域参数 (ϵ,MinPts)来表征某处样本是否是紧密的。在介绍算法之前先介绍一些概念。

ϵ-邻域: 即对于样本点,和它的距离在ϵ之内的属于样本集D中的点的集合,即

核心对象 :若的ϵ-邻域至少包含MinPts个样本,即Count(Nϵ(xj)) ≥ MinPts,那么是一个核心对象。其实也就是在核心对象周围的点相对邻域参数来说是致密的。

密度直达与可达 :直达的意思是点Xj位于点Xi的ϵ-邻域中。可达的意思是存在这么一个样本序列P1,P2⋯,Pn。Xj到P1是直达的,P1到P2是直达的,就这样不断地借着这些样本作为"跳板",xi可以间接地"跳到"xj。

密度相连 :对于样本点Xj和Xi,若存在点Xk使得Xi和Xj均可由Xk密度可达,则称和密度相连。

最后由DBSCAN所定义的簇的概念为: 由密度可达关系导出的最大的密度相连样本集合。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZV2m2PQC-1632836887190)(RackMultipart20210928-4-1njya98_html_8ab3aec6a46d795a.png)]下图为DBSCAN的一个结果示意图

1 DBSCAN 算法结果

如图算法自动将数据集分成了3簇,用三种颜色代表。每一簇内较大的点代表核心对象,较小的点代表边界点(该点与簇内其他点密度相连,但是自身不是核心对象)。黑色的点代表离群点或者叫噪声点。

另外从最上面的图也能够看出DBSCAN的表现还是很不错的。

下面是DBSCAN的基本算法步骤:

其实周志华老师的书《机器学习》上对算法的描述更清晰,感兴趣的可以去看看。

这里提一个我的想法,我在看算法的时候就觉得这个算法有点眼熟,后来想起来发现跟广度优先搜索有点像,再想想发现DBSCAN的思路就是和广度优先很想。比如密度直连的两个点之间可以看作这两个点相连,密度可达可以看作两个点之间存在一条路径,找出所有的簇就可以看作找出整个图中的连通分量。另外在数据结构上DBSCAN和广度优先都使用了队列来储存访问到的点。只是由(ϵ,MinPts)来确定两个点是否相连。以上提供一个视角以供参考。

DBSCAN的优点:

(1)可以解决数据分布特殊(非凸, 互相包络,长条形等)的情况

(2)对于噪声不敏感

(3)速度较快,可适用于较大的数据集

(4)在邻域参数(ϵ,MinPts)(ϵ,MinPts)给定的情况下,结果是确定的,只要数据进入算法的顺序不变,与初始值无关,这里就和KMeans不同

(5)不需要指定簇的个数

缺点:

(1)簇之间密度差距过大时效果不好,因为对整个数据集我们使用的是一组邻域参数

(2)数据集较大的时候很消耗内存,目前在scikit-learn中已经可以使用ball-trees 和 kd-trees来确定邻居点(可以看出找出点的邻域内有几个点是DBSCAN最基本,最多的操作),但是在默认情况下是不使用他们的,而是使用很消耗内存的距离矩阵。

N最基本,最多的操作),但是在默认情况下是不使用他们的,而是使用很消耗内存的距离矩阵。

(3)对于高维数据距离的计算会比较麻烦,造成"维数灾难"

密度聚类( DBSCAN )相关推荐

  1. 【Python-ML】SKlearn库密度聚类DBSCAN模型

    # -*- coding: utf-8 -*- ''' Created on 2018年1月25日 @author: Jason.F @summary: 无监督聚类学习-基于密度 空间的聚类算法(De ...

  2. Python基于聚类算法实现密度聚类(DBSCAN)计算

    本文实例讲述了Python基于聚类算法实现密度聚类(DBSCAN)计算.分享给大家供大家参考,具体如下: 算法思想 基于密度的聚类算法从样本密度的角度考察样本之间的可连接性,并基于可连接样本不断扩展聚 ...

  3. dbscan聚类算法matlab_密度聚类DBSCAN、HDBSCAN(转)

    # 密度聚类DBSCAN.HDBSCAN DBSCAN DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声 ...

  4. (十八)密度聚类DBSCAN

    密度聚类DBSCAN DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法) 是一种很典型 ...

  5. 密度聚类 DBSCAN python实现

    python代码例子参考另一篇博客: https://blog.csdn.net/jacke121/article/details/117736855 一.前言 二.DBSCAN聚类算法 三.参数选择 ...

  6. 聚类算法_层次聚类_密度聚类(dbscan,meanshift)_划分聚类(Kmeans)详解

    注: 两整天的成果,谬误之处勿喷 1 聚类概述 样本 没有训练的样本 没有标注的样本 1.1 相似度度量 1.1.1 距离相似度度量 距离度量 dist(oi,oj)dist(o_{i},o_{j}) ...

  7. 聚类分析:原型K-Means/K-Means++聚类、层次聚类;密度聚类DBSCAN

    聚类分析–处理无标签数据 from IPython.display import Image %matplotlib inline 1.使用K-Means方法按照相似度对对象进行分组 1.1使用skl ...

  8. 机器学习强基计划7-5:图文详解密度聚类DBSCAN算法(附Python实现)

    目录 0 写在前面 1 密度聚类 2 DBSCAN算法 3 Python实现 3.1 算法复现 3.2 可视化实验 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用.&qu ...

  9. 【机器学习】使用scikitLearn对数据进行聚类:Kmeans聚类算法的应用及密度聚类DBSCAN

    无监督学习: [机器学习]使用scikitLearn对数据进行聚类:Kmeans聚类算法及聚类效果评估 [机器学习]使用scikitLearn对数据进行聚类:高斯聚类GaussianMixture [ ...

  10. 机器学习知识点(十八)密度聚类DBSCAN算法Java实现

    为更好理解聚类算法,从网上找现成代码来理解,发现了一个Java自身的ML库,链接:http://java-ml.sourceforge.net/ 有兴趣可以下载来看看源码,理解基础ML算法.对于DBS ...

最新文章

  1. Ajax异步调用Web服务的例子
  2. 联想计算机农村,农村的联想
  3. Graph Search图谱搜索
  4. [转]项目经理面试指南
  5. 字符串中统计单词个数
  6. css3中clip属性
  7. 兰州大学计算机调剂2020,兰州大学2020考研调剂公告
  8. 二分法在生活中的一次应用
  9. html,htm,jhtml
  10. div加载异步加载html,初始化页面,异步加载组件的问题
  11. 【Python脚本进阶】2.4、conficker蠕虫(下):暴破口令,远程执行进程
  12. python|cookie和session介绍——以12306验证码破解
  13. Houdini 地形知识点
  14. 【中医学】11 常见病证-3:虚劳:月经不调:痛经:崩漏:带下:痄腮:疳症:湿疹:肠痈...
  15. maven-publish插件的使用笔记
  16. 了解Xcelsius2008系统
  17. 真牛,大神将Windows 10改造成Windows XP(EXPERIENCE Freestyle)
  18. Ubuntu系统没有声音解决方案
  19. 关于任天堂,你不了解的9件事
  20. 任天堂服务器维护12月1,任天堂明星大乱斗12月14日更新公告 1.2.0更新补丁说明...

热门文章

  1. Win10 CMD命令大全 命令提示符常用命令有哪些
  2. 轨道客流预测TransCAD公交分配结果详解
  3. Layui 个人博客网站源码 (带运行文档)
  4. 军用计算机通用规范测试试验,军用装备环境可靠性试验项目表
  5. 考研--线性代数辅导讲义(第一章行列式 第二章矩阵)
  6. 【matlab】多维向量的转置
  7. 手把手教你实现——Python文字(汉字)转语音教程,举一反三~
  8. win10 安装 HP LaserJet P1108 教程
  9. qqkey获取原理_qqkey获取器下载
  10. 这届抢票软件为什么不行?