graphframes.examples package

示例图与代码

class graphframes.examples.BeliefPropagation[source]

信念传播(BP)示例代码

这为构建针对不同类型图模型的定制化BP算法提供了一个模板。

此示例:

  • 网格上的伊辛模型

  • 使用着色字段的并行置信传播

伊辛模型是定义在二元变量上的概率图模型(参见Graphs.gridIsingModel())。

信念传播(BP)提供变量值 xi 的边际概率,即每个 i 对应的 P(xi)。这使得用户能够理解变量的可能取值。有关 BP 的更多信息,请参阅维基百科

我们使用批量同步信念传播算法,其中顶点批次被同步更新。 我们遵循Wainwright的演讲幻灯片第13页中的平均场更新算法: Wainwright的《图模型、消息传递算法与凸优化》。

批次根据着色进行选择。关于图着色推理的背景知识,请参阅例如:Gonzalez等人《并行吉布斯采样:从彩色场到细连接树》。AISTATS,2011年。

BP算法的工作原理如下:

  • 通过为每个顶点分配颜色来为图着色,使得相邻顶点不共享相同颜色。

  • 在BP的每一步中,更新单一颜色的所有顶点。交替使用颜色。

类方法 runBPwithGraphFrames(g: GraphFrame, numIter: int) GraphFrame[源代码]

使用 GraphFrame 运行置信传播。

这个BP实现展示了如何使用GraphFrame的aggregateMessages方法。

class graphframes.examples.Graphs(spark: SparkSession)[源代码]

用于测试API的示例GraphFrames

Parameters:

spark – Spark会话

好友() GraphFrame[源代码]

一个(虚构)社交网络中好友的GraphFrame。

网格伊辛模型(n: int, vStd: float = 1.0, eStd: float = 1.0) GraphFrame[源代码]

具有随机参数的网格伊辛模型。

伊辛模型是定义在二元变量 xi 上的概率图模型。 每个二元变量 xi 对应一个顶点,其取值可能为 -1 或 +1。 概率分布 P(X)(覆盖所有 xi)通过顶点因子 ai 和边因子 bij 进行参数化:

P(X) = (1/Z) * exp[ sum_i a_i x_i + sum_{ij} b_{ij} x_i x_j ]

其中 Z 是归一化常数(配分函数)。有关伊辛模型的更多信息,请参阅 维基百科

每个顶点由单个标量 ai 参数化。 每条边由单个标量 bij 参数化。

Parameters:
  • n – 网格单边的长度。网格尺寸将为 n x n。

  • vStd – 用于生成顶点因子“a”的正态分布的标准差。 默认值为 1.0。

  • eStd – 用于生成边因子“b”的正态分布标准差。 默认值为1.0。

Returns:

GraphFrame。顶点包含“id”和“a”列。边包含“src”、“dst”和“b”列。边是有向的,但在该模型上运行的任何算法中应将其视为无向边。顶点ID的格式为“i,j”。例如,顶点“1,3”位于网格的第二行和第四列。