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”位于网格的第二行和第四列。