当前位置: 首页 > news >正文

自然邻居搜索算法(NaN-Searching)

NaN-Searching算法,是用来寻找数据集中每个点的自然邻域(Natural Neighbors,简称NaNs)的过程。自然邻域是指那些相互将对方视为邻居的数据点集合。算法1的核心思想是利用自然邻域的概念来动态地确定每个数据点的邻域大小,而不需要预设参数。以下是详细步骤和解释:

算法1:NaN-Searching(SetOfPoints)

输入:一组数据点 SetOfPoints
输出:每个点的自然邻域列表,以及每个点的反向邻域计数 Rnb(i)

步骤:
  1. 初始化

    • 对于每个数据点 i ,初始化其反向邻域计数 Rnb(i) = 0 。
    • 初始化每个点的自然邻域列表 NaN(i) = 空集。
    • 初始化每个点的 r-邻域 NNr(i) = 空集 和 r-反向邻域 RNNr(i) = 空集。
    • 设置迭代计数器 r = 1 。
  2. 构建KD树

    • 使用 SetOfPoints 创建一个KD树,以便快速进行空间搜索。
  3. 寻找r-邻域

    • 对于每个数据点 x ,使用KD树找到其第 r 近邻 y 。
    • 更新 y 的反向邻域计数 Rnb(y) = Rnb(y) + 1 。
    • 将 y 添加到 x 的 r-邻域 NNr(x) 。
    • 将 x 添加到 y 的 r-反向邻域 RNNr(y) 。
  4. 迭代更新

    • 重复步骤3,直到 Rnb(x) 为0的点的数量在连续三次迭代中不再变化。
    • 每次迭代后,增加 r 的值 r = r + 1 。
  5. 确定自然邻域

    • 当迭代完成后,对于每个数据点 i ,如果 Rnb(i) > 0 ,则其自然邻域 NaN(i) 包含所有 RNNr(i) 中的点,其中 r 是满足 Rnb(i) > 0 的最小值。
  6. 输出结果

    • 输出每个点的自然邻域列表 NaN(i) 和反向邻域计数 Rnb(i) 。

解释:

  • 自然邻域:自然邻域是指那些相互将对方视为邻居的数据点集合。这种邻域关系是对称的,即如果点 A 认为点 B 是其邻居,那么点 B 也必须认为点 A 是其邻居。
  • 反向邻域计数: Rnb(i) 表示有多少其他点将点 i 视为其自然邻域的一部分。这个计数帮助我们确定哪些点是孤立的即 Rnb(i) = 0 ,哪些点是与其他点相互连接的。
  • KD树:KD树是一种用于多维空间数据的二叉搜索树,它允许快速地找到最近邻点。在算法中,KD树用于高效地找到每个点的第 r 近邻。

优势:

  • 自适应性:算法不需要预设参数来确定邻域大小,而是根据数据点之间的实际距离动态地构建自然邻域。
  • 无参数:由于不需要预设参数,算法可以更灵活地应用于不同类型的数据集。
  • 高效性:通过使用KD树,算法能够快速地找到每个点的近邻,从而提高算法的效率。

http://www.mrgr.cn/news/93415.html

相关文章:

  • RabbitMQ知识点
  • 8. 机器人模型训练与评估(具身智能机器人套件)
  • K8s 1.27.1 实战系列(三)安装网络插件
  • AI 编译器学习笔记之十六 -- TVM
  • 基于PyMuPDF与百度翻译的PDF翻译处理系统开发:中文乱码解决方案与自动化排版实践
  • qt作业day5
  • 计算机网络笔记(一)——1.1计算机网络在信息时代中的作用
  • Android项目优化同步速度
  • 【办公类-99-03】养老护理初级考题抽取(2套大题抽1+7小套题抽2——共有42种可能)
  • TDengine SQL查询语法
  • MuBlE:为机器人操作任务规划提供了逼真的视觉观察和精确的物理建模
  • 2021年高教社杯全国大学生数学建模A题——基于几何模型的“FAST”主动反射面的形状调节
  • HuggingFace 模型转换为 GGUF/GGML
  • 【人工智能学习之局部极小值与鞍点】
  • 深度学习 PyTorch 中 18 种数据增强策略与实现
  • 全新方案80M/S,告别限速!
  • 自定义录制,解锁全部功能!
  • Java面经
  • K8s 1.27.1 实战系列(一)介绍及准备工作
  • Linux 基础入门操作-实验二 cmake使用介绍下