igraph 参考手册

用于使用 igraph C 库

搜索手册

第 27 章。图的嵌入

1. 谱嵌入

1.1. igraph_adjacency_spectral_embedding — 邻接矩阵谱嵌入

igraph_error_t igraph_adjacency_spectral_embedding(const igraph_t *graph,
                                        igraph_integer_t n,
                                        const igraph_vector_t *weights,
                                        igraph_eigen_which_position_t which,
                                        igraph_bool_t scaled,
                                        igraph_matrix_t *X,
                                        igraph_matrix_t *Y,
                                        igraph_vector_t *D,
                                        const igraph_vector_t *cvec,
                                        igraph_arpack_options_t *options);

图的邻接矩阵的谱分解。此函数基于图的邻接矩阵 A 计算图的 n 维欧几里得表示。该表示通过邻接矩阵 A 的奇异值分解 A=U D V^T 计算。如果图是使用 R^n 中每个顶点的潜在位置向量生成的随机点积图,则嵌入将提供这些潜在向量的估计。

对于无向图,潜在位置计算为 X = U^n D^(1/2),其中 U^n 等于 U 的前 no 列,D^(1/2) 是一个对角矩阵,包含对角线上选定的奇异值的平方根。

对于有向图,嵌入定义为一对 X = U^n D^(1/2), Y = V^n D^(1/2)。 (对于无向图,U=V,因此只需保留其中一个。)

参数: 

:

输入图,可以是定向图或无向图。

n:

一个整数标量。此值是谱嵌入的嵌入维度。应小于顶点数。最大的 n 维非零奇异值用于谱嵌入。

weights:

可选的边权重。为无权图提供空指针。

which:

要使用的特征值(或奇异值,对于有向图),可能的值

IGRAPH_EIGEN_LM

具有最大幅度的值

IGRAPH_EIGEN_LA

(代数)最大的值

IGRAPH_EIGEN_SA

(代数)最小的值。

对于有向图,IGRAPH_EIGEN_LMIGRAPH_EIGEN_LA 是相同的,因为奇异值用于排序而不是特征值。

缩放:

是否返回 X 和 Y(如果 scaled 为真),或 U 和 V。

X:

初始化的矩阵,估计的潜在位置存储在此处。

Y:

初始化的矩阵或空指针。如果不是空指针,则潜在位置的后半部分存储在此处。(对于无向图,这始终等于 X。)

D:

初始化的向量或空指针。如果不是空指针,则特征值(对于无向图)或奇异值(对于有向图)存储在此处。

cvec:

一个数值向量,其长度是图中的顶点数。在执行 SVD 之前,此向量被添加到邻接矩阵的对角线。

选项:

ARPACK 的选项。 有关详细信息,请参阅igraph_arpack_options_t。 提供 NULL 以使用默认值。 请注意,该函数会覆盖 n(顶点数)、nevwhich 参数,并且始终从随机起始向量开始计算。

返回值: 

错误代码。

1.2. igraph_laplacian_spectral_embedding — 图的拉普拉斯矩阵的谱嵌入

igraph_error_t igraph_laplacian_spectral_embedding(const igraph_t *graph,
                                        igraph_integer_t n,
                                        const igraph_vector_t *weights,
                                        igraph_eigen_which_position_t which,
                                        igraph_laplacian_spectral_embedding_type_t type,
                                        igraph_bool_t scaled,
                                        igraph_matrix_t *X,
                                        igraph_matrix_t *Y,
                                        igraph_vector_t *D,
                                        igraph_arpack_options_t *options);

此函数本质上与 igraph_adjacency_spectral_embedding 执行相同的操作,但在图的拉普拉斯矩阵上工作,而不是邻接矩阵。

参数: 

:

输入图。

n:

用于嵌入的特征向量(如果图是有向图,则为奇异向量)的数量。

weights:

可选的边权重。为无权图提供空指针。

which:

要使用的特征值(或奇异值,对于有向图),可能的值

IGRAPH_EIGEN_LM

具有最大幅度的值

IGRAPH_EIGEN_LA

(代数)最大的值

IGRAPH_EIGEN_SA

(代数)最小的值。

对于有向图,IGRAPH_EIGEN_LMIGRAPH_EIGEN_LA 是相同的,因为奇异值用于排序而不是特征值。

type:

要使用的拉普拉斯矩阵的类型。 存在各种图的拉普拉斯矩阵的定义,并且可以使用此参数在它们之间进行选择。 可能的值

IGRAPH_EMBEDDING_D_A

表示 D - A,其中 D 是度矩阵,A 是邻接矩阵

IGRAPH_EMBEDDING_DAD

表示 Di times A times Di,其中 Di 是度矩阵的平方根的倒数;

IGRAPH_EMBEDDING_I_DAD

表示 I - Di A Di,其中 I 是单位矩阵。

缩放:

是否返回 X 和 Y(如果 scaled 为真),或 U 和 V。

X:

初始化的矩阵,估计的潜在位置存储在此处。

Y:

初始化的矩阵或空指针。如果不是空指针,则潜在位置的后半部分存储在此处。(对于无向图,这始终等于 X。)

D:

初始化的向量或空指针。如果不是空指针,则特征值(对于无向图)或奇异值(对于有向图)存储在此处。

选项:

ARPACK 的选项。 有关详细信息,请参阅igraph_arpack_options_t。 提供 NULL 以使用默认值。 请注意,该函数会覆盖 n(顶点数)、nevwhich 参数,并且始终从随机起始向量开始计算。

返回值: 

错误代码。

另请参阅: 

嵌入邻接矩阵的igraph_adjacency_spectral_embedding

1.3. igraph_dim_select — 维度选择。

igraph_error_t igraph_dim_select(const igraph_vector_t *sv, igraph_integer_t *dim);

使用配置文件似然选择奇异值的维度。

该函数的输入是一个数值向量,其中包含每个维度的“重要性”度量。

对于谱嵌入,这些是邻接矩阵的奇异值。 假设奇异值是从具有不同均值和相同方差的两个分量的高斯混合分布生成的。 选择维度 d 以最大化似然性,当 d 个最大的奇异值被分配给混合的一个分量,而其余的奇异值被分配给另一个分量时。

此函数也可以用于一般的分离问题,我们假设向量的左侧和右侧来自两个正态分布,具有不同的均值,并且我们想知道它们的边界。

参数: 

sv:

一个数值向量,排序后的奇异值。

dim:

结果存储在此处。

返回值: 

错误代码。

时间复杂度:O(n),n 是 sv 中的值的数量。

另请参阅: