【问题标题】:Clustering unique datasets based on similarities (equality)基于相似性(平等)对独特的数据集进行聚类
【发布时间】:2015-04-18 18:27:59
【问题描述】:

我刚刚进入数据挖掘、机器学习和聚类领域。我有一个特殊的问题,不知道用什么技术来解决它。

我想对特定数据格式的观察结果(对象或其他)进行聚类。每个观察中的所有变量都是数字的。我的数据输入如下所示:

1 2 3 4 5 6

1 3 5 7

2 9 10 11 12 13 14

45 1 22 23 24

假设 n 表示行(观察,或一维向量,..),m 表示列(每个向量中的变量索引)。 n 可以是非常大的数字,并且 0 。另外要点是相同的观察(行)不能有相同的值(在第一行,一个值只能出现一次)。

所以,我想以某种方式执行聚类,我将根据包含每一行/观察的相同值的数量将观察放入一个集群中。

如果有两行类似:

1

1 2 3 4 5

它们应该聚集在同一个簇中,如果没有匹配则肯定没有。此外,一个集群中的每行数不应超过 100。

生病的问题..?如果没有,只是为了我没有提到时间维度的信息。但我们暂时跳过它。

所以,你们的任何指示,

感谢和最好的问候, JDK

【问题讨论】:

    标签: machine-learning cluster-analysis data-mining


    【解决方案1】:

    很难推荐任何东西,因为您的问题完全模糊,而且我们没有关于数据的信息。数据挖掘(尤其是探索性技术,如聚类)所有都是关于理解数据的。所以我们无法给出最终答案。

    您需要考虑两件事: 1. 如果数据表明存在物种或性状,Jaccard 相似度(和其他基于集合的指标)值得一试。 2. 如果缺席信息较少,也许你应该挖掘关联规则,而不是集群

    无论哪种方式,在不了解您的数据的情况下,这些数字与随机数字一样好。您可以轻松地对随机数进行聚类,并花费数周时间来获得最好的无用结果!

    【讨论】:

    • 感谢您的回答!我的数据就是上面那个数据。我的一个输入是从 0 到 281474976710655 (2^48) 的数字列表,列表中最多可以包含 100 个变量。我有数百万个这样的列表作为我的数据集,所以我想执行某种聚类(或其他技术),我想根据变量和列表之间的变量匹配对这些列表进行分组。就这么简单。
    • 但是这些数字是什么意思?不管它们如何存储,它们必须是有意义的,否则你注定失败。
    • Ofc 他们是有意义的......他们代表着“点”。这一点在空间领域是独一无二的。一个实体获得了多达 100 个这些点,因此我试图根据它们的点之间的相似性对实体进行聚类。所以实体 A 可以有点 1、2、3,实体 B 可以有点 3、4,实体 C 可以有 4、5。所以 A 和 C 之间有联系,在这种情况下,它们应该聚集在一起。现在想象一下,有数百万个实体和 2^48 个点分布在这些实体中......另外,仅供参考,我发现 Jaccard 相似性是一个好的开始......不确定是否足够......
    【解决方案2】:

    能否将您的问题视为词袋模型,其中每篇文章(观察行)的词条不超过 100 个?

    无论如何,我认为您必须提供有关“为什么”和“如何”对这些数据进行聚类的更多信息和示例。例如,我们有:

    1 2 3
    2 3 4
    2 3 4 5
    1 2 3 4
    3 4 6
    6 7 8
    9 10
    9 11
    10 12 13 14
    

    您期望的聚类是什么?这个聚类中有多少个聚类?只有两个集群?

    在您提供更多信息之前,根据您目前的描述,我认为您不需要集群算法,而是需要连接组件的结构。第一轮处理数据集以获取连接组件的信息,您需要第二轮检查每一行属于哪些连接组件。以上面的例子,第一轮:

    1 2 3   : 1 <- 1, 1 <- 2, 1 <- 3 (all point linked to the smallest point to
              represent they are belong to the same cluster of the smallest point)
    2 3 4   : 2 <- 4 (2 and 3 have already linked to 1 which is <= 2, so they do
              not need to change)
    2 3 4 5 : 2 <- 5
    1 2 3 4 : 1 <- 4 (in fact this change are not essential because we have
              1 <- 2 <- 4, but change this can speed up the second round)
    3 4 6   : 3 <- 6
    6 7 8   : 6 <- 7, 6 <- 8
    9 10    : 9 <- 9, 9 <- 10
    9 11    : 9 <- 11
    10 11 12 13 14 : 10 <- 12, 10 <- 13, 10 <- 14
    

    现在我们有一个森林结构来表示点的连通分量。第二轮你可以轻松地在每一行中拾取一个点(最小的就是最好的)并在森林中追踪它的根。用你的话来说,具有相同根的行在同一个簇中。例如:

    1 2 3   : 1 <- 1, cluster root 1
    2 3 4 5 : 1 <- 1 <- 2, cluster root 1
    6 7 8   : 1 <- 1 <- 3 <- 6, cluster root 1
    9 10    : 9 <- 9, cluster root 9
    10 11 12 13 14 : 9 <- 9 <- 10, cluster root 9
    

    这个过程需要 O(k) 空间,其中 k 是点数,以及 O(nm + nh) 时间,其中r 是森林结构的高度,其中 r m。 我不确定这是否是您想要的结果。

    【讨论】:

    • 感谢您的回答!不确定“词袋”,因为我在每一行都有不同的数字。问题是内部可能有超过 1000 行(实体)具有相同的变量。它们应该在同一个集群中,但我希望只有 100 个在同一个集群中。因此,应该考虑这种情况下某种更好的相似性。 Answ:我正在对内部具有相同变量的行(实体)进行聚类,并且规则是一个聚类中的实体不超过 100 个。簇的数量是未知的,因为行数是非常可变的,(以及每行内的值)。
    • 也许可以尝试一些层次聚类算法。他们可以继续将大集群分成小集群。我想你可以尝试修改一个继续分离,直到每个簇的大小 iiisci.org/Journal/CV$/sci/pdfs/GS315JG.pdf
    猜你喜欢
    • 2021-01-10
    • 2020-02-16
    • 2020-07-12
    • 2018-01-07
    • 2021-11-28
    • 2019-06-30
    • 2020-11-28
    • 2015-07-20
    • 2017-02-18
    相关资源
    最近更新 更多