使用Python实现为测井而生的聚类算法,基于图的多分辨率聚类算法(MRGC)

使用Python实现为测井而生的聚类算法,基于图的多分辨率聚类算法(MRGC)

前言

基于图的多分辨率聚类算法(Multi-Resolution Graph-based Clustering, 简称MRGC)原本是专为石油中测井的数据分析设计的算法,不过由于其出色的表现,它也可以被应用到别的邻域中。

聚类是一种常用的无监督数据分析手段,常用的聚类算法有K-Means、DBSCAN、层次聚类。这三个聚类算法各有千秋:K-Means虽然然简单,但是它无法识别出非球形类簇,而且在使用前需要手动指定最佳聚类数,但是确定最佳聚类数并不容易;DBSCAN虽然可以识别出任意形状的类簇,不过其聚类结果受初始参数邻域半径( ϵ \epsilon ϵ)和邻域内最小样本数(MinPts)的影响非常大;层次聚类算法虽然不用事先指定类簇的数量,但是其也难以识别非球形类簇,而且当数据量很大时,在确定划分层次时容易受到主观因素影响。

而基于图的多分辨率聚类算法(Multi-Resolution Graph-based Clustering, 简称MRGC),在保留以上三种算法的优点的基础上,还解决了以上三种算法的缺点。

算法优势

识别非球形类簇

MRGC在度量两个样本间的相似度时,并没有直接使用距离,而是使用两个样本间的相互近邻关系,如:A是B的第m个近邻,B是A的第n个近邻。在此基础上,MRGC提出了近邻指数(Neighboring Index)的概念,以此来估计数据集的局部概率密度。相互近邻关系以及近邻指数的结合,使得MRGC可以识别非球形类簇。

确定最佳聚类数

MRGC在近邻指数的基础上提出了核心代表指数(Kernel Representative Index)的概念,通过对所有样本点的核心代表指排序,并在直方图上画出前m大的核心代表指数,直方图会呈现出多处断崖式下跌的情况,每一处断崖式下跌之前的核心代表指数的数量,就是最佳聚类数。如下图所示,MRGC总共识别出了两个最佳聚类数2和4。

在这里插入图片描述

多分辨率

MRGC算法在识别最佳聚类数时,会识别出不止一个最佳聚类数。如上图所示,MRGC识别出了两个最佳聚类数2和4,这意味着,聚类时既可以聚2个类也可以聚4个类,但这两个结果并非是相互独立的,聚4个类的结果其实是从聚2个类的结果中分裂出来的。这样一来就可以根据实际情况选择合适的聚类分辨率。

受初始参数影响小

MRGC的聚类结果受初始聚类参数的影响小。在实际使用中,除了设置聚类数,几乎不用设置其他参数,在仅使用默认值的情况下就能取得很好的效果。

效果展示

为了方便演示,这里使用的是随机数据集。

球形类簇

  1. 数据集
    在这里插入图片描述

  2. 聚类结果
    在这里插入图片描述

在这里插入图片描述

非球形类簇

  1. 数据集
    在这里插入图片描述

  2. 聚类结果
    在这里插入图片描述

在这里插入图片描述

最后

MRGC原论文地址:https://onepetro.org/SPWLAALS/proceedings/SPWLA-2000/All-SPWLA-2000/SPWLA-2000-PP/27122

Python代码获取方式:https://mbd.pub/o/bread/ZZmXlJZv

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值