0

我正在尝试从高维数据集中检测密集子空间。为此,我想使用 ELKI 库。但是 ELKI 库的文档和示例很少。

我尝试了以下 -

    Database db=makeSimpleDatabase("D:/sample.csv", 600);

    ListParameterization params = new ListParameterization();
    params.addParameter(CLIQUE.TAU_ID, "0.1");
    params.addParameter(CLIQUE.XSI_ID, 20);

    // setup algorithm
    CLIQUE<DoubleVector> clique = ClassGenericsUtil.parameterizeOrAbort(CLIQUE.class, params);

    // run CLIQUE on database
    Clustering<SubspaceModel<DoubleVector>> result = clique.run(db);

    for(Cluster<?> cl : result.getToplevelClusters()) {
        System.out.println(cl.getIDs());
    }

我给出了以下输入-

2,2
2,3
5,2
5,3
8,4

结果是——

[2, 1]
[4, 3]
[5]
[3, 1]
[4, 2]
[5]
[1]
[2]
[3]
[4]
[5]

我希望输出作为分组到子空间的输入数据点。可能是我选择了错误的值或以错误的方式设置参数。

请帮忙。提前致谢。

4

1 回答 1

2

请注意,CLIQUE 会产生重叠的集群。

元素可以同时在 0 到多个簇中。如果您选择错误的参数(并且 CLIQUE 参数似乎真的很难选择),您将得到奇怪的结果。在您的情况下,它似乎是 11 个集群,尽管您的数据集只有 5 个元素。

从本质上讲,聚类告诉您的是:

元素 [2,1] 簇(它们都有 x=2)

元素 [4,3] 簇(它们都有 x=5)

元素 [5] 是一个簇(只有 x=8 的元素)

元素 [3,1] 簇(它们都有 y=2)

元素 [4,2] 簇(它们都有 y=3)

元素 [5] 是一个簇(只有 y=4 的元素)

在 x,y 子空间中,每个元素都是独立的,并且都有自己的集群。

为这个脆弱的算法选择更好的参数。

TAU = 0.1(5 分的 10%):任何超过 0.5 分的东西都是一个集群……换句话说,就是所有东西。这就是你得到这个结果的原因——你要求它。

于 2015-05-07T21:15:39.240 回答