11 聚类算法 - 密度聚类 - DBSCAN、MDCA

简介:

09 聚类算法 - 层次聚类
10 聚类算法 - 代码案例四 - 层次聚类(BIRCH)算法参数比较

七、密度聚类概述

1、密度聚类方法的指导思想: 只要样本点的密度大于某个阈值,则将该样本添加到最近的簇中。
2、这类算法可以克服基于距离的算法只能发现凸聚类的缺点,可以发现任意形状的聚类,而且对噪声数据不敏感。
3、计算复杂度高,计算量大。

分析

常用算法:
1、具有噪声的基于密度的聚类方法 - DBSCAN
2、密度最大值算法 - MDCA


八、DBSCAN算法

__DBSCAN__(Density-Based Spatial Clustering of Applications with Noise) - 具有噪声的基于密度的聚类方法

一个比较有代表性的基于密度的聚类算法,相比于基于划分的聚类方法和层次聚类方法,DBSCAN算法将簇定义为__密度相连的点的最大集合__,能够将足够高密度的区域划分为簇,并且在具有噪声的空间数据商能够发现任意形状的簇。

DBSCAN算法的核心思想是:__用一个点的ε邻域内的邻居点数衡量该点所在空间的密度__,该算法可以找出形状不规则的cluster,而且聚类的时候事先不需要给定cluster的数量。


DBSCAN算法基本概念 (一) :

ε邻域(ε neighborhood,也称为Eps):给定对象在半径ε内的区域

密度(density):ε邻域中x的密度,是一个整数值,依赖于半径ε

MinPts定义核心点时的阈值,也简记为M

核心点(core point):如果p(x)>=M,那么称x为X的核心点;记由X中所有核心点构成的集合为Xc,并记Xnc=XXc表示由X中所有非核心点构成的集合。直白来讲,核心点对应于稠密区域内部的点。


DBSCAN算法基本概念 (二) :

边界点(border point): 如果非核心点x的ε邻域中存在核心点,那么认为x为X的边界点。由X中所有的边界点构成的集合为Xbd。直白来将,边界点对应稠密区域边缘的点:

噪音点(noise point):集合中除了边界点和核心点之外的点都是噪音点,所有噪音点组成的集合叫做Xnoi;直白来讲,噪音点对应稀疏区域的点。

分析 - 概念二


DBSCAN算法基本概念 (三) :

直接密度可达(directly density-reachable):给定一个对象集合X,如果y是在x的ε邻域内,而且x是一个核心对象,可以说对象y从对象x出发是直接密度可达的。

密度可达(density-reachable):如果存在一个对象链p1,p2,..pm,如果满足pi+1是从pi直接密度可达的,那么称pm是从p1密度可达的。

密度相连(density-connected):在集合X中,如果存在一个对象o,使得对象x和y是从o关于ε和m密度可达的,那么对象x和y是关于ε和m密度相连的。

分析 - 概念三


DBSCAN算法基本概念 (四) :

簇(cluster):一个基于密度的簇是最大的密度相连对象的集合C;满足以下两个条件:
1、Maximality:若x属于C,而且y是从x密度可达的,那么y也属于C。
2、Connectivity:若x属于C,y也属于C,则x和y是密度相连。


九、DBSCAN算法流程

算法流程:
1、如果一个点x的ε邻域包含多余m个对象,则创建一个x作为核心对象的新簇;
2、寻找并合并核心对象直接密度可达的对象;
3、没有新点可以更新簇的时候,算法结束。

算法特征描述:
1、每个簇至少包含一个核心对象。
2、非核心对象可以是簇的一部分,构成簇的边缘。
3、包含过少对象的簇被认为是噪声。

看上图,顺便回顾知识点:
A->B: 密度可达。
B->A: 密度相连。(B->A走不过去)
A->A附近的点:直接密度可达。
所以只要密度可达,必然密度相连。但是密度相连不一定能推出密度可达。

上图中,只要A和A附近的点直接密度可达,就可以归为一类。所以红点之间可以形成一个簇。
此外,B和C点都与A点密度相连,所以能可以归入这个簇。

所以构建算法的思路是:先找核心点,然后再把边界找到。将核心点和边界点归入一个簇。


DBSCAN算法优缺点:

优点:
1、不需要事先给定cluster的数目。
2、可以发现任意形状的cluster。
3、能够找出数据中的噪音,且对噪音不敏感。
4、算法只需要两个输入参数。
5、聚类结果几乎不依赖节点的遍历顺序。

缺点:
1、DBSCAN算法聚类效果依赖距离公式的选取,最常用的距离公式为欧几里得距离。但是对于高维数据,由于维数太多,距离的度量已变得不是那么重要。__维度灾难__ 02 聚类算法 - 相似度距离公式、维度灾难

2、DBSCAN算法不适合数据集中密度差异很小的情况。

M=4,形成了2个聚簇分类


十、密度最大值聚类算法(MDCA)

MDCA(Maximum Density Clustering Application)算法基于__密度的思想__引入__划分聚类__中,使用密度而不是初始点作为考察簇归属情况的依据,能够自动确定簇数量并发现任意形状的簇;另外MDCA一般不保留噪声,因此也避免了阈值选择不当情况下造成的对象丢弃情况。

MDCA算法的基本思路是寻找__最高密度__的对象和它所在的__稠密区域__;MDCA算法在原理上来讲,和密度的定义没有关系,采用任意一种密度定义公式均可,一般情况下采用DBSCAN算法中的密度定义方式。


MDCA概念 (一) :

最大密度点:

有序序列: 根据所有对象与pmax的距离对数据重新排序:

密度阈值density0;当节点的密度值大于密度阈值的时候,认为该节点属于一个比较固定的簇,在第一次构建基本簇的时候,就将这些节点添加到对应簇中,如果小于这个值的时候,暂时认为该节点为噪声节。

分析 - MDCA概念一


MDCA概念 (二) :

簇间距离:对于两个簇C1和C2之间的距离,采用两个簇中最近两个节点之间的距离作为簇间距离。

聚簇距离阈值dist0:当两个簇的簇间距离小于给定阈值的时候,这两个簇的结果数据会进行合并操作。

M值:初始簇中最多数据样本个数。


MDCA算法聚类过程步骤如下:

一、将数据集划分为基本簇。
1、对数据集X选取最大密度点Pmax,形成以最大密度点为核心的新簇Ci,按照距离排序计算出序列Spmax,对序列的前M个样本数据进行循环判断,如果节点的密度大于等于density0,那么将当前节点添加Ci中;
2、循环处理剩下的数据集X,选择最大密度点Pmax,并构建基本簇Ci+1,直到X中剩余的样本数据的密度均小于density0

二、使用凝聚层次聚类的思想,合并较近的基本簇,得到最终的簇划分。
在所有簇中选择距离最近的两个簇进行合并,合并要求是:簇间距小于等于dist0,如果所有簇中没有簇间距小于dist0的时候,结束合并操作。

三、处理剩余节点,归入最近的簇。
最常用、最简单的方式是:将剩余样本对象归入到最近的簇。

分析 - MDCA算法聚类过程步骤

12 聚类算法 - 代码案例五 - 密度聚类(DBSCAN)算法案例

相关文章
|
28天前
|
机器学习/深度学习 算法 数据可视化
请解释Python中的K-means聚类算法以及如何使用Sklearn库实现它。
【2月更文挑战第29天】【2月更文挑战第104篇】请解释Python中的K-means聚类算法以及如何使用Sklearn库实现它。
|
1天前
|
数据采集 算法 数据可视化
R语言聚类算法的应用实例
R语言聚类算法的应用实例
76 18
R语言聚类算法的应用实例
|
5天前
|
算法 数据可视化 数据挖掘
使用Python实现DBSCAN聚类算法
使用Python实现DBSCAN聚类算法
136 2
|
7天前
|
算法 数据可视化 数据挖掘
使用Python实现K均值聚类算法
使用Python实现K均值聚类算法
15 1
|
27天前
|
机器学习/深度学习 算法 数据可视化
探索Python中的聚类算法:DBSCAN
探索Python中的聚类算法:DBSCAN
18 0
|
28天前
|
算法 数据挖掘
K-means聚类算法是如何实现的?
K-Means算法包括:随机选K个初始质心,将数据点分配到最近质心的簇,更新簇均值作为新质心,重复此过程直到质心变化足够小或达到最大迭代次数。对初始选择敏感,需多次运行取最优结果。
8 0
|
28天前
|
机器学习/深度学习 算法 数据可视化
探索Python中的聚类算法:K-means
探索Python中的聚类算法:K-means
62 4
|
30天前
|
机器学习/深度学习 算法 数据挖掘
使用phyon实现K-means聚类算法
使用phyon实现K-means聚类算法
|
1月前
|
机器学习/深度学习 运维 算法
从K-means到高斯混合模型:常用聚类算法的优缺点和使用范围?
从K-means到高斯混合模型:常用聚类算法的优缺点和使用范围?
157 0
|
1月前
|
机器学习/深度学习 算法 生物认证
基于深度学习的人员指纹身份识别算法matlab仿真
基于深度学习的人员指纹身份识别算法matlab仿真