【机器学习算法】8、聚类算法之DBSCAN(一)

简介: 【机器学习算法】8、聚类算法之DBSCAN(一)

简介


   K-Means算法、K-Means++算法和Mean Shift算法都是基于距离的聚类算法,基于距离的聚类算法的聚类结果是球状的簇,当数据集中的聚类结果是非球状结构时,基于距离的聚类算法的聚类效果并不好,然而,基于密度的聚类算法能够较好地处理非球状结构的数据。与基于距离的聚类算法不同的是,基于密度的聚类算法可以发现任意形状的聚类。


   在基于密度的聚类算法中,通过在数据集中寻找被低密度区域分离的高密度区域,将分离出的高密度区域作为一个独立的类别。DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种典型的基于密度的聚类算法。


基于距离的聚类算法存在的问题


   K-Means算法,K-Means++算法和Mean Shift算法都是基于距离的聚类算法,当数据集中的聚类结果是球状结构时,基于距离的聚类算法能够得到比较好的结果,球状结构的聚类结果下图所示。

   其中,Sh指的是一个半径为h的高维球区域,如图中所示圆形区域。Sh的定义为:

   利用K-Means++聚类算法对图2中的数据进行聚类, 设置聚类中心的个数为2, 得到如图3所示的聚类结果。

8335f9035559c218702b254f86f314b8.jpg

   在图2中,“+”表示的是最终的两个聚类中心,由图2可知,对于图中的非球状结构的聚类数据,基于距离的KMeans++算法并不能得到正确的聚类结果。

   利用Mean Shift聚类算法对图2中的数据进行聚类,设置高斯核函数中的h=1时,得到如图4所示的聚类结果。

886fd3894ba05eb3650f884595eef878.jpg

   在图4中,“+”表示最终的聚类中心,与K-Means++算法类似,基于距离的Mean Shift算法对图中的非球状聚类结构的数据也不能得到正确的聚类结果。


基于密度的聚类


   从图2中,我们可以看出,数据点在图中呈现上下两个弧形,同时,分别在两个弧形中,数据点之间较为密集, 而两个弧形彼此之间较为稀疏。由这样的现象,我们猜测是否存在一种方法能够利用样本之间的紧密程度对数据进行聚类?基于密度的聚类(Density-Based Clustering)便是这样一种利用数据之间的紧密程度来对样本进行聚类的算法。


1、DBSCAN算法相关的基本概念

   DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种典型的基于密度的聚类算法,在DBSCAN算法中,有两个最基本的邻域参数,分别为ε邻域和MinPts。其中ε邻域表示的是在数据集D中与样本点xi的距离不大于ε的样本,即:

5a272eafc735d13b98e3f3168d904637.png

样本点xi的ε邻域如图5所示:

77a64d61da4113b50d292ae4bafb0bd4.png

   在图5中,样本点x不在样本点xi的ε邻域内。xi的密度可由xi的ε邻域内的点的数量来估计。MinPts表示的是在样本点xi的ε邻域内的最少样本点的数目。基于邻域参数ε邻域和MinPts,在DBSCAN算法中将数据点分为以下三类:

c5af31a32bbaa4f534a09a86d9aa5ace.png

• 核心点(Core Points):若样本xi的ε邻域内至少包含了MinPts个样本,即则称样本点xi为核心点。

• 边界点(Border Points):若样本xi的ε邻域内包含的样本数目小于MinPts,但是它在其他核心点的邻域内,则称样本点xi为边界点。

• 噪音点(Noise):指的是既不是核心点也不是边界点的点。


核心点、边界点和噪音点如图6所示:

050f92a0fdaaa55593fa0c0b4022ca17.jpg

   在图6中,设置MinPts的值为9,对应的样本点x1的ε邻域内包含11个样本点,大于MinPts,则样本点x1为核心点。样本点的x2在样本点x1的ε邻域内,且样本点x2的ε邻域内只包含8个样本点,小于MinPts,则样本点x2为边界点。样本点x3为噪音点。


在DBSCAN算法中,还定义了如下的一些概念:

• 直接密度可达(directly density-reachable):若样本点xj在核心点xi的ε邻域内,则称样本点xj从样本点xi直接密度可达。

• 密度可达(density-reachable):若在样本点xi,1和样本点xi,n之间存在序列xi,2,…,xi,n-1,且xi,j+1从xi,j直接密度可达,则称xi,n 从xi,1密度可达。由密度可达的定义可知,样本点xi,1,xi,2,…,xi,n-1均为核心点,直接密度可达是密度可达的特殊情况。

• 密度连接(density-connected):对于样本点xi和样本点xj,若存在样本点xk,使得xi和x j都从xk密度可达,则称xi和xj密度相连。


直接密度可达、 密度可达如图7所示:

82112dcf93f287fe00c7e23276d778f2.jpg

   在图7中,设置MinPts的值为9,则样本点x1和样本点x2为核心点,样本点x3为边界点。样本点x2在核心点x1的ε邻域内,则样本点x2从样本点x1直接密度可达;样本点x3在核心点x2的ε邻域内,则样本点x3从核心点x2直接密度可达;在样本点x1和x3之间存在样本点x2,且样本点x2从样本点x1直接密度可达,则样本点x3从样本点x1密度可达。


2、DBSCAN算法原理

  基于密度的聚类算法通过寻找被低密度区域分离的高密度区域,并将高密度区域作为一个聚类“簇”。在DBSCAN算法中,聚类“簇”定义为:由密度可达关系导出的最大的密度连接样本的集合。


   若x为核心对象,由x密度可达的所有样本组成的集合记为:

2aa4b9faca8f4da70ce8387d778a3fbe.png

则X满足连接性和最大性的簇。

相关文章
|
25天前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
|
17天前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
|
2月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
|
2月前
|
算法 数据可视化 数据挖掘
基于AOA算术优化的KNN数据聚类算法matlab仿真
本程序基于AOA算术优化算法优化KNN聚类,使用Matlab 2022A编写。通过AOA搜索最优特征子集,提升KNN聚类精度,并对比不同特征数量下的聚类效果。包含完整仿真流程与可视化结果展示。
|
3月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
126 0
|
5月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
|
6月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
226 6
|
9天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
11天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)

热门文章

最新文章