您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

RVN 一种新的聚类算法

时间:2022-01-26 09:20:45  来源:  作者:deephub

当我们需要对数据集进行聚类时,我们可能首先研究的算法是 K means, DBscan, hierarchical clustering 。 那些经典的聚类算法总是将每个数据点视为一个点。 但是,这些数据点在现实生活中通常具有大小或边界(边界框)。 忽略点的边缘可能会导致进一步的偏差。 RVN算法是一种考虑点和每个点的边界框的方法。

RVN 的灵感来自一家家具公司的商业案例。 他们的工作是按生活方式对家具进行分类,由于每件家具都有不同的形状和大小,而一些家具是否重叠比彼此之间的距离更关键,所以创建了可以考虑每个点大小的 RVN 算法,相信该算法可以进一步在其他领域实现,例如生态系统和像素聚类。

世界地图示例 - K means

当需要对地球上所有国家进行聚类时,首先需要每个国家的坐标(经度和纬度)。

RVN 一种新的聚类算法

 


RVN 一种新的聚类算法

 

然后可以使用 K mean 或其他算法来调整最佳簇数量或找到最佳 eps 进行DB scan。 我们将使用 K mean作为样例

RVN 一种新的聚类算法

 

根据上图,我们选择k=3。

看起来不错!但是我们可以注意到一些国家的一些问题,比如俄罗斯。

RVN 一种新的聚类算法

 

可以看到俄罗斯与其他亚洲国家聚集在一起。 原因是代表俄罗斯位置的点更靠近其他亚洲国家。 如果我们把这一点再左一点,俄罗斯就会聚集到左边。

通过这个例子定义每个点的位置对我们的结果有很大的影响。

RVN 算法

下面介绍一下RVN算法的基本逻辑。

数据要求:每个点的上限和下限

初始化

  • 初始化n个簇(数据大小为n),每个点为一个簇
  • 计算每个簇的半径(使用上限和下限)

迭代

  • 检查所有重叠点。 (范围重叠)
  • 将所有重叠点分组为同一个簇
  • 更新每个簇的质心和半径

停止策略

  • 如果没有重叠组,则停止
  • Stop by k :设置一个 K 并在总聚类低于 K 时停止算法(k mean概念)
  • 其他:所有大小的百分比,最近簇的距离

下面进一步演示这个算法。

第 1 步:初始簇

RVN 一种新的聚类算法

 

第 2 步:检查数据点1

RVN 一种新的聚类算法

 

第 3 步:将点 1 和 3 更新到簇 1

RVN 一种新的聚类算法

 

第 4 步:检查数据点 2,已更新

RVN 一种新的聚类算法

 

第 5 步:检查数据点3,更新数据点4

RVN 一种新的聚类算法

 

第 6 步:检查数据点 5,没有重叠点

RVN 一种新的聚类算法

 

第 7 步:更新质心和边界。 第一次迭代结束

RVN 一种新的聚类算法

 

第 8步:开始第二次迭代,检查组 1 并将点 5 更新为点 1

RVN 一种新的聚类算法

 

第 9 步:检查数据点 5,不更新任何内容

RVN 一种新的聚类算法

 

第10步:更新质心和边界,结束第二次迭代

RVN 一种新的聚类算法

 

簇扩展方法

有一种不可避免的情况就是没有重叠点但我们仍然希望将点分组在一起。

RVN 一种新的聚类算法

 

如果我们根据基本规则停止算法,可能会有太多的簇。所以提供三种可能的解决方案。

Naive:逐渐将所有半径增加一个常数,以便两个最近的簇相互重叠(速度快因为所有组的半径同时增加,但可能会导致偏差)

Approximate:将两个最近的簇组合在一起。 (慢但偏差较小,因为其他簇的半径保持不变)

其他:按百分比增加半径,按随机数增加

RVN 算法 - 参数

在 RVN 算法中,一些参数需要调整才能找到最佳参数。

  • 半径:如果数据集是二维的,会有四个候选半径,分别是x-upperbound_x、x-lowerbound_x、y-upperbound_y、y-lowerbound_y。 我们对选项进行排序,以挑选出最好的选项或根据经验进行选择。
  • 扩展速度:在没有重叠点的情况下,圆圈希望增长多快。
  • K 的阈值:当总簇数小于 K 时,算法停止。 (仅用于“按 K 逻辑停止”)

找到最好的 K

与 K means算法相同,我们需要找到最佳 K。对于任何聚类方法,通常有两种方法可以找到最佳 K。 轮廓系数和平方误差之和(每个点和组质心)。 由于我们使用边界框而不是点,直接应用轮廓系数和平方误差之和会导致偏差。

因此在计算轮廓系数和平方误差和时,我们可以为每个点(母点)创建四个额外的点(子点),并将它们分配到与母点相同的组中。 子点的坐标是(x,上界y),(x,下界y),(上界x,y)和(下界x,y)。

RVN 一种新的聚类算法

 

因为子点和母点加在一起可以更好地表示每个母点的大小,所以我们可以通过轮廓系数和平方误差和得到更无偏的 K。

在深入研究案例之前,让我们再次回到世界地图。

世界地图示例 - RVN

除了每个国家的经度和纬度,我们还需要上限和下限。

RVN 一种新的聚类算法

 

我们在这个例子中跳过了 调优K 的部分,因为我们只想展示不同的结果。

RVN 一种新的聚类算法

 

让我们仔细看看俄罗斯。

RVN 一种新的聚类算法

 

我们可以看到,俄罗斯现在与周边所有国家都聚集在一起。

家具公司示例

现在我们回到最初的家具公司示例,我们有了一个平面图将使用 RVN 对所有家具进行聚类。

RVN 一种新的聚类算法

 

让我们找到最佳 K

RVN 一种新的聚类算法

 

结果

RVN 一种新的聚类算法

 

我们可以看到,虽然有些点非常接近较大的组,因为它们的范围不与较大的组重叠,但它们被认为是不同的簇。

Python 实现

以下github地址是 NVR 算法的实现

github/red574890/NVR-algorithm

算法的挑战

数据收集:数据收集是该算法中最麻烦的部分,因为需要收集一个点的位置和边界框。

高维:理想情况下,该算法可以在高维空间上实现。 但是目前还没有尝试将其应用于超过三个维度的数据。

圆形假设:RVN 假设组扩展为一个圆形,这意味着如果一个簇增长,它将在所有方向上扩展相同的大小。 但是,这种假设在某些情况下可能是错误的,如下图所示。

RVN 一种新的聚类算法

 

直观地说,这些数据应该分为 11 组。

RVN 一种新的聚类算法

 

但是,由于 x 轴和 y 轴的尺度差异很大(y 范围从 0 到 1000,x 范围从 0 到 50),因此 RVN 算法的结果可能非常违反观察结果。

RVN 一种新的聚类算法

 

有一种可能的解决方案是标准化 x 范围或 y 范围。 这个动作可以保证一个维度比另一个维度扩展得更快。

RVN 一种新的聚类算法

 

速度表现:不同的分组合并方式会导致算法的速度不同。目前没有最佳方法。

整体性能:该算法在平面图情况下比 DBscan和 K means效果更好。 但是目前不知道 RVN 是否会在其他情况下表现更好。

未来

这是一种受家具行业平面图启发的全新算法。 我真诚地希望我们能继续发展这种特殊的方法; 因此,如果有人对改进或实施有任何疑问,请随时与我联系。

该算法由 Ray、Vamshi 和 Noah 创建

本文作者:Ray Hsu



Tags:RVN   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
当我们需要对数据集进行聚类时,我们可能首先研究的算法是 K means, DBscan, hierarchical clustering 。 那些经典的聚类算法总是将每个数据点视为一个点。 但是,这些数据点在...【详细内容】
2022-01-26  Tags: RVN  点击:(2)  评论:(0)  加入收藏
▌简易百科推荐
当我们需要对数据集进行聚类时,我们可能首先研究的算法是 K means, DBscan, hierarchical clustering 。 那些经典的聚类算法总是将每个数据点视为一个点。 但是,这些数据点在...【详细内容】
2022-01-26  deephub    Tags:RVN   点击:(2)  评论:(0)  加入收藏
矩阵结合律对于如何影响我们的生活,下面是我个人的一点浅薄理解。 1、使得计算机设计得更简单。 2、加速计算机运算 忙碌的996初识矩阵时你是否困扰过:为什么搞出矩阵这样的怪...【详细内容】
2022-01-24  程序员写个解    Tags:矩阵   点击:(3)  评论:(0)  加入收藏
一、什么是选择排序1.1、文字描述选择排序是一种简单直观的排序方式,它的工作原理是每一次排序时先从待处理数据元素中选择出一个最大(或最小)的元素,并存放在序列的末尾(起始)位...【详细内容】
2022-01-04  晓掌柜丶韶华    Tags:排序算法   点击:(19)  评论:(0)  加入收藏
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(30)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(54)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(28)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(26)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(34)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(39)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(27)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条