一文弄懂DBSCAN聚类算法

news2025/1/21 0:53:21

1.引言

今天,我们将讨论另一种聚类算法 DBSCAN(基于密度的带噪声应用空间聚类)。为了更好地理解 DBSCAN,请先阅读之前介绍的 K-Means分层聚类这两篇文章。

顾名思义,DBSCAN 是通过点的密度来识别聚类集群。聚类通常位于高密度区域,而异常值往往位于低密度区域。使用该算法的 3个主要优势(根据该算法的先驱者的说法)是:它只需要最少的领域知识,可以发现任意形状的聚类,并且对于大型数据库来说非常高效。

闲话少说,我们直接开始吧!

2. 确定核心样本点

既然已经介绍完了相关定义,我们就开始进入有趣的部分–实际了解它是如何工作的。假设我们的原始数据是这样的:
在这里插入图片描述

首先要做的是计算与每个点接近的点的数量。我们可以通过在一个点周围画一个半径(eps)为一定的圆来确定这个点的接近程度,在这个圆内的任何其他点都可以说是接近第一个点。例如,从这个粉红色的点开始,围绕它画一个圆。

在这里插入图片描述

我们看到,这个点与其他 7 个点完全或部分重叠。因此,我们可以说,粉红点与 7 个点很接近。

圆的半径称为eps,是 DSBCAN算法中我们需要定义的第一个参数。我们需要适当地定义eps,因为如果我们选择的值太小,很大一部分数据将无法聚类。另一方面,如果我们选择的值过大,聚类就会合并,很多数据点就会在同一个聚类中。一般来说,eps值越小越好。

现在来看看这个蓝色的点。我们看到它与 3 个点很接近,因为其半径为 eps 的圆与其他 3 个点重叠。
在这里插入图片描述

同样,对于所有剩余的点,我们要计算接近的点数。这样,我们就需要确定哪些点是核心点,哪些点是非核心点。

这就是我们算法的第二个参数minPoints的作用所在。我们使用 minPoints 来确定一个点是否是核心点。假设我们将minPoints 设为 4,那么如果至少有 4 个点靠近该点,我们就可以说该点是核心点。如果某点附近的点少于 4 个,则该点被视为非核心点。

一般来说,minPoints ≥ 数据集的维数 + 1。对于有噪声的数据集来说,较大的值通常更好。minPoints 的最小值必须是3,但数据集越大,minPoints 值就必须越大。 在我们的示例中,让我们将 minPoints 设置为4。

这样,我们就可以说粉色点是一个核心点,因为至少有 4 个点靠近它,而蓝色点是一个非核心点,因为只有 3 个点靠近它。

最终,通过重复上述过程,我们可以确定以下突出要点为核心样本点,剩下的是非核心样本点。

在这里插入图片描述

3.划分群组

接着,我们随机选择一个核心样本点,并将其分配到第一个群组集群。在这里,我们随机选取一个点,并将其分配到蓝色群组。

在这里插入图片描述

接下来是靠近蓝色的核心点的其他样本(即它们与半径为 Eps 的圆重叠)

在这里插入图片描述

都将被归为蓝色集群,如下:
在这里插入图片描述

然后,将靠近不断扩大的蓝色集群的核心点添加到蓝色集群中。下图显示,有 2 个核心点和 1 个非核心点靠近蓝色星团,但我们只将 2 个核心点添加进去。
在这里插入图片描述

最终,所有靠近不断扩大的蓝色集群的核心点都会被添加到集群中,数据就会变成这样:
在这里插入图片描述

接着,我们将所有靠近蓝色集群的非核心点添加到蓝色集群中。例如,下图中这 2 个非核心点靠近蓝色集群,因此将它们添加到蓝色集群中:
在这里插入图片描述

不过,由于它们不是核心点,我们不会使用它们来进一步扩展蓝色集群。也就是说,靠近非核心点 1 的另一个非核心点不会被添加到蓝色集群中的。
在这里插入图片描述

与核心点不同,非核心点只能加入集群,而不能用于进一步扩展集群。

添加所有非核心点后,我们就完成了蓝色集群的创建,它看起来是这样的:
在这里插入图片描述

现在,由于剩余的核心点都不靠近第一个集群,我们开始组建一个新的集群。首先,我们随机选取一个核心点(不在一个群组中),将其分配到第二个黄色群组中。
在这里插入图片描述

然后,我们添加靠近黄色集群的所有核心点,并利用它们进一步扩展黄色群组。
在这里插入图片描述

然后将靠近黄色聚类的非核心点添加到黄色聚类集群中。这样,我们的数据就有了 2 个群组,看起来就像这样:
在这里插入图片描述

我们不断重复创建集群的过程,直到没有核心点为止。在我们的例子中,由于所有的核心点都被分配到了相应的群组聚类中,因此我们已经完成了创建新聚类的工作。最后,任何剩余的非核心点都被称为离群点,它们既不靠近核心点,也不属于任何聚类集群。

就这样,我们完成了DBSCAN的2个群组集群聚类,并发现了7个异常离群值。

4. DBSCAN算法优势

K-Means 和分层聚类适用于结构紧凑、分离度高的聚类,但也会受到数据中噪声和异常值的严重影响。另一方面,DBSCAN 可以捕捉形状复杂的聚类,并能很好地识别异常值。

此外DBSCAN 的另一个优点是,与 K-Means 不同,我们不需要指定簇的数量(k),算法会自动为我们找到簇。下图举例说明了 DBSCANK-Means 的不同之处,以及为什么 DBSCAN 在使用得当的情况下可以发挥强大的作用。
在这里插入图片描述

5.总结

今天就到这里了,本文重点介绍了机器学习中利用DBSCAN算法进行聚类的讲解,并给出了详细的图例说明。

您学废了吗?

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

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

相关文章

AI写作变现指南:从项目启动到精通

项目启动 1. 确定目标客户群体 首先,明确谁是我们的目标客户。以下是一些潜在的客户群体: 大学生:他们需要写论文、报告、演讲稿等。 职场人士:包括需要撰写商业计划书、市场分析报告、项目提案等的专业人士。 自媒体从业者&…

《昇思25天学习打卡营第14天 | 昇思MindSpore基于MindNLP+MusicGen生成自己的个性化音乐》

14天 本节学了基于MindNLPMusicGen生成自己的个性化音乐。 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型的音乐生成模型,能够根据文本描述或音频提示生成高质量的音乐样本。 MusicGen模型基于Transformer结构,可以分解为三个不同的阶段…

基于STM32的智能农业环境监控系统

目录 引言环境准备智能农业环境监控系统基础代码实现:实现智能农业环境监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:农业环境管理与优化问题解决方案与优化收尾与总结 1. 引言 智能农业环境监控系…

java基础知识点全集

JAVA的所有知识点 一、基础的数组、数据类型、输入输出二、类与对象1. 三大特征(1) 封装(2)继承(3)多态 2. 类的实例化(1) 类通过NEW来创建(2) 类的继承&…

Vue3学习(一)

创建组件实例:我们传入 createApp 的对象实际上是一个组件 import { createApp } from vue // 从一个单文件组件中导入根组件 import App from ./App.vueconst app createApp(App) 大多数真实的应用都是由一棵嵌套的、可重用的组件树组成的。 App (root compone…

贪心算法题目总结

1. 整数替换 看到这道题目,我们首先能想到的方法就应该是递归解法,我们来画个图 此时我们出现了重复的子问题,就可以使用递归,只要我们遇到偶数,直接将n除以2递归下去,如果是奇数,选出加1和减1中…

MySQL 高级SQL高级语句(二)

一.CREATE VIEW 视图 可以被当作是虚拟表或存储查询。 视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。 临时表在用户退出或同数据库的连接断开后就自动消失了,而…

模型预测控制:设定点跟踪(Set Point Tracking)

模型预测控制:设定点跟踪(Set Point Tracking) 模型预测控制(Model Predictive Control, MPC)不仅可以用于系统稳定性问题,还可以用于设定点跟踪问题(Set Point Tracking)&#xff…

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型,主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本,重点在于提供更高效的模…

架构师篇-10、DDD实战篇:通过领域模型落地系统

基于领域模型的设计与开发 数据库设计程序设计微服务设计 在线订餐系统的领域事件通知 微服务拆分 事件风暴会议 梳理领域事件进行领域建模识别聚合关系划分限界上下文 用户下单领域模型 更新后的模型 领域模型的设计实现过程 数据库设计 数据库映射:一对一关系…

cesium 添加 Echarts 图层(空气质量点图)

cesium 添加 Echarts 图层(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <html lan…

EDA期末复习——基础知识

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…

iconfont-阿里巴巴矢量图标库 在vue项目使用记录

官网地址&#xff1a;https://www.iconfont.cn/manage/index?manage_typemyprojects&projectId4539761 第一步&#xff1a; 下载资源 ->解压到项目文件夹 第二步 在项目中main.ts 或者main.js 引入资源 import //assets/iconfont/font/iconfont.js; import //assets…

【考研408计算机组成原理】微程序设计重要考点指令流水线考研真题+考点分析

苏泽 “弃工从研”的路上很孤独&#xff0c;于是我记下了些许笔记相伴&#xff0c;希望能够帮助到大家 目录 微指令的形成方式 微指令的地址形成方式 对应考题 题目&#xff1a;微指令的地址形成方式 - 断定方式 解题思路&#xff1a; 答题&#xff1a; 分析考点&…

【训练篇】MLU370-M8 完成 qwen1.5-7b-chat-lora训练及推理

文章目录 前言一、平台环境配置二、环境 or 模型准备1.模型下载2.环境准备2.1 modelscope2.2 transformers2.3 accelerate2.4 deepspeed2.5 peft2.6 环境代码修改 3训练代码准备4 代码修改 三&#xff0c;训练后推理验证四.推理效果展示1.微调前2.微调后 前言 本期我们采用魔塔…

局域网必备文件传输神器,吾爱再出精品,支持电脑、手机无缝对接!

今天给大家带来的不是一般的干货&#xff0c;而是一款让阿星我爱不释手的局域网文件传输神器&#xff0c;而且是吾爱大佬出品。无论是工作还是生活&#xff0c;它都能给你带来极大的便利。这年头&#xff0c;谁还没个跨设备传输文件的需求呢&#xff1f; 手机、电脑、平板&…

一个中文和越南语双语版本的助贷平台开源源码

一个中文和越南语双语版本的助贷平台开源源码。后台试nodejs。 后台 代理 前端均为vue源码&#xff0c;前端有中文和越南语。 前端ui黄色大气&#xff0c;逻辑操作简单&#xff0c;注册可对接国际短信&#xff0c;可不对接。 用户注册进去填写资料&#xff0c;后台审批&…

python(一)下载安装入门

一.下载安装 1、官网下载地址&#xff1a; Python Releases for Windows | Python.org 2、下载安装 1.下载python包&#xff1a;点击下载 2.安装 2.默认点击next即可 3.选择你想安装的路径&#xff0c;点击install即可 4.这里如果出现管理员字样&#xff0c;点击授权即可 安…

专题一: Spring生态初探

咱们先从整体脉络上看下Spring有哪些模块&#xff0c;重要的概念有个直观印象。 从Spring框架的整体架构和组成对整体框架有个认知。 Spring框架基础概念 Spring基础 - Spring和Spring框架组成 上图是从官网4.2.x获取的原图&#xff0c;目前我们使用最广法的版本应该都是5.x&am…

医院管理系统带万字文档医院预约挂号管理系统基于spingboot和vue的前后端分离java项目java课程设计java毕业设计

文章目录 仓库管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 仓库管理系统 一、项目演示 医院管理系统 二、项目介绍 基于springbootvue的前后端分离医院管…