【机器学习】聚类算法——DBSCAN算法(理论+图解)

简介: 【机器学习】聚类算法——DBSCAN算法(理论+图解)

简 介:下面是我在学习时候的记录并加上自己的理解。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。

 

关键词:Python、机器学习、密度聚类、DBSCAN

一、DBSCAN聚类

首先介绍以下密度聚类,它是基于我们数据的密度或者紧密程度进行分类,考虑数据样本的可连接性,然后进行不断地扩展每个簇完成聚类的任务。

基于密度算法的核心思想就是根据样本点某一邻域内的样本数定义样本的密度,该类算法可以实现那种不规则的空间聚类,比如说月牙型,而像K-Means这种聚类算法一般适用于那种样本成堆型的数据,而且它还有个优点就是不用指定簇的数量。

DBSCAN算法是一种非常著名的基于密度聚类方法,它是采用邻域半径以及邻域内样本数进行定义簇,一般采用 ϵ \epsilonϵ 代表邻域半径,用 M MM 进行表示邻域内的样本数阈值。

介绍几个相关的概念:

  • 核心点(核心对象):如果以某个样本为中心,以预先设定的 ϵ \epsilonϵ 为半径,进行构造邻域,如果该邻域内的样本数大于我们设定的阈值M,那么该点就为核心点。
  • 密度直达:某一核心点和它的邻域内的样本成为密度直达
  • 密度可达:如果核心点A与B密度直达,而B与C密度直达,那么A和C为密度可达
  • 密度相连:如果A与B密度可达,而B与C密度可达,那么A与C成为密度相连

DBSCAN的算法核心就是要构造一系列密度相连的样本,这些样本就会被分成一个簇。

如果一个样本数据既不是核心点也不属于任何一个核心点的邻域内,那么就称他为噪音点,该点是一个异常样本数据,偏于大多数的样本,它处在样本较为稀疏的区域。

下图最下方的点就是一个噪音点,他在整个算法过程中不参与,所有说DBSCAN不对异常值敏感,如果某样本处在较为稀疏的位置,它是不会被忽略掉的,不会被分到某一簇中。

二、算法的详细流程

算法实现的伪代码:

  1. 输入样本数据D(x1,x2,…xn)
  2. 设定参数 邻域半径r和样本数阈值M
  3. 初始化核心点集合 Ω = ∅ \Omega=\varnothingΩ=
  4. 迭代每个样本数据,判断是否为核心点,依据就是以r为半径,进行画邻域,判断邻域内的样本数是否大于M,如果大于M,则将其加入核心点集合中,否则跳过
  5. 初始化簇类数k=0
  6. 迭代核心点集合
  7. 然后将该核心点邻域内的样本全部加入队列中,如果邻域内的某一样本也为核心点,则将它邻域内的所有样本也加入到队列中,知道队列为空
  8. 刚才遍历到的所有样本全部归为1个簇中
  9. 然后遍历 Ω \OmegaΩ 中还剩下的核心点,知道所有的核心点都被遍历完

可以说每迭代一次大的循环,就会生成一个簇类,而且6-9步骤与BFS(广度优先搜索)采用队列实现非常相似,将相邻的节点入队,然后将当前节点出队,不断将对列中每个节点的相邻元素添加到队列,直到队列为空,迭代结束。

这里有个在线浏览的DBSCAN算法的实现流程的网址,它可以自己定义邻域半径和M,然后网站自动按照指定参数进行聚类。

[DBSCAN在线可视化网址](Visualizing DBSCAN Clustering (naftaliharris.com))

在实现过程中存在几个问题就是,初始的邻域半径和阈值M的设立,因为在初期我们无法知道数据的信息,所以对于参数的设立难以确定,所以这需要大量的探索测试和一定的数据经验。

但是它也有一些好处就是它无须指定簇的个数,因为它是基于密度,算法是按照核心点不断进行扩张领域来划分簇的,所以簇的个数和算法有关,也就是与邻域半径r和M有较大的关系,而且它还对噪声不敏感,因为噪声点既不是核心点也不属于某一邻域,所以算法在进行划分时,会忽略掉噪声的数据,而且进行确立密度时,它是以样本间的距离进行确定,如果我们的数据量过大,样本维数过高,可能在计算距离时造成内存溢出。


目录
相关文章
|
10天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
2月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
382 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
|
2月前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
62 14
|
11天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
本研究基于MATLAB 2022a,使用GRU网络对QAM调制信号进行检测。QAM是一种高效调制技术,广泛应用于现代通信系统。传统方法在复杂环境下性能下降,而GRU通过门控机制有效提取时间序列特征,实现16QAM、32QAM、64QAM、128QAM的准确检测。仿真结果显示,GRU在低SNR下表现优异,且训练速度快,参数少。核心程序包括模型预测、误检率和漏检率计算,并绘制准确率图。
83 65
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
|
2天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
2天前
|
算法 数据安全/隐私保护
基于Big-Bang-Big-Crunch(BBBC)算法的目标函数最小值计算matlab仿真
该程序基于Big-Bang-Big-Crunch (BBBC)算法,在MATLAB2022A中实现目标函数最小值的计算与仿真。通过模拟宇宙大爆炸和大收缩过程,算法在解空间中搜索最优解。程序初始化随机解集,经过扩张和收缩阶段逐步逼近全局最优解,并记录每次迭代的最佳适应度。最终输出最佳解及其对应的目标函数最小值,并绘制收敛曲线展示优化过程。 核心代码实现了主循环、粒子位置更新、适应度评估及最优解更新等功能。程序运行后无水印,提供清晰的结果展示。
|
16天前
|
算法
基于遗传优化算法的风力机位置布局matlab仿真
本项目基于遗传优化算法(GA)进行风力机位置布局的MATLAB仿真,旨在最大化风场发电效率。使用MATLAB2022A版本运行,核心代码通过迭代选择、交叉、变异等操作优化风力机布局。输出包括优化收敛曲线和最佳布局图。遗传算法模拟生物进化机制,通过初始化、选择、交叉、变异和精英保留等步骤,在复杂约束条件下找到最优布局方案,提升风场整体能源产出效率。
|
16天前
|
算法 安全 机器人
基于包围盒的机械臂防碰撞算法matlab仿真
基于包围盒的机械臂防碰撞算法通过构建包围盒来近似表示机械臂及其环境中各实体的空间占用,检测包围盒是否相交以预判并规避潜在碰撞风险。该算法适用于复杂结构对象,通过细分目标对象并逐级检测,确保操作安全。系统采用MATLAB2022a开发,仿真结果显示其有效性。此技术广泛应用于机器人运动规划与控制领域,确保机器人在复杂环境中的安全作业。
|
3天前
|
算法 数据挖掘 数据安全/隐私保护
基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真
本项目基于CS模型和CV模型的多目标协同滤波跟踪算法,旨在提高复杂场景下多个移动目标的跟踪精度和鲁棒性。通过融合目标间的关系和数据关联性,优化跟踪结果。程序在MATLAB2022A上运行,展示了真实轨迹与滤波轨迹的对比、位置及速度误差均值和均方误差等关键指标。核心代码包括对目标轨迹、速度及误差的详细绘图分析,验证了算法的有效性。该算法结合CS模型的初步聚类和CV模型的投票机制,增强了目标状态估计的准确性,尤其适用于遮挡、重叠和快速运动等复杂场景。

热门文章

最新文章