机器学习(聚类八)——密度聚类

这篇博客介绍另一种类型的聚类算法——密度聚类。

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

常用算法:

  • DBSCAN
  • MDCA

DBSCAN

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

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

概念

ε 邻域(ε neighborhood,也称为Eps):给定对象在半径ε内的区域
N ϵ ( x ) = y ∈ X : d i s t ( x , y ) ≤ ϵ N_ϵ (x)={y∈X:dist(x,y)≤ϵ} Nϵ(x)=yX:dist(x,y)ϵ
密度(density):ε 邻域中 x 的密度,是一个整数值,依赖于半径 ε
p ( x ) = ∣ N ϵ ( x ) ∣ p(x)=|N_ϵ (x)| p(x)=Nϵ(x)
MinPts 定义核心点时的阈值,也简记为 M

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

边界点(border point): 如果非核心点x的ε邻域中存在核心点,那么认为 x 为 X 的边界点。由 X 中所有的边界点构成的集合为 X b d X_bd Xbd 。直白来将,边界点对应稠密区域边缘的点。
x∈X_nc;∃y∈X;y∈N_ϵ (x)∩X_c

噪音点(noise point):集合中除了边界点和核心点之外的点都是噪音点,所有噪音点组成的集合叫做 X n o i X_{noi} Xnoi ;直白来讲,噪音点对应稀疏区域的点。
X n o i = X \ ( X c ∪ X b d ) X_{noi}=X \backslash (X_c∪X_{bd}) Xnoi=X\(XcXbd)
在这里插入图片描述
直接密度可达(directly density-reachable):给定一个对象集合 X,如果 y 是在 x 的 ε 邻域内,而且 x 是一个核心对象,可以说对象 y 从对象 x 出发是直接密度可达的
x , y ∈ X ; x ∈ X c , y ∈ N ϵ ( x ) x,y∈X;x∈X_c,y∈N_ϵ (x) x,yX;xXc,yNϵ(x)
密度可达(density-reachable):如果存在一个对象链 p 1 , p 2 , . . . , p m p_1 ,p_2 ,...,p_m p1,p2,...,pm ,如果满足 p i + 1 p_{i+1} pi+1 是从 {p_i} 直接密度可达的,那么称 {p_m} 是从 {p_1} 密度可达的。

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

在这里插入图片描述

簇(cluster):一个基于密度的簇是最大的密度相连对象的集合C;满足以下两个条件:

  • Maximality:若 x 属于 C,而且 y 是从 x 密度可达的,那么 y 也属于 C
  • Connectivity:若 x 属于 C,y 也属于C,则 x 和 y 是密度相连的

流程

在这里插入图片描述
算法流程:

  • 如果一个点 x 的 ε 邻域包含多余 m 个对象,则创建一个 x 作为核心对象的新簇;
  • 寻找并合并核心对象直接密度可达的对象;
  • 没有新点可以更新簇的时候,算法结束。
    在这里插入图片描述
    算法特征描述:
  • 每个簇至少包含一个核心对象
  • 非核心对象可以是簇的一部分,构成簇的边缘
  • 包含过少对象的簇被认为是噪声

优缺点
优点:

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

缺点:

  • DBSCAN算法聚类效果依赖距离公式的选取,最常用的距离公式为欧几里得距离。但是对
  • 于高维数据,由于维数太多,距离的度量已变得不是那么重要
  • DBSCAN算法不适合数据集中密度差异很小的情况

看一下动态图
在这里插入图片描述

MDCA

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

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

概念

最大密度点:
x m a x = { x │ x ∈ X ; ∀ y ∈ X , d e n s i t y ( x ) ≥ d e n s i t y ( y ) } x_{max}=\{x│x∈X;∀y∈X,density(x)≥density(y) \} xmax={xxX;yX,density(x)density(y)}

有序序列: 根据所有对象与p max 的距离对数据重新排序
S p m a x = { x 1 , x 2 , … , x n ∣ d i s t ( x m a x , x 1 ) ≤ d i s t ( x m a x , x 2 ) ≤ … ≤ d i s t ( x m a x , x n ) } S_{p_{max}}=\{x_1,x_2,…,x_n |dist(x_{max},x_1 )≤dist(x_{max},x_2 )≤…≤dist(x_{max},x_n)\} Spmax={x1,x2,,xndist(xmax,x1)dist(xmax,x2)dist(xmax,xn)}

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

簇间距离:对于两个簇 C 1 C_1 C1 C 2 C_2 C2 之间的距离,采用两个簇中最近两个节点之间的距离作为簇间距离。
d i s t ( C 1 , C 2 ) = m i n ⁡ ( d i s t ( p , q ) ) ; p ∈ C 1 , q ∈ C 2 dist(C_1,C_2 )=min⁡(dist(p,q));p∈C_1,q∈C_2 dist(C1,C2)=min(dist(p,q));pC1,qC2

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

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

过程步骤
1 . 将数据集划分为基本簇;

  • 对数据集X选取最大密度点 P m a x P_{max} Pmax ,形成以最大密度点为核心的新簇 C i C_i Ci ,按照距离排序计算出序列 S p m a x S_{p_{max}} Spmax ,对序列的前 M 个样本数据进行循环判断,如果节点的密度大于等于 d e n s i t y 0 density_0 density0 ,那么将当前节点添加 C i C_i Ci 中;
  • 循环处理剩下的数据集 X,选择最大密度点 P m a x P_{max} Pmax ,并构建基本簇 $C_{i+1} $ ,直到X中剩余的样本数据的密度均小于 d e n s i t y 0 density_0 density0

2 . 使用凝聚层次聚类的思想,合并较近的基本簇,得到最终的簇划分;

  • 在所有簇中选择距离最近的两个簇进行合并,合并要求是:簇间距小于等于 d i s t 0 dist_0 dist0 ,如果所有簇中没有簇间距小于 d i s t 0 dist_0 dist0 的时候,结束合并操作

3 . 处理剩余节点,归入最近的簇

  • 最常用、最简单的方式是:将剩余样本对象归入到最近的簇
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中的聚类算法是一种无监督学习方法,用于将数据集中的样本分成不同的组,使得同一组内的样本具有相似的特征,而不同组之间的样本具有较大的差异。 聚类算法的目标是通过分析数据的相似性和差异性,将数据集划分成不同的类别或簇,以便更好地理解和分析数据。聚类算法通常包括以下几个步骤: 1. 选择距离度量方法:聚类算法通常基于样本之间的距离或相似性来进行聚类。常见的距离度量方法有欧氏距离、曼哈顿距离等。 2. 选择聚类算法:根据数据的性质和需求选择适当的聚类算法。常见的聚类算法有K均值算法、层次聚类算法等。 3. 初始化聚类中心:对于K均值算法等需要选择聚类中心的算法,需要初始化聚类中心。常见的初始化方法有随机选择、采样选择等。 4. 迭代聚类:根据数据样本的距离或相似性进行迭代计算,直到满足停止准则或达到最大迭代次数为止。迭代的过程中,不断更新聚类中心以获得更合理的聚类结果。 5. 聚类评估和结果解释:对于聚类结果,需要进行评估和解释。常见的评估指标有聚类精度、互信息等。 机器学习聚类算法的应用非常广泛,例如在数据挖掘、图像处理、社交网络分析等领域中都有大量的应用。聚类算法可以帮助我们发现数据的隐藏结构、分析数据的特征以及归纳数据集的规律,从而实现更好的数据管理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值