【问题标题】:Algorithm for classification of vertices in a graph based on their weight基于权重对图中顶点进行分类的算法
【发布时间】:2016-04-08 14:23:43
【问题描述】:

我有以下完整的加权图,其中每个权重表示一个顶点与下一个属于同一类别的概率。我先验地知道某些顶点所属的类别;我如何能够对所有其他顶点进行分类?

以更详细的方式,我可以将问题描述如下;从所有顶点 N 和集群 C 中,我们有一个集合,我们可以确定一个节点所属的特定集群:P(v_n|C_n)=1。从给定的图表中,我们还知道对于每个节点,每个其他节点与它属于同一集群的概率:P(v_n1∩C_n2)。由此,我们如何估计每个其他节点的集群?

【问题讨论】:

  • (100%?)的概率是多少 你有什么方法可以检查你的答案是否正确吗?您想要一个聚类,还是目标是从可能的聚类中抽样?
  • 似乎是page rank 的变体(或加权页面排名)在 n->infinity 步骤之后,随机冲浪者在顶点的概率是(我认为?)顶点的概率同班。
  • 听起来你想要multiway cut之类的东西。
  • 第一次不是那么糟糕的问题。 +1 并欢迎来到这里。但请注意:您的任务没有定义,它缺少大量信息。你最好添加它们。
  • @Gangnus 谢谢。我想让这个问题尽可能简短。我仍在阅读您的回复,但同时我会根据要求添加更多细节。

标签: algorithm graph classification knn vertices


【解决方案1】:

w_i 是一个向量,其中w_i[j] 是节点j 在迭代i 时位于集群中的概率。

我们定义w_i

w_0[j] =  1       j is given node in the class
          0       otherwise
w_{i}[j] = P(j | w_{i-1})

其中:P(j | w_{i-1}) 是 j 在集群中的概率,假设我们知道每个其他节点 k 在其中的概率,如 w_{i-1}[k]

我们可以计算出上面的概率:

P(j | w_{i-1}) = 1- (1- w_{i-1}[0]*c(0,j))*(1- w_{i-1}[1]*c(1,j))*...*(1- w_{i-1}[n-1]*c(n-1,j))

在这里:

  • w_{i-1} 是最后一次迭代的输出。
  • c(x,y)是边(x,y)的权重
  • c(x,x) = 1

重复直到收敛,在收敛的向量中(设为w),j在集群中的概率为w[j]


概率函数说明:

为了使一个节点不在集合中,它需要所有其他节点“决定”不共享它。
所以,发生这种情况的概率是:

(1- w_{i-1}[0]*c(0,j))*(1- w_{i-1}[1]*c(1,j))*...*(1- w_{i-1}[n-1]*c(n-1,j))
      ^                            ^                       ^
node 0 doesn't share      node 1 doesn't share     node n-1 doesn't share

为了在课堂上,至少有一个节点需要“共享”,所以发生这种情况的概率是互补的,这就是我们为P(j | w_{i-1})推导的公式

【讨论】:

  • 在不知道解决方案是否存在的情况下进行迭代是稳定的,绝对没有意义。
  • @amit 感谢您的详细回复。我仍在尝试了解建议的解决方案。如果我错了,请告诉我;如果我们知道节点n在集群中:P(v_n|C_n)=1,节点j在n的集群中的概率:P(v_{n+j}|C_n)=1*P(v_{ n+1}∩C_n)*P(v_{n+2}∩C_ {n+1})*P(v_{n+3}∩C_{n+2})... ;其中 P(v_x∩C_y) 就是你所说的 c(x, y)。这背后的原因是什么?
  • @amit 为了澄清我的最后评论,我的问题是天气,我所说的是您的分布函数的含义。另外,如果我有 N 个节点,对于每个我先验地知道它们的集群的节点,我将有不同的值,具体取决于我开始迭代的特定节点,你将如何解决这个问题?此外,我的假设是您从已经分类的节点开始并从该节点开始迭代?
【解决方案2】:

你应该从结果的定义开始。你应该如何显示归属的概率?

恕我直言,结果应该是一组类别和一个表格:顶点的行和类别的列,并且在单元格中,该顶点可能属于该类别。

只有当你已经有一些已知的概率时,你的图表才能设置一些归属概率。即,该表已经部分填满。

在根据边缘的起始值和权重填充表格时,我们肯定会遇到这种情况,当我们在单元格中获得不同的概率时,以不同的方式进入它。还要设置一点:我们可以更改表中的起始值还是几乎不设置它们?边的权重也有同样的问题。

现在任务部分定义了,部分非常非常小。你连类别的数量都不知道!

设置完所有这些规则和数字后,一切都变得非常简单 - 使用小二乘高斯方法。至于迭代方式,请小心 - 您事先不知道解决方案是否稳定或是否存在。如果没有,迭代将不会收敛,并且您为它编写的整个代码都是徒劳的。通过高斯方法,您将获得一组线性方程,并编写标准算法来解决所有情况。最后,您不仅有解决方案,还有每个最终值的可能错误。

【讨论】:

  • 感谢您的回复。在这方面还是新手,所以让我问你,你认为什么是线性方程组的稳定解,因为我不知道正确答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 2023-03-04
  • 2021-09-14
  • 2018-08-22
  • 1970-01-01
相关资源
最近更新 更多