【发布时间】: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