问题标签 [optics-algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1223 浏览

cluster-analysis - 解释 OPTICSxi 聚类的结果

我对检测不同密度区域中的集群感兴趣,例如城市中用户生成的数据,为此我采用了OPTICS算法。

DBSCAN不同,OPTICS 算法不会产生严格的集群分区,而是对数据库进行增强排序。为了生成集群分区,我使用 OPTICSxi,它是另一种基于 OPTICS 输出生成分类的算法。很少有库能够从 OPTICS 的输出中提取集群分区,ELKI的 OPTICSxi 实现就是其中之一。

我很清楚,如何解释 DBSCAN 的结果(虽然设置“有意义”的全局参数并不容易);DBSCAN 检测集群的“原型”,以密度为特征,表示为每个区域的点数(minpts/epsilon)。OPTICSxi 的结果似乎有点难以解释。

我有时会在 OPTICSxi 的输出中检测到两种现象,但我无法解释。一个是“尖峰”集群的出现,它连接了地图的各个部分。我无法解释它们,因为它们似乎由很少的点组成,而且我不明白算法如何决定将它们分组到同一个集群中。它们真的代表了密度变化的“走廊”吗?查看基础数据,它看起来不像那样。您可以在下图中看到这些“尖峰”。

ε=1000; xi=0.05; minpts=100;

我无法解释的另一个现象是,有时会出现同一层级的“重叠”集群。OPTICSxi 基于数据库的 OPTICS 排序(例如树状图),该图中没有重复点。

由于这是一个层次聚类,我们认为较低级别的聚类包含较高级别的聚类,并且在构建凸包时强制执行该想法。但是,我认为没有任何理由让集群与同一层次上的其他集群相交,这实际上意味着某些点将具有双重集群“成员资格”。在下图中,我们可以看到一些具有相同层次级别 (0) 的相交集群。

最后,我想留给您的最重要的想法/问题是:我们期望在 OPTICSxi 聚类分类中看到什么?这个问题与参数化 OPTICSxi 的任务密切相关。

由于我几乎没有看到任何针对特定集群问题运行 OPTICSxi 的研究,因此我很难找到最佳的集群分类。即:可以提供一些有意义/有用的结果,并为 DBSCAN 聚类增加一些价值。为了帮助我回答这个问题,我使用不同的参数组合运行了多次 OPTICSxi,我选择了三个,我将在下面讨论。

ε=2000; xi=0.025; minpts=100;

在这次运行中,我使用了较大的 epsilon (2Km) 值;该值的含义是我们接受大型集群(最大 2Km);由于算法“合并”了集群,我们最终会得到一些非常大的集群,几乎可以肯定它们的密度很低。我喜欢这个输出,因为它暴露了分类的层次结构,它实际上让我想起了使用不同的参数组合(针对不同的密度)运行 DBSCAN,这就是 OPTICS 所宣传的“强度”。如前所述,较小的集群对应于层次尺度中的更高级别和更高的密度。

ε=250; xi=0.035; minpts=10

在这次运行中,我们看到了大量的集群,即使“对比度”参数与上一次运行相同。这主要是因为我选择了较少的 minpts,这表明我们接受了点数较少的集群。由于本例中的 epsilon 较短,因此我们看不到这些大集群占据了地图的很大一部分。我发现这个输出没有前一个有趣,主要是因为,即使我们有一个层次结构,在同一级别也有许多集群,并且其中许多相交。在解释上,我可以看到一个与前一个相似的整体“形状”,但实际上它被离散化为许多容易被忽略为“噪声”的小簇。

ε=250; xi=0.035; minpts=100

本次运行有一个参数选择,与上一次类似,只是minpts更大;结果是,我们不仅发现更少的集群并且它们重叠更少,而且它们大多处于同一水平。

从增加 DBSCAN 价值的角度来看,我会选择第一个参数组合,因为它提供了数据的层次结构图,清楚地显示了哪些区域更密集。恕我直言,最后的参数组合无法提供密度的全球分布的概念,因为它在整个研究区域都发现了类似的集群。我有兴趣阅读其他意见。

0 投票
1 回答
70 浏览

elki - 在 ELKI 中运行 OPTICS 的数据属性

我一直在尝试对我的数据运行“OPTICS”算法,我的数据有大约 40000 条记录,每条记录都有 3 个属性 + 加上每条记录的 ID。有趣的是,当我仅在 3 个属性上运行“OPTICS”时,ELKI 给了我一个关于“stackoverflow”的错误,但是当我运行它时,包括 4 个属性,它运行时没有任何问题。我的数据有问题吗? !

0 投票
1 回答
266 浏览

machine-learning - 获取 ELKI OPTICSXi 的集群边界

我有一个一维数据集,其直方图显示多个局部最大值,所以我知道我的一维空间中有多个区域数据更密集。我想确定这些密集区域的边界,以便我对某个数据点所在的密集区域/集群进行分类。为此,我使用 OPTICS,因为它应该能够更好地处理比较集群之间的不同密度到 DBSCAN。

我在 Java 代码中使用 ELKI(版本 0.6.0)(我知道 ELKI 团队不建议将 ELKI 嵌入 Java 中,但我需要为许多数据集重复我的工作流程,因此在我的情况下最好自动执行此操作) . 下面的代码片段打印集群的开始和结束项的索引。OPTICSModel 上的ELKI 文档没有明确定义这些索引号对应的内容,但我假设这些是数据库的增强集群排序中开始和结束数据项的索引(例如 OPTICS.run() 的 ClusterOrderResult 对象-created),而不是数据库本身的开始和结束数据项的索引(无序)。

现在我想知道我的集群在我的一维空间中的哪里开始和结束。因此,我想检索与我上面的代码已经获得的开始和结束索引相对应的数据项。我假设我需要一个 ClusterOrderResult 对象,然后我可以从中检索获得的索引。然而,在文档中,似乎无法从我通过调用 optics.run() 获得的聚类结果对象中检索到这样的东西。由于似乎没有办法获得这个有序的数据库,我天真地尝试从我的原始输入数据集中获取索引,而不是用下面的 println 替换上面代码中的 println:

然而,正如我已经预料到的那样,索引似乎不属于原始输入文件,因为这会定期在我的一维空间中打印末端边界,其值低于末端边界。是否有人知道任何方法来获取与 OPTICS 聚类发现的开始和结束索引相对应的原始一维数据值?我想稍后在我的代码中使用这些值。

0 投票
1 回答
140 浏览

cluster-analysis - ELKI - 如何从 elki 的集群对象顺序文件中获取集群?

在 ELKI 上运行 OPTICS 和 DeLiClu 算法,我只得到集群对象顺序文件作为结果。如何获取集群列表以及点与相应集群之间的映射?

0 投票
1 回答
821 浏览

cluster-analysis - 如何使用 ELKI 进行索引 - OPTICS 聚类

我是 ELKI 初学者,我一直在使用它从 .csv 文件中聚集大约 10K 经纬度点。一旦我的设置正确,我想扩大到 1MM 点。

我正在使用带有 LngLatDistanceFunction 的 OPTICSXi 算法

我一直在阅读有关“使用 STR 批量加载启用 R*-tree 索引”的内容,以便看到性能的巨大改进。教程对我帮助不大。

关于如何实现此功能的任何提示?

0 投票
1 回答
7072 浏览

r - 如何使用 OPTICS 提取集群(R 包 - dbscan 或替代方案)

这可能是 R 问题和算法问题的混合。问题是关于一般的光学和“dbscan”包中光学的 R 实现(https://cran.r-project.org/web/packages/dbscan/dbscan.pdf

我从使用 DBSCAN 转向 OPTICS 的主要原因是我拥有的数据集具有可变密度集群,并且它们的形状不规则。OPTICS 生成可达性图,但对于我的用例来说,更有趣的部分是集群的提取。原始论文中描述了一些自动聚类提取,而不仅仅是 eps 的单个切点。(http://fogo.dbs.ifi.lmu.de/Publikationen/Papers/OPTICS.pdf)。

所以我的两部分qn:1)有没有办法以这种方式使用R包进行自动提取?2)是否有支持此功能的 OPTICS 实现(python,其他地方)?

0 投票
1 回答
930 浏览

algorithm - 如何在 OPTICS 算法中使用纬度/经度进行基于密度的聚类

我想根据经度和纬度对推文进行聚类,并使用 OPTICS 算法(Java 实现),因为这似乎是基于密度的聚类的最佳选择。该算法采用输入文件来考虑要考虑的点。这些文件中的每一个都是一个向量。我拥有的数据集包含推文的纬度和经度。我可以直接使用纬度和经度来提取聚类,还是需要将纬度和经度转换为其他形式,然后才能使用 OPTICS 进行聚类。

提前致谢。

我拥有的示例输入文件:

OPTICS 算法代码片段:

0 投票
1 回答
255 浏览

cluster-analysis - 有没有办法从 ELKI 将可达性列表输入到 Optics Xi 并获取集群?

我在将数据正确输入 ELKI 以通过光学算法运行时遇到了一些麻烦,但是使用光学的 R 实现,我可以轻松获得可达距离列表。我可以将它们写入这样的文件。(指数,距离)

1 婴儿

2 0.5

3 0.9 ...

我想找到由局部最小值分隔的集群。我认为 ELKI 软件中的 Optics Xi 算法可以做到这一点,但由于我在导入数据时遇到问题,我无法使用它。

使用光学论文中的伪代码以另一种语言编写光学集群提取算法会更容易吗?我认为最基本的是,当它们彼此相邻时,它只是将索引聚集在一起,并且不会减少到新的局部最小值。

谢谢

0 投票
2 回答
206 浏览

machine-learning - ELKI OPTICS 预计算距离矩阵

我似乎无法让这个算法在我的数据集上工作,所以我取了我的数据的一个非常小的子集并试图让它工作,但这也不起作用。

我想将一个预先计算好的距离矩阵输入到 ELKI 中,然后让它找到我的点的可达距离列表,但是我的所有点的可达距离都为 0。

我的 ELKI 论点如下:

运行:-dbc DBIDRangeDatabaseConnection -idgen.start 1 -idgen.count 4 -algorithm clustering.optics.OPTICSList -algorithm.distancefunction external.FileBasedDoubleDistanceFunction -distance.matrix /Users/jperrie/Documents/testfile.txt -optics.epsilon 1.0 -optics .minpts 2 -resulthandler ResultWriter -out /Applications/elki-0.7.0/elkioutputtest

我使用 DBIDRangeDatabaseConnection 而不是输入文件来创建索引 1 到 4 并传入具有以下格式的距离矩阵,其中每行有 2 个索引和一个距离。

任何指向我哪里出错的指针都将不胜感激。

0 投票
1 回答
101 浏览

cluster-analysis - 集群外部验证

我正在使用 ELKI 来使用 DBSCAN 和 OPTICS 执行位置聚类。我的数据集包括 30 个参与者,但它没有标记,但我确实有一对坐标(例如,家庭、工作等)作为每个参与者的常去地点。

我想知道这对坐标属于哪个集群(对于每个人)。一种方法是使用一些最小距离阈值手动检查每一对与每个集群。

实现这一目标的更好方法是什么?