1 DBSCAN算法概述
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个出现得比较早(1996年),比较有代表性的基于密度的聚类算法。算法的主要目标是相比基于划分的聚类方法和层次聚类方法,需要更少的领域知识来确定输入参数;发现任意形状的聚簇;在大规模数据库上更好的效率。DBSCAN能够将足够高密度的区域划分成簇,并能在具有噪声的空间数据库中发现任意形状的簇。

2 一些基本概念
[公式]邻域:对任意一个点p,其[公式]邻域定义为:[公式]。
密度:设[公式],则[公式]为[公式]的密度。
核心点:设[公式],若[公式],则称[公式]为[公式]中的中心点,中心点构成的集合为[公式]。
边界点:设[公式],且[公式]落在某个核心点的[公式]邻域内。一个边界点可能落在多个核心点的[公式]邻域内。
直接密度可达:设[公式],若满足[公式]且[公式],则称[公式]从[公式]直接密度可达。
密度可达:假设存在一串点[公式],使得[公式]从[公式]是直接密度可达的,那么就认为[公式]从[公式]密度可达。
密度相连:假设存在点[公式],其中[公式]均从[公式]密度可达,那么[公式]和[公式]密度相连。密度相连具有对称性。
类簇:设非空集合[公式],若满足:[公式],
(1)[公式],且[公式]从[公式]密度可达,那么[公式]。
(2)[公式]和[公式]密度相连。
则称[公式]构成一个类簇。

3 算法过程描述
DBSCAN的核心思想是从某个核心点出发,不断向密度可达的区域扩张,从而得到一个包含核心点和边界点的最大化区域,区域中任意两点密度相连。
算法流程(伪代码)如下:

DBSCAN(D, eps, MinPts)
C = 0
for each unvisited point P in dataset D
mark P as visited
NeighborPts = regionQuery(P, eps) //计算这个点的邻域
if sizeof(NeighborPts) < MinPts
mark P as NOISE
else
C = next cluster //作为核心点,根据该点创建一个新类簇
expandCluster(P, NeighborPts, C, eps, MinPts) //根据该核心点扩展类别

expandCluster(P, NeighborPts, C, eps, MinPts)
add P to cluster C //扩展类别,核心点先加入
for each point P’ in NeighborPts
if P’ is not visited
mark P’ as visited
NeighborPts’ = regionQuery(P’, eps) //如果该点为核心点,则扩充该类别
if sizeof(NeighborPts’) >= MinPts
NeighborPts = NeighborPts joined with NeighborPts’
if P’ is not yet member of any cluster //如果邻域内点不是核心点,并且无类别,比如噪音数据,则加入此类别
add P’ to cluster C

regionQuery(P, eps) //计算点P的邻域
return all points within P’s eps-neighborhood
这里的regionQuery函数的作用计算点的邻域,是比较耗费时间的操作,不进行任何优化时,算法的时间复杂度是[公式],通常可利用R-tree,k-d tree, ball tree索引来加速计算,将算法的时间复杂度降为[公式]。
4 算法优缺点
缺点:DBSCAN使用了统一的[公式]邻域值和[公式]值,在类中的数据分布密度不均匀时,[公式]较小时,密度小的cluster会被划分成多个性质相似的cluster;[公式]较大时,会使得距离较近且密度较大的cluster被合并成一个cluster。在高维数据时,因为维数灾难问题,[公式]的选取比较困难。
优点:能发现任意形状的聚簇,聚类结果几乎不依赖于结点遍历顺序,能够有效的发现噪声点。
下面是Kmeans和DBSCAN的聚类效果比较图(聚类使用的R语言fpc包,绘图使用ggplot2包):
Kmeans(Clusters=2)

DBSCAN(eps=0.4)

DBSCAN(eps=0.8)

从后两幅图就可看出,[公式]的取值对聚类效果的影响很大。

聚类算法-密度聚类算法DBSCAN相关推荐

  1. K-Means算法、层次聚类、密度聚类及谱聚类方法详述

    1.聚类算法概述 (1)什么是聚类? 聚类就是对大量未知标注的数据集,按照数据内部存在的数据特征将数据集划分为多个不同的类别,使类别内的数据比较相似,类别之间的数据相似度比较小,属于无监督学习. 聚类 ...

  2. 密度聚类、密度聚类过程、OPTICS算法

    密度聚类.密度聚类过程.OPTICS算法 目录 密度聚类.密度聚类过程.OPTICS算法 密度聚类 密度聚类过程 OPTICS算法

  3. 【进阶版】 机器学习之K均值聚类、层次聚类、密度聚类、实战项目含代码(15)

    目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 项目要求 数据透视 代码实战 维度太多,利用PCA降维的思想进 ...

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

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

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

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

  6. 关于距离,K-means,层次聚类,密度聚类以及谱聚类

    目录 相似度/距离 k-Means算法 衡量聚类(轮廓系数) 层次聚类 密度聚类 谱聚类 之前博客中讲的模型基本上都是分类以及回归模型,他们都是属于有监督学习的,意为所有的样本都有一个结果值提供,我们 ...

  7. k-means聚类,密度聚类,层次聚类优缺点

    k-means: 优点: 1,简单,易于理解和实现: 2,时间复杂度低 缺点: 1,需要对均值给出定义, 2,需要指定要聚类的数目: 3,一些过大的异常值会带来很大影响: 4,算法对初始选值敏感: 5 ...

  8. R语言 均值聚类、中心聚类、系谱聚类、密度聚类、最大期望聚类

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 R版本:v_3.6.1 主要讲述5类聚类: K-means聚类 K-中心聚类 系谱聚类 密度聚类 EM聚类 5种聚类的应用实例以及详细的参数说 ...

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

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

  10. 20150915密度聚类

    1. 密度聚类思想 密度聚类思想是,只要一个区域中的点的密度大于某个阈值,就把他加到与之相近的聚类中去. 优点:能对任意形状聚类,对噪声不敏感. 缺点:计算密度单元的复杂度大,可以提前建立空间索引降低 ...

最新文章

  1. 树莓派4外置wifi天线_树莓派打造最强车载娱乐终端(1)音乐和WiFi
  2. JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀
  3. 怀念 儿时课本贴图,你还记得课文名吗
  4. 二分图 crf的军训
  5. 微量元素与中医药 谋定·大健康医药-李喜贵:辩证研究病理变化
  6. 页面传值:属性,协议,Block传值
  7. api 请求 fail_谈一谈定位api的使用
  8. ASP.Net Core2.1中的HttpClientFactory系列一
  9. 【软件测试】结构化分支和循环语句的白盒测试
  10. OPPO沈义人官宣Reno首批配色:雾海绿、薄雾粉、极夜黑、星云紫
  11. 微软直播马上开始,近百岗位等你来,快戳进直播间
  12. Arduino DY-SV17F自动语音播报
  13. STM32教程(库函数版):STM32库函数开发实例教程
  14. 三菱FX5U和变频器走485通讯连接,程序是FB块写好的,硬件一样可以直接调用
  15. 【CUDA】解决NVIDIA安装程序失败问题
  16. go 语言最详细的入门教程
  17. 蓝牙软件测试指标,蓝牙测试简介
  18. 解三元一次方程组的计算机,解三元一次方程组
  19. maven 配置多个仓库
  20. 活用async/await,实现一些让Vue更好用的装饰器

热门文章

  1. LintCode Memcache
  2. 常见sql注入语句和xss注入语句
  3. YDOOK: USB 转 TTL 串口模块接线图
  4. 智慧监狱人员定位系统,监狱防拆手环功能介绍
  5. 2020-12-30 PMP 群内练习题 - 光环
  6. 个人号微信API接口
  7. 个人微信api接口调用-转账发红包
  8. 教你如何保存有妖气漫画
  9. 2、金字塔原理:思考的逻辑(6-7)-阅读笔记
  10. eml文件可以转换为html,eml格式转换成word eml文件转换word