当前位置: 首页 > 工具软件 > ELKI > 使用案例 >

java中lof算法_java – ELKI和RapidMiner中LOF实现的不同结果

严正诚
2023-12-01

我编写了自己的LOF实现,并且我试图将结果与ELKI和RapidMiner中的实现进行比较,但所有3都给出了不同的结果!我想弄清楚为什么.

我的参考数据集是一维的,102个实数值,有许多重复.我会尝试在下面发布.

首先,RapidMiner实现. LOF分数与ELKI和我的结果大不相同;许多人带着无穷大的LOF回来.此实施是否已经过验证是正确的?

我的结果与ELKI类似,但我没有得到完全相同的LOF值.通过快速扫描ELKI源代码中的注释,我认为这可能是因为计算k邻域的方式不同.

在LOF文件中,MinPts参数(在别处称为k)指定最小值.要包括在k-neighborhood中的点数.在ELKI实现中,我认为他们将k邻域定义为k个点而不是k距离或k个不同距离内的所有点.任何人都可以确切地确认ELKI如何构建k-neighborhood?还有一个私有变量允许点本身包含在它自己的邻域中,但看起来默认不包括它.

有没有人知道一个公共参考数据集,其中附有LOF分数用于验证目的?

—更多细节如下—

参考:ELKI源代码在这里:

RapidMiner源代码在这里:

这是我的测试数据集:

4.32323

5.12595 5.12595 5.12595 5.12595 5.7457 5.7457 5.7457

5.7457 5.7457 5.7457 5.97766 5.97766

6.07352 6.07352 6.12015 6.12015 6.12015 6.44797 6.44797

6.48131 6.48131 6.48131 6.48131 6.48131 6.48131 6.6333

6.6333 6.6333 6.70872 6.70872 6.70872 6.70872 6.70872

6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579

6.77579 6.77579 6.77579 6.77579 6.77579 6.77579 6.77579

6.77579

7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654

7.03654 7.03654 7.03654 7.03654 7.03654 7.03654 7.03654

7.03654 7.10361 7.10361 7.10361 7.10361 7.10361 7.10361

7.10361 7.10361 7.15651 7.15651 7.15651 7.15651 7.15651

7.15651 7.15651 7.15651

8.22598 8.22598 8.22598 8.22598 8.5538 8.5538 8.5538

8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538

8.5538 8.5538 8.5538 8.5538 8.5538 8.5538 8.5538

例如,我得到第一个数字(4.32323)的以下LOF分数:

> RapidMiner:无穷大(MinPts下限/上限设置为10,100)

> ELKI:2.6774(k = 10且distfunction / reachdistfunction设置为默认值)

>我的实施:1.9531

关于我的实现正在做什么的更多细节:

> MinPts是10,所以我找到了该点的10个不同的邻居.所以4.32323附近实际上是48点,从5.12595到6.77579.

>这给了我一个k-distinct距离2.45256

>我正在计算第一个邻居的可达性距离为1.58277

>我正在计算样本的LRD为1 /(99.9103 / 48)

>所有48个邻居的lrd(o)/ lrd(p)之和为93.748939

>除以48得到1.9531的LOF

 类似资料: