CDC模型

引言

聚类是一种强大的机器学习方法,用于根据特征空间中元素的接近程度发现相似的模式。它广泛用于计算机科学、生物科学、地球科学和经济学。尽管已经开发了最先进的基于分区和基于连接的聚类方法,但数据中的弱连接性和异构密度阻碍了其有效性。在这项工作中,我们提出了一种使用局部方向中心性(CDC)的边界搜索聚类算法。它采用基于 K 最近邻 (KNN) 分布的密度无关度量来区分内部点和边界点。边界点生成封闭的笼子来绑定内部点的连接,从而防止跨聚类连接并分离弱连接的聚类。我们通过在具有挑战性的合成数据集中检测复杂的结构簇,从单细胞RNA测序(scRNA-seq)和质谱细胞术(CyTOF)数据中识别细胞类型,识别语音语料库上的说话者,并在各种类型的真实世界基准上作证,来证明CDC的有效性。

TDCM(或ratio)是通过二维空间中三角不规则网络 (TIN) 的图论分析来估计的。通常,边界点往往比内部点具有较低的中心性(即较高的 DCM)。因此,我们按降序对所有 DCM 进行排序,如果给定边界点数,则可以搜索最佳 TDCM(或ratio)。

聚类算法的过程

请添加图片描述

CDC的核心思想是根据KNN的分布来区分集群的边界点和内部点。边界点勾勒出簇的形状,并生成笼子以绑定内部点的连接。簇的内部点趋向于在各个方向上都被相邻点包围,而边界点仅包括一定方向范围内的相邻点。为了测量方向分布的这种差异,我们将 KNN 在 2D 空间中形成的角度方差定义为局部方向中心度量 (DCM):
D C M = 1 k ∑ i = 1 k ( α i − 2 π k ) 2 DCM =\frac{1}{k}\sum\limits_{i=1}^{k}(\alpha_i-\frac{2\pi}{k})^2 DCM=k1i=1k(αik2π)2
中心点的 KNNs 可以形成 k 个角 α1、α2…αk(图a)。对于二维角,条件 ∑ i = 1 k α i = 2 π \sum_{i=1}^{k}\alpha_i=2\pi i=1kαi=2π成立。当且仅当所有角度相等时,DCM 达到最小值 0。这种情况意味着中心点的 KNN 在所有方向上均匀分布。当其中一个角度为 2π 而其余角度为 0 时,它可以最大化为 4 ( k − 1 ) n 2 k 2 \frac{4(k-1)n^2}{k^2} k24(k1)n2。当 KNN 沿同一方向分布时,就会发生这种极端情况。根据极值,DCM 可以归一化为 [0, 1] 范围,如下所示:
D C M = k 4 ( k − 1 ) n 2 ∑ i = 1 k ( α i − 2 π k ) 2 DCM =\frac{k}{4(k-1)n^2}\sum\limits_{i=1}^{k}(\alpha_i-\frac{2\pi}{k})^2 DCM=4(k1)n2ki=1k(αik2π)2

DCM计算结果表明,团簇内部点的DCM值相对较低,边界点的DCM值较高(图b)。因此,内部点和边界点可以用阈值TDCM划分。DS5 和 DS7 两个合成数据集的划分结果验证了其有效性(图c、d)。为了保证内部点 p1, p2, …,pm 在周围边界点 q1, q2, …, qn−m 限制的区域内相互连接,我们将内部点 pi 与所有边界点之间的最小距离定义为其可到达距离:
r i = m i n j = 1 n − m d ( p i , q j ) r_i=min_{j=1}^{n-m}d(p_i,q_j) ri=minj=1nmd(pi,qj)
其中 d(pi,qj) 是两点 pi 和 qj 之间的距离(图 e)。如果保证以下关联规则,则两个内部点可以连接为同一簇:
d ( p i , p j ) ≤ r i + r j d(p_i,p_j) \leq{r_i+r_j} d(pi,pj)ri+rj
其中 ri 和 rj 分别是内部点 pi 和 pj 的可达距离(图f)。在正确识别边界点的前提下(边界点识别不完全的极端情况除外),内部点的连接被限制在边界点定义的区域内。如果两个内部点之间存在跨聚类连接,则边界点将包含在由其可到达距离定义的范围内,这与可到达距离的定义相冲突。因此,同一聚类的内部点可以被困在由边界点组成的同一外部轮廓中,并且基于此关联规则将避免跨聚类连接。DS5 和 DS7 的连接结果是通过将规则应用于除法结果而生成的(图 g、h)。虽然DS5和DS7中的簇对连接较弱,DS7中的三个簇的密度差异很大,但所有簇都被准确识别。

在计算 DCM 并连接内部点后,我们通过将每个边界点分配给其最近的内部点所属的集群来完成该过程。CDC 包含两个可控参数,k 和 TDCM。k 调整最近邻的数量,TDCM 确定内部点和边界点的划分。CDC的伪代码详见附注2。在实践中,考虑到 TDCM 随数据分布而变化,我们采用内部点的百分位数比率ratio来确定 TDCM 作为按降序排序的[n∙(1–ratio)]的 DCM。参数ratio具有直观的物理含义和更好的稳定性,这使得它比TDCM更容易指定。根据我们的实验,70%~99%的内点是建议的默认参数比率范围,以获得有希望的聚类结果。然而,当聚类相互混合时,需要更多的边界点(较低的比率)来分离闭合的聚类。

k的经验估计方法

通过对参数敏感度的分析和已有的研究,我们知道k是一个不敏感的参数,与数据集中的点数n有关。因此,我们提出了一种经验方法,将 k 和 n 之间的关系形式化为:
k = { ⌈ π 50 ⌉ − ⌈ π 20 ⌉ if  100 ≤ n ≤ 1000 ⌈ l o g 2 ( n ) + 10 ⌉ − 5 ⌈ l o g 2 ( n ) ⌉ if  n ≥ 1000 k=\begin{cases} \lceil\frac{\pi}{50}\rceil- \lceil\frac{\pi}{20}\rceil&\text{if }100\leq n\le1000 \\ \lceil log_2(n)+10\rceil-5\lceil log_2(n)\rceil &\text{if } n\geq1000 \end{cases} k={50π20πlog2(n)+105log2(n)⌉if 100n1000if n1000
⌈ ⌉ \lceil \quad \rceil 表示向上取整。

估计用于确定TDCM的边界点数:

请添加图片描述

构建了一个三角不规则网络(TIN)(图a)来连接所有点。在图论中,顶点的度数定义为入射到顶点的边数,每条边连接两个顶点。基于这一定律
∑ i = 1 V d e g ( v i ) = 2 E \sum_{i=1}^{V}deg(v_i)=2E i=1Vdeg(vi)=2E
deg(vi) 表示顶点 vi 的度数,V 表示顶点总数,E 表示边的总数。

对于具有单个连接分量的 TIN,边界点的总数等于最外边的总数。
∑ i = 1 V d e g ( v i ) = 3 F + B \sum_{i=1}^{V}deg(v_i)=3F+B i=1Vdeg(vi)=3F+B
F 和 B 分别表示三角形和边界点的总数。

二维欧拉公式:
V + F − E = 1 V+F-E=1 V+FE=1
通过结合这些公式,我们可以推断出 B 的解如下:
B = 2 V − F − 2 B=2V-F-2 B=2VF2

但是,整个 TIN 中的初始边界点数不等于分离聚类中的边界点总数。为了进行准确的估计,应将整个 TIN 视为多个子网(图 b)。给定 C 簇,簇中的边界点数可以求解如下:
∑ i = 1 m B i = 2 ∑ i = 1 m V i − ∑ i = 1 m F i − 2 C \sum_{i=1}^{m}B_i=2\sum_{i=1}^{m}V_i-\sum_{i=1}^{m}F_i-2C i=1mBi=2i=1mVii=1mFi2C
B = 2 V − F − 2 C B=2V-F-2C B=2VF2C
其中 F 是多个分离网络中簇内三角形的总数。V 在给定数据集(即 n)中是已知的,但 F 和 C 不是。初始F是整个TIN中三角形的总数,其中包括连接不同聚类的三角形,即三个顶点不都在同一聚类中的跨聚类三角形(否则为聚类内三角形)。使用过多的三角形会使边界点 B 的数量小于真实值。为了识别跨聚类三角形,我们设置了一个判断规则:
∑ i = 1 3 ∑ j = 1 , j ≠ i 3 σ ( v i , v j ) < 3 \sum_{i=1}^{3}\sum_{j=1,j\ne i}^{3}\sigma(v_i,v_j)<3 i=13j=1,j=i3σ(vi,vj)<3
其中 v1、v2、v3 是三角形的三个顶点,σ(vi, vj)isan 指标函数:
σ ( v i , v j ) = { 0 , if  v j ∉ KNN ( v i ) 1 , if  v j ∈ KNN ( v i ) \sigma(v_i,v_j)=\begin{cases} 0, &\text{if }v_{j}\notin \text {KNN}(v_i) \\ 1, &\text{if }v_{j}\in \text {KNN}(v_i) \end{cases} σ(vi,vj)={0,1,if vj/KNN(vi)if vjKNN(vi)
考虑聚类内三角形中顶点的邻近性。最终的F可以计算为初始F减去满足方程(16)的跨聚类三角形的数量(图c)。就簇C的数量而言,通常远小于V和F,这对B的估计有微不足道的影响,此外,CDC对DCM阈值的鲁棒性如讨论所述。因此,当 C 模糊或难以确定时,可以将其视为 1。

Code availability
The code of CDC in MATLAB, R and Python, and the toolkit with six applications can be downloaded at https://github.com/ZPGuiGroupWhu/ClusteringDirectionCentrality and https://zenodo.org/record/7029720#.YwuFsuxByZw. Digital Object Identifier https:// doi.org/10.5281/zenodo.7029720.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/768993.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

职业性格测试,企业HR招聘测评最常用人才测评

关于求职测评&#xff0c;招聘中用到的人才测评&#xff0c;你们对这个话题又知道多少呢&#xff1f;为什么我会以90后为分界线&#xff0c;首先90后正是接触计算机最早的一代&#xff0c;因为小编是90后&#xff0c;更了解这个年龄段都在做什么&#xff0c;可以说90后见证了互…

【echarts】拖拽滑块dataZoom-slider自定义样式,简单适配移动端

电脑端 移动端 代码片段 dataZoom: [{type: inside,start: 0,end: 100},{type: slider,backgroundColor: #F2F5F9,fillerColor: #BFCCE3,height: 13, // 设置slider的高度为15start: 0,end: 100,right: 60,left: 60,bottom: 15,handleIcon:path://M30.9,53.2C16.8,53.2,5.3,41.…

第一周题目总结

1.车尔尼有一个数组 nums &#xff0c;它只包含 正 整数&#xff0c;所有正整数的数位长度都 相同 。 两个整数的 数位不同 指的是两个整数 相同 位置上不同数字的数目。 请车尔尼返回 nums 中 所有 整数对里&#xff0c;数位不同之和。 示例 1&#xff1a; 输入&#xff1a…

Android Studio环境搭建(4.03)和报错解决记录

1.本地SDK包导入 安装好IDE以及下好SDK包后&#xff0c;先不要管IDE的引导配置&#xff0c;直接新建一个新工程&#xff0c;进到开发界面。 SDK路径配置&#xff1a;File---->>Other Settings---->>Default Project Structure 拷贝你SDK解压的路径来这&#xff0c;…

自动化任务工具 -- zTasker v1.94 绿色版

软件简介 zTasker 是一款功能强大的自动化任务管理软件&#xff0c;以其简洁易用、一键式操作而著称。软件体积小巧&#xff0c;启动迅速&#xff0c;提供了超过100种任务类型和30多种定时/条件执行方法&#xff0c;能够满足用户在自动化方面的多样化需求。 zTasker 支持定时任…

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构&#xff0c;是一种非线性结构。 非线性结构&#xff1a;在二叉树中&#x…

分享一款可编辑本地电脑文件的在线编辑器

背景 之前见过在线版的VSCode&#xff0c;被惊讶到了。网页上竟然可以编辑电脑本地的文件&#xff0c;打破了网页无法编辑本地电脑文件的限制。一直好奇怎么做的。抽空研究了一下&#xff0c;然后发现其实也不难。 分析 先给大家介绍一下这款在线编辑器的效果。 左侧栏为文件…

森马基于MaxCompute+Hologres+DataWorks构建数据中台

讲师&#xff1a;晋银龙 浙江森马数仓高级经理 本次案例主要分享森马集团面对多年自建的多套数仓产品体系&#xff0c;通过阿里云MaxComputeHologresDataWorks统一数仓平台&#xff0c;保障数据生产稳定性与数据质量&#xff0c;减少ETL链路及计算时间&#xff0c;每年数仓整体…

平衡二叉查找树和多路查找树

平衡二叉查找树 普通平衡二叉查找树 平衡二叉树定义是按照有序排列成树状&#xff0c;左子树数据大于右子树&#xff0c;任意节点的左右子树高度不能大于1 优点&#xff1a;可以保证绝对的平衡 缺点&#xff1a;当进行删除节点和新增节点&#xff0c;树进行自平衡的时候&…

计算机网络网络层复习题2

一. 单选题&#xff08;共22题&#xff0c;100分&#xff09; 1. (单选题)如果 IPv4 数据报太大&#xff0c;会在传输中被分片&#xff0c;对分片后的数据报进行重组的是&#xff08; &#xff09;。 A. 中间路由器B. 核心路由器C. 下一跳路由器D. 目的主机 我的答案: D:目的…

RocketMQ源码学习笔记:Producer启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview1.1、创建MQClientInstance1.1.1、检查1.1.1、MQClientInstance的ID 1.2、MQClientInstance.start() 1、Overview 这是发送信息的代码样例&#xff0c; DefaultMQProducer produ…

Qt中使用MySQL数据库详解,好用的模块类封装

本文将详细介绍如何在Qt应用程序中集成MySQL数据库&#xff0c;并封装实现好用的mysql数据库操作类。包括环境准备、连接数据库、执行查询及异常处理等关键步骤&#xff0c;同时包含mysql驱动的编译。分享给有需要的小伙伴&#xff0c;喜欢的可以点击收藏。 目录 环境准备 项…

MySql Innodb锁机制

锁概述 undo log版本链 Read View机制实现的MVCC多版本并发控制&#xff0c;可以防止事务并发读写同一数据时出现的脏读不可重复读幻读问题。但除脏读不可重复读幻读问题外&#xff0c;并发读写同一数据还有脏写问题。就是当多个事务并发更新同一条数据时&#xff0c;此时就可…

【CT】LeetCode手撕—199. 二叉树的右视图

目录 题目1- 思路2- 实现⭐199. 二叉树的右视图——题解思路 3- ACM 实现 题目 原题连接&#xff1a;199. 二叉树的右视图 1- 思路 使用二叉树的层序遍历 2- 实现 ⭐199. 二叉树的右视图——题解思路 class Solution {public List<Integer> rightSideView(TreeNode ro…

Let‘s Encrypt 申请免费 SSL 证书(每隔60天自动更新证书)

文章目录 官网文档简介安装 Nginxacme.sh生成证书智能化生成证书 安装证书查看已安装证书更新证书 官网 https://letsencrypt.org/zh-cn/ 文档 https://letsencrypt.org/zh-cn/docs/ 简介 Let’s Encrypt 是一个非营利组织提供的免费SSL/TLS证书颁发机构&#xff0c;旨在促…

如何在 Windows 10 或 11 中恢复已删除的文件

您在 Windows PC 上找不到某个文件&#xff0c;并且您觉得可能已将其删除。我们都遇到过这种情况。但与其抱怨&#xff0c;不如尝试恢复它。假设您已经搜索过回收站&#xff0c;但一无所获&#xff0c;那么是时候求助于一个好的恢复工具了。 微软提供了自己的命令行恢复程序&a…

Vite: 插件流水线之核心编译能力

概述 Vite 在开发阶段实现了一个按需加载的服务器&#xff0c;每一个文件请求进来都会经历一系列的编译流程&#xff0c;然后 Vite 会将编译结果响应给浏览器。在生产环境下&#xff0c;Vite 同样会执行一系列编译过程&#xff0c;将编译结果交给 Rollup 进行模块打包这一系列…

Node端使用工作线程来解决日志开销-处理IO密集型任务

我们的BBF层很多时候会作为中间层处理后端到前端的数据&#xff0c;当然大部分时候都只是作为请求 / 响应的数据组装中心&#xff0c;但是有一个插件是怎么都绕不过去的&#xff1a;Log4js。 内部我们在Node层打印了很多日志。结果这周仔细分析了一下服务器处理请求到响应的中间…

excel数据大小显示竟然有最大限制,限制32,767,实际限制32759

Excel 单元格在显示数据时确实存在一些限制&#xff0c;这些限制主要与单元格的宽度和高度有关&#xff0c;而不是存储数据的大小。以下是一些主要的限制&#xff1a; 1. **列宽和行高**&#xff1a;Excel 单元格的显示大小取决于列宽和行高。如果单元格中的数据超出了设定的列…

C# Winform项目中简单使用Sqlite并在DataGridview中显示

1. SQLite概述 1.1 什么是 SQLite&#xff1f; SQLite是一个进程内的库&#xff0c;实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&#xff0c;这意味着与其他数据库不一样&#xff0c;您不需要在系统中配置。 1.2 为什么要用 …