Network-only-bayes-classifier 的伪代码
Posted
技术标签:
【中文标题】Network-only-bayes-classifier 的伪代码【英文标题】:Pseudo-code for Network-only-bayes-classifier 【发布时间】:2015-09-19 12:13:38 【问题描述】:我正在尝试使用igraph
和python
为单变量网络数据实现分类工具包。
但是,我的问题实际上更多是关系分类领域的算法问题,而不是编程问题。
我正在关注Classification in Networked Data论文。
我很难理解本文所指的“Network-Only Bayes Classifier”(NBC),它是本文中解释的关系分类器之一。
我之前使用词袋特征表示为文本数据实现了Naive Bayes
分类器。我对文本数据的Naive Bayes
的想法很清楚。
我认为这种方法 (NBC) 是将相同的想法简单地转化为关系分类领域。但是,我对方程式中使用的符号感到困惑,所以我无法弄清楚发生了什么。我还有一个关于here论文中使用的符号的问题。
NBC 在第 14 页 the paper 中进行了解释,
总结:
我需要paper,第 14 页中解释的“Network-Only Bayes Classifier”(NBC) 的伪代码。
伪代码表示法:
-
让我们调用
vs
图中的顶点列表。 len(vs)
是
长度。 vs[i]
是第 i 个顶点。
假设我们有一个单变量和二元场景,即vs[i].class
是0
或1
,并且节点没有其他给定特征。
假设我们之前运行了一个本地分类器,因此每个节点都有一个初始标签,该标签由本地分类器计算。我只对关系分类器部分感兴趣。
让我们称v
为我们试图预测的顶点,v.neighbors()
是与v
相邻的顶点列表。
假设所有边的权重都是1
。
现在,我需要以下伪代码:
def NBC(vs, v):
# v.class is 0 or 1
# v.neighbors is list of neighbor vertices
# vs is the list of all vertices
# This function returns 0 or 1
编辑:
为了让您的工作更轻松,我这样做了example。我需要最后两个方程的答案。
【问题讨论】:
很好的问题。我感兴趣地关注(如果不是实际答案;)) 【参考方案1】:用语言...
节点x_i
属于c
类的概率等于:
x_i
(称为N_i
)邻域的概率,如果x
确实属于c
类;乘以 ...
类c
本身的概率;除以 ...
邻域N_i
(节点x_i
)本身的概率。
就x
属于c
类的邻域N_i
(x_i
)的概率而言,它等于:
x
确实属于c
类,则邻域(N_i
) 的某个节点(v_j
) 属于c
类的概率
(提高到连接正在检查的节点和正在分类的节点的边的权重……但您对此不感兴趣……还)。 (我认为这里的符号有点偏离,为什么他们定义 v_j
然后从不使用它?...随便)。
最后,将product of some probability
与一些1/Z
相乘。为什么?因为所有p
s 都是probabilities,因此在0 到1 的范围内,但w
的权重可以是任何值,这意味着最终计算出的概率可能超出范围。
一些x_i
属于一个类c
的概率给定
来自其邻域的证据是一个后验概率。 (后
东西……这是什么东西? ...请参见下文)
如果x_i
出现邻域N_i
的概率
属于c
的类是可能性。
类c
本身的概率是先验概率。
之前……这是什么东西?证据。先前的
在没有任何证据的情况下告诉你上课的概率
呈现,但后验告诉你特定的概率
事件(x_i
属于 c
)鉴于其证据
邻里。
先验,可以是主观的。也就是说,通过有限的观察得出或成为知情意见。换句话说,它不一定是人口分布。它只需要足够准确,而不是绝对已知。
可能性更具挑战性。尽管我们在这里有一个公式,但必须从足够大的人口或尽可能多的关于正在观察的现象的“物理”知识来估计可能性。
在产品中(第二个等式中的大写字母 Pi,表示可能性),您有一个条件。条件是如果x
属于c
类,则邻域节点属于某个类的概率。
在Naive Bayesian Classifier的典型应用中,即document classification(例如垃圾邮件)中,条件an email is spam GIVEN THE APPEARANCE OF SPECIFIC WORDS IN ITS BODY
是派生由一个庞大的观察数据库,或者,一个巨大的我们确实、绝对知道它们属于哪个类别的电子邮件数据库。换句话说,我必须对垃圾邮件的外观有所了解,最终,大多数垃圾邮件都具有一些共同的主题(我是一些银行官员,我有赚钱的机会给你,给我你的银行详细信息,以便电汇给你,让你变得富有......)。
没有这些知识,我们就不能使用贝叶斯规则。
所以,回到您的具体问题。在您的 PDF 中,您在产品的推导中有一个问号。
没错。
所以这里真正的问题是:您的图表/数据的可能性是多少?
(...或你打算从哪里得到它?(很明显,要么是大量已知的观察结果要么有关该现象的一些知识。例如,一个节点被感染的可能性是多少,因为它的一部分邻域也被感染了))。
我希望这会有所帮助。
【讨论】:
感谢您的回答。这很有帮助。但是,我实际上是在寻找pseudo-code
。以上是关于Network-only-bayes-classifier 的伪代码的主要内容,如果未能解决你的问题,请参考以下文章