【问题标题】:Finding the most tree-like hierarchy that explains the data找到解释数据的最类似树的层次结构
【发布时间】:2015-01-15 22:29:56
【问题描述】:

考虑以下数据框:

      A  B  C
1    A1 B1 C1
2    A2 B2 C2
3    A3 B1 C1
4    A1 B1 C2
5    A2 B1 C1
6    A1 B4 C2

其中ABC 表示属性。我希望推断ABC 之间的最有可能 层次结构。我的意思是找到{A,B,C} 的排序,它会产生一个层次结构,其中包含多个父节点的节点数量最少。

例如,让我们考虑一种分层的可能性:

A->B->C

我们注意到它有多个父节点。为了看到这一点,我们观察到A1B1 B4A1 B1 C1A1 B4 C1 的组合中同时出现。但是,A3 B1 在行3A3 B1 C1 中同时出现。

换句话说,只关注图的这一部分,如果我们假设层次结构A->B->C,我们将有一个节点B1,有两个父节点:

                              

因此,问题是,给定一个像上面这样的任意数据框,我如何才能找到产生最少数量的具有多个父节点的列的层次顺序?

注意事项:

这个问题还有更多变种,例如

  1. 查找具有最少(额外)多父边数的层次结构
  2. 找到边数最少的层次结构

解决这些变体中的任何一个都很棒。

【问题讨论】:

  • 那些不是周期。它只是一个节点 B1 有多个父节点。
  • @cheper 够公平的。当然,可以制定出“最类似树形”问题的几种变体(例如least number of nodes with more than one parentleast number of parent-to-child edges)。我改写了 OP 来纠正这个问题,并选择我认为最能抓住我手头问题的一个。

标签: python algorithm numpy pandas machine-learning


【解决方案1】:

这是您的数据框的无向图。边 (x,y) 表示有一些数据线同时提到了 x,y。

例如 - 最后一行 "A1,B4,C2" 添加边 (A1,B4), (B4,C2), (A1,C2)

现在可以根据您的意愿对 A、B、C 进行排序。

找到具有最少(额外)多父边数的层次结构

我们可以强制所有安排(N = 8..10 相当快)并找到最便宜(最小、最短)的安排。这种树(下)中的边缘成本可以通过上图计算。

Mb 可能会有一些贪婪的方法,比如“在当前步骤中选择最便宜的”,我现在不确定,但我很确定这种问题的表示是有针对性的。

【讨论】:

  • 谢谢。你是如何从第一张图得到第二张图的? (即算法)。
  • @user815423426 我没有。第二张图只是问题“暴力破解所有可能的安排(ABC,ACB,BAC,BCA,CAB,CBA)”的表示。但是边的成本(多父边的数量)应该由第一个图计算(以选择最佳排列)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
相关资源
最近更新 更多