【问题标题】:Find "complemented" bit vectors clusters查找“互补”位向量簇
【发布时间】:2017-08-30 14:07:00
【问题描述】:

我有一个庞大的位向量 (BV) 列表,我想将这些位向量 (BV) 分组。

这个集群背后的想法是能够从每个集群中选择后面的 BV,并将它们组合起来以生成一个(几乎)全为 1(必须最大化)的 BV。

例如,假设 1 表示应用在特定时间节点 X 中处于运行状态,而 0 在节点 X 中处于关闭状态。我们想找到让应用启动的最小节点列表:

    App BV for node X in cluster 1:  1 0 0 1 0 0

    App BV for node Y in cluster 2:  0 1 1 0 1 0

    Combined BV for App (X+Y):       1 1 1 1 1 0 

我一直在检查不同的集群算法,但我确实找到了一个考虑到这种“互补”行为的算法,因为在这种情况下,BV 的每一列都没有提到一个特征(仅表示在特定时间范围内向上或向下)。

关于其他算法,如 k-means 或层次聚类,我不清楚是否可以在聚类算法中包含这一考虑因素以供以后分组。

最后,我使用汉明距离来确定集群内和集群间距离,因为它似乎是二进制数据最合适的度量,但结果表明集群没有紧密地分组和分开所以我想知道我是否应用了最合适的分组/近似方法,或者即使我应该过滤之前分组的输入数据。

欢迎任何关于分组/聚类方法或过滤数据的线索或想法。

【问题讨论】:

    标签: match cluster-analysis heuristics


    【解决方案1】:

    这听起来根本不像是一个聚类问题。

    这些算法都不会帮助您。

    相反,我宁愿称其为匹配算法。但我认为找到真正的最优值至少是 NP-hard(它类似于 set cover),所以你需要想出一个快速的近似值。最适合您的用例的东西。

    您还没有指定(您写了 + 但这可能不是您想要的)如何组合两个 1。是异或还是或?也不可能结合两个以上,这样做的成本是多少。一种策略是为每个找到逆位向量的最近邻居,并始终组合最佳对。

    【讨论】:

    • 感谢您的回答。我不想详细说明,但回答您的问题,您可以组合两个以上的 BV,它们将由 OR 组合(如果我没有错,xor 将确定 2 BV 的距离或差异)。然后的问题是选择并最小化 BV 的数量,这些 BV 的组合为您提供了一个 BV 和全 1。
    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2015-06-23
    • 2015-05-10
    • 2015-01-21
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多