【机器学习基础】DBSCAN

🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学!
特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!
💡往期推荐
【机器学习基础】机器学习入门(1)
【机器学习基础】机器学习入门(2)
【机器学习基础】机器学习的基本术语
【机器学习基础】机器学习的模型评估(评估方法及性能度量原理及主要公式)
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】对数几率回归(logistic回归)
【机器学习基础】正则化
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
💡本期内容:紧接着上一篇介绍的K-Means聚类,本篇文章针对原型聚类的缺点,介绍了密度聚类DBSCAN,丰富了无监督学习的内容介绍。


文章目录

  • 1 DBSCAN发展状况
  • 2 DBSCAN算法的基本概念
  • 3 DBSCAN参数设置
  • 4 DBSCAN算法的核心思想
  • 5 DBSCAN伪代码描述
  • 6 DBSCAN的优缺点


1 DBSCAN发展状况

目前,人们提出的聚类算法主要分为五种类型:划分法、层次法、基于模型的算法、基于密度的算法和基于网格的算法。基于密度的聚类算法是以出格合适对不确定命据集举行聚类,不用计较各种各样的距离,而是基于密度,就可以迅速的完成样本集的聚类。基于密度的聚类方式在数据识别、数据分析、图象处置、网络安全等范畴有着普遍的利用,是以,关于基于密度聚类算法的钻研有着普遍的现实和现实意义。

基于密度的经典代表算法主要有两种:DBSCAN和OPTIC。针对这两种经典的算法,学术界展开了大量的讨论。DBSCAN于1996年由Ester等提出,DBSCAN算法它不仅可以对高密度区域进行聚类划分,还可以对低密度区域进行过滤,最终在噪声数据集中得到任意形状的簇。同时,DBSCAN也存在一些很明显的缺点,使用DBSCAN必须先确定Eps和MinPts这两种参数。因为DBSCAN算法对这两种参数感应较高,一旦取值不当就会影响聚集效果。OPTIC是1996年Ankerst等提出来的,是对DBSCAN算法的一大改进。


2 DBSCAN算法的基本概念

在这里插入图片描述

DBCSAN是密度聚类中最为经典的一种算法,这种算法不需要提前设置制定聚类数量,但是对于用户设置的eps和minpts参数的数值波动较大。能够有效地识别噪声点。对于样本集,它既可以应用于凸样本集,同样也可以被非凸样本集所利用。这类聚类算法是通过数据集密度的紧密程度来进行划分的,但当采样区域密度不均匀,组间距离相差很大时,算法组的效果会很差。同一类型的图案是紧密相连的,应在离类型外围不远的地方提供相同类型的样品。最后,将每一组紧密相连的样本分为不同的类别,产生聚类效应。


3 DBSCAN参数设置

DBSCAN涉及的参数和关系较多并且受参数设置的影响较大,有两个算法参数:邻域半径eps和最少点数目minpts,3种点的类别:核心点,边界点和噪声点,4种点的关系:密度直达,密度可达,密度相连,非密度相连。

  1. E邻域:对于给定一个对象,如果它与点的距离小于等于eps则称该邻域是是该对象的E邻域。E邻域是用户主观选择的,eps的值限制着核心点的搜索范围。
  2. 核心对象:对于给定的对象时,如果样品中的对象E邻域的附近的数目是大于或等于minpts值,称为核心目的是给定对象。
  3. 直接密度可达:在一个样本集里,如果一个对象点m是核心对象,另一个对象n点在该对象m的邻域半径里,那么则称样本点n从样本点m直接密度可达。
  4. 密度相连:对于对象m和对象n,如果有核心对象o,使得数据对象m和对象n均从o密度可达,那么则称对象m和对象n密度相连。
  5. 密度聚类簇:在一个给定数据集中,对于一个核心点与他密度可达的所有点组成一个密度聚类簇。
  6. 噪声:在一个数据集中,如果一个点在聚类结果上不属于任何一个聚类簇,那么则称该点为噪声。
  7. 核心点:如果一个边界点在某个核心对象的邻域内,并且该点不是核心对象那么该点是核心点。
    在实验实际操作中, DBSCAN有三个输入数据:数据集、邻域半径eps、最少点数值minpts,DBSCAN受半径eps和最少点数值minpts数值波动较大,并且是用户根据实际操作情况认为设置的。

在这里插入图片描述


4 DBSCAN算法的核心思想

从以上的叙述中我们可以看出,其基本思想与广度优先搜索思想类似,主要受eps和minpts数值的影响。

  • 它从一个随机的没有经过访问的一个对象点开始进行搜索,并检查对象点的E邻域是否含有至少minpts个对象,如果它附近点的数量少于minpts,那么该点将会暂时标记为噪声点,如果附近点的数目大于等于minpts,那么该对象点会创建一个新的簇,并将把该点和它的E邻域内的所有对象全部放入列为候选集合。

  • 而后,这些核心对像会被该算法迭代的聚集,并把这些核心对想中直接必读可达的对象添加到新的簇中,随后检索被添加对象的e邻域是否包含minpts个对象,并重复上述操作,直到簇不能再扩展或者候选集合为空,输出,在这个过程中会牵扯密度可达簇的聚集。

  • 在完成收集集群后,将DBSCAN然后从对象的其余部分选择随机对象尚未访问和聚类过程。直到所有的对象都已经分配。

在这里插入图片描述

DBSCAN还有一个特点如果一个点不是一个簇的噪声并且该点的附近点少于minpts数值,那么该点被标记为不属于任何簇的噪声点。噪声点被识别为选择对象过程的一部分,如果特定的对象点没有足够的附近点,则将其标记为噪声点。


5 DBSCAN伪代码描述

在这里插入图片描述


6 DBSCAN的优缺点

  • 优点:
  1. DBSCAN与k-means划分聚类算法相比,DBSCAN能够处理任何形态的类,而k-means只能处理凸型的类;DBSCAN不需要自己划分聚类簇的情况,k-means需要在算法执行前进行各种参数的设置。
  2. DBSCAN可以有效地识别和剔除噪声,并且可以在根据实验需要输入过滤噪声的参数。
  3. 对于样本集中的异常点不敏感
  • 缺点:
  1. 从DBSCAN运行的情况来看,主要确定邻域半径eps和邻域样本数阈值minpts,可以看出算法对eps和minpts这两个由用户确定的参数非常敏感,主要是由于带有很大的主观性。确定eps和minpts非常复杂,一旦取值不好,就会对聚类效果产生不好的影响,造成聚类质量下降甚至无法进行工作
    当minpts取值一定时,如果eps数值设置的较小,会产生大量的离群点,大部分数据都不能进行聚类,如果设置的数值较大,大部分数值和类都会聚类到同一个簇,在簇得中心会出现一个空洞;
    当eps取值一定时,如果minpts的值太大,集群中的点会被标记为离群点,如果值太小,会导致产生大量的核心点。所以eps和minpts的取值搭配不同,就会产生不同的聚类效果。
  2. DBSCAN是基于密度聚类算法,从实验结果来看,当空间聚类的密度不均匀、聚类间隔差别很大时,数据集不能很好地产生簇,就会造成聚类效果质量下降
  3. 当DBSCAN处理较大的数据库的时候,核心对象不断地添加同时没有被访问的对象就会停留在内存中,如果内存过小,就会造成内存的拥堵,这就需要大量的内存来支持程序的执行,来储存核心对象的信息,并且i/o消耗也很大;对于DBSCAN和整个样本集只采用了邻域半径eps和邻域样本数阈值minpts一组参数。如果样本集中存在不同密度的簇或者嵌套簇,那么DBSCAN 算法不能很好地处理这种情况
  4. DBSCAN算法可以有效地识别和剔除噪声,这既是它的一大优点,同时也是它的一大缺点,这就造成了DBSCAN不适用于网络安全等领域的问题
  5. 由于算法邻域半径eps的选取需要用到距离公式的选取,在实际操作中经常用到k-距离曲线方法,对于DBSCAN处理高维度的数据,就会造成运算困难,存在“维度灾难”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++_string类

目录 一、string的模拟实现 1、初始化字符串 2、拷贝构造 3、赋值重载 4、迭代器 5、比较字符串 6、尾插字符、字符串 7、resize 8、中间插入数据、删除数据 8.1 插入数据 8.2 删除数据 9、查找数据 10、打印对象(流插入、流提取) 结语&a…

centos7部署minio单机版

一、目标 在centos7上部署minio单机版 二、centos7部署minio 1、下载minio mkdir /usr/local/minio cd /usr/local/minio wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod x minio 2、新建minio存储数据的目录 mkdir -p /data/minio/data3、新建…

ASP.NETCore WebAPI 入门 杨中科

ASP.NETCore WebAPI入门1 回顾 mvc开发模式 前端代码和后端代码是混在一个项目之中 WEB API 1、什么是结构化的Http接口。Json。 2、Web API项目的搭建。 3、Web API项目没有Views文件夹。 4、运行项目,解读代码结构。 5、【启用OpenAPI支持】→>swagger,在界…

Spring的IOC解决程序耦合

目录 1.配置项目 1.1配置pom.xml 1.2Spring常用功能的Jar包依赖关系 1.3简单代码 2.IOC 2.1.applicationContext.xml 2.2.测试 3.DI 3.1概述 3.2.构造函数注入 3.3set方法注入 3.4自动注入 3.5注入集合类型的属性 1.配置项目 1.1配置pom.xml <?xml version&…

【算法每日一练]-动态规划(保姆级教程 篇14) #三倍经验 #散步 #异或和 #抽奖概率

目录 今日知识点&#xff1a; 金字塔的正反dp两种方案&#xff0c;转移方程取决于dp的具体含义 取模实现循环走m步回到原点的方案 在统计上升子序列的时候使用最小结尾元素进行标记&#xff0c;一举两得 将亏本的概率转换各种情况的方案&#xff0c;然后统计亏本的情况的方…

数字孪生技术详解

在线工具推荐&#xff1a;3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 数字孪生技术正在迅速彻底改变企业的运营方式。借助数字孪生技术&#xff0c…

【Nginx】在线安装与离线安装

目录 1、下载nginx news 1.2、 安装包 2、 在线安装 第一步&#xff0c;安装pcre 第二步&#xff0c;安装openssl 、zlib 、 gcc 依赖 第三步&#xff0c;安装nginx 第四步&#xff0c;关闭防火墙&#xff0c;访问nginx ​编辑 3、 离线安装 第一步 安装pcre 第二步…

【KingbaseES】实现MySql函数Median

本方法只支持在聚合函数窗口中调用 不支持在GROUP BY中使用&#xff0c;使用plsql写的玩意新能都会稍微差一些 建议使用原生方法修改 CREATE OR REPLACE FUNCTION _final_median(numeric[])RETURNS numeric AS $$SELECT AVG(val)FROM (SELECT valFROM unnest($1) valORDER BY …

vue中动态出来返回的时间秒数,在多少范围显示多少秒,多少范围显示分,小时等等

在Vue中&#xff0c;你可以使用计算属性&#xff08;computed property&#xff09;或过滤器&#xff08;filter&#xff09;来根据动态返回的时间秒数来显示不同的时间单位&#xff0c;比如秒、分、小时等等。 下面是一个使用计算属性的示例&#xff1a; <template>&l…

【Python小游戏】消消乐丨喜羊羊与灰太狼(完整代码)

文章目录 写在前面喜羊羊与灰太狼PyGame入门消消乐注意事项写在后面写在前面 本期内容:基于pygame实现喜羊羊与灰太狼版消消乐小游戏 实验环境 python3.11及以上pycharmpygame安装pygame的命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame喜羊羊与灰…

毛虫目标检测数据集VOC格式550张

毛虫&#xff0c;一种令人惊叹的生物&#xff0c;以其独特的外貌和习性&#xff0c;成为了自然界中的一道亮丽风景。 毛虫的外观非常特别&#xff0c;身体呈圆柱形&#xff0c;表面覆盖着许多细小的毛发&#xff0c;这使得它们在叶子上伪装得非常好。它们的头部有一对坚硬的颚…

select for update会锁表还是行锁还是其它

select for update含义 select查询语句是不会加锁的&#xff0c;但是 select for update除了有查询的作用外&#xff0c;还会加锁呢&#xff0c;而且它是悲观锁哦。至于加了是行锁还是表锁&#xff0c;这就要看是不是用了索引/主键啦。 没用索引/主键的话就是表锁&#xff0c…

SpringCloud-高级篇(十)

&#xff08;1&#xff09;单节点Redis问题 缓存大家都不陌生&#xff0c;在企业里面只要做缓存都会用到Redis&#xff0c;我们在使用的时候都是做的单节点部署&#xff0c;单节点部署是存在一些问题的&#xff0c;分布式缓存正是Redis的集群&#xff0c;正是为了解决单节点部署…

大数据毕业设计:租房推荐系统 python 租房大数据 爬虫+可视化大屏 计算机毕业设计(附源码+文档)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

广播及代码实现

广播&#xff08;Broadcast&#xff09;是一种网络通信方式&#xff0c;它允许一台设备向网络中的所有其他设备发送消息。广播通常用于在网络上传递一些信息&#xff0c;让所有设备都能接收并处理。在广播中&#xff0c;通信的目标是整个网络而不是特定的单个设备。 向子网中…

【JAVA】Java 中 Set集合常用方法

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 常用方法 代码示例 结语 我的其他博客 前言 Java中的Set接口提供了一种不允许包含重复元素的集合。常用的实现类有HashS…

把苹果手机上的备忘录转为长图片,分享给别人方法教程

在这个信息爆炸的时代&#xff0c;手机备忘录几乎成了我随身携带的“记忆宝库”。每当我脑海中闪现出一个想法、灵感或是需要记住的重要事项&#xff0c;我都会第一时间打开苹果手机的备忘录&#xff0c;将它们一一记录下来。备忘录的简洁界面和高效操作总能让我在忙碌的生活中…

正负样本分配策略simOTA

simOTA是YOLOX中提出的 正负样本分配策略&#xff08;OTA, SimOTA&#xff0c;TAS&#xff09; OTA源于2021年cvpr的论文&#xff0c;使训练和验证的标签有着更好的对应关系。 yolov5没有用到&#xff0c;只有一种loss&#xff1a; from utils.loss import ComputeLoss comput…

线性代数-第五课,第六课,第七课,第八课

第五课 判断某向量是否可由某向量组线性表示 把向量组组成一个行列式&#xff0c;计算行列式的秩 把所有向量放在一起构成一个行列式&#xff0c;计算行列式的秩 如果两个行列式的秩相等&#xff0c;表示可以线性表示&#xff0c;写答案的格式如下 线性表示&#xff1a;bk…

大模型应用实践:AIGC探索之旅

随着OpenAI推出ChatGPT&#xff0c;AIGC迎来了前所未有的发展机遇。大模型技术已经不仅仅是技术趋势&#xff0c;而是深刻地塑造着我们交流、工作和思考的方式。 本文介绍了笔者理解的大模型和AIGC的密切联系&#xff0c;从历史沿革到实际应用案例&#xff0c;再到面临的技术挑…