一、引言

(一)研究背景

随着科技的飞速发展,互联网已经成为现代社会的重要组成部分,为人们提供了便捷、高效的信息交流平台。社交网络作为互联网的重要应用之一,不仅改变了人们的交流方式,还积累了大量的用户数据。这些数据中蕴含着丰富的信息和价值,对于理解用户行为、预测社交趋势等具有重要意义。然而,如何从海量数据中提取有用信息,并对其进行有效分析和利用,是当前研究面临的重要挑战。因此,本研究旨在通过深入分析社交网络数据集,探索数据中的潜在规律和模式,为社交网络的研究和应用提供新的思路和方法

(二)研究目的

本研究的主要目的是通过深入分析社交网络数据集,利用现代数据分析和机器学习技术,揭示社交网络中的潜在结构和模式。具体而言,研究旨在:

全面理解社交网络数据集的特征:通过描述性统计和可视化技术,清晰展示数据集中的节点、边及其相关属性,为后续分析奠定基础。

探索词向量求解与图嵌入在社交网络分析中的应用:利用词向量和图嵌入技术,将高维、稀疏的社交数据转换为低维、稠密的向量空间表示,以便于进行更深入的分析和处理。

实施聚类分析以揭示数据中的潜在结构:采用多种聚类方法(如K-means、层次聚类和DBSCAN)对社交网络数据进行聚类分析,以发现数据中的相似性和差异性,揭示潜在的社交网络结构。

评估链路预测方法在社交网络中的有效性:通过链路预测方法,预测社交网络中节点之间可能存在的连接关系,并评估这些预测结果的准确性和可靠性,为社交网络分析、推荐系统等应用提供理论支持和实践指导。

综上所述,本研究旨在通过综合运用现代数据分析和机器学习技术,深入挖掘社交网络数据集中的潜在信息和价值,为社交网络领域的研究和应用提供新的思路和方法。

(三)数据集简介

在本研究中,我们采用了一个社交网络数据集作为研究对象。该数据集包含了大量的节点和边,节点代表社交网络中的个体,而边则表示个体之间的关系或连接。具体来说,数据集中包含4039个节点和88234条边,这样的规模使得我们能够进行深入的分析和挖掘。

该社交网络数据集具有复杂性和多样性的特点。节点之间通过不同的边相连,形成了复杂的网络结构。这些边可能代表朋友关系、关注关系、交互关系等多种类型的社会联系。同时,数据集中的节点也具备各自的属性和特征,如兴趣爱好、地理位置、职业背景等,这些信息为我们更深入地理解网络中的个体及其行为提供了可能。

通过对该数据集的分析,我们旨在揭示社交网络中的潜在结构和模式,发现用户之间的相似性和关联性,以及优化推荐系统、社交网络分析等领域的应用。此外,我们还将运用多种技术和方法,如描述性可视化、特征性统计、词向量求解与图嵌入、聚类分析以及链路预测等,对该数据集进行全面的研究和探索。

二、描述性可视化

(一)描述性统计

我们利用Python中的networkx库对数据进行了相对应的分析,使用它当中的read_edgelist函数将数据读取进来,我们先简单打印一下该网络数据的节点的数量和边的数量。

结果显示该社交数据集中包含节点个数为4039个,边的个数为88234条。

(二)特征性统计

接下来我们对这个数据进行分析,我们还是利用networkx库对数据中各个节点的度数、连通分量、直径、度的中心性、特征向量中心性、中介中心性、接近中心性、PageRank、HITS hubs、HITS anthorities进行分析,最后再画出图形以供我们观察,由于节点数太多,所以我们选择展示所有参数的前十个。

结果如下:

我们可以看到对于该网络图,107号节点和1912号节点似乎是个相对比较重要的节点,因为它们两个的度数和度的中心性等相关指标的值都是相较于最前的。

最后我们进行图像的可视化,得到社交网络图如下图所示:

由图可见由于数据中所包含的节点众多,导致显示的图显得很乱。所以我们必须进行相对应的处理,我们最常用的就是先将网络图的每个节点都进行向量化,然后进行对应的聚类和链路预测,从而更加深入了解我们的图结构。

接下来我们的工作就是根据该网络图选择相关的算法进行词向量求解与图嵌入让节点向量化,然后进行聚类和链路预测。

三、词向量求解与图嵌入

在自然语言处理任务中,词向量(Word Vector)和词嵌入(Word Embedding)是表示自然语言里单词的一种方法,图嵌入的目的是将图中的节点、边或整个图结构表示为低维、稠密的向量,以便进行后续的分析和处理。而词向量作为图嵌入的结果就是把每个词都表示为一个N维空间内的点,也就是一个高维空间内的向量。对一个网络图进行词向量求解,主要是为了将网络图中的节点(即单词或概念)转化为可以进行数学运算的向量形式,从而便于进行后续的分析和处理。

(一)词向量简介

表示语义信息:词向量能够将单词嵌入到低维空间中,使得具有相似语义的单词在向量空间中距离较近,从而为自然语言处理任务提供了更加有效的表示方式。这有助于实现词汇替换、同义词判定、情感分析等任务。

降低维度灾难:传统的文本表示方法如独热编码(One-Hot Encoding)会导致维度灾难的问题,即当词表很大时,特征向量的维度会非常高,导致稀疏性问题和计算开销问题。而词向量方法则可以将单词嵌入到低维空间中,降低了特征向量的维度。

支持计算语义相似度:词向量支持通过向量空间距离计算语义相似度,这有助于拓展自然语言处理的应用范围,如文本分类、聚类、信息检索等。

我们采用词嵌入的方法旨在希望将高维、稀疏的社交数据转换为低维、稠密的向量空间中的点,从而更容易进行可视化、分类、聚类等后续分析任务。这对于理解社交数据的潜在结构和模式、发现用户之间的相似性和关联性、以及优化推荐系统、社交网络分析等领域的应用都具有重要意义。图嵌入方法主要有DeepWalk,LINE,node2vec,Graph Convolutional Network (GCN),Structural Deep Network Embedding (SDNE),Graph Attention Network (GAT)。         

这里我们主要采用DeepWalk、LINE这两种方法对我们的网络图进行分析。

(二)Deepwalk方法介绍与实现

DeepWalk是一种基于随机游走的图嵌入方法。它首先在网络图中进行随机游走,生成一系列节点序列,然后将这些序列作为训练数据输入到word2vec模型中,学习节点的向量表示。这种方法的核心思想是利用随机游走捕捉图中的局部结构信息,并通过word2vec的模型架构将这些信息转化为低维向量

1、随机游走策略

(1)初始化:

对于每个节点,设定一个固定的游走长度(walk_length)和游走次数(num_walks)。

(2)选择起始节点:

对于每次游走,从图中随机选择一个节点作为起始点。

(3)生成游走路径:

从起始节点开始,随机选择一个邻居节点作为下一个节点,并将其添加到游走路径中。

(4)重复此过程,直到游走路径的长度达到预设的walk_length=10或当前节点没有未访问过的邻居节点为止。

(5)游走终止:

当游走路径达到预设长度或当前节点没有邻居时,游走终止,并返回生成的游走路径。

(6)重复游走:

对于图中的每个节点,重复上述过程num_walks=100次,以生成多个游走路径。

(7)打乱节点顺序:

在每次开始新的游走之前,打乱图中节点的顺序,以确保每次游走的起始点顺序不同,从而增加游走路径的多样性。

(8)词向量生成与评估

使用相似性度量(如余弦相似性)来评估生成的词向量。先打印出节点2的词向量(我这里设置它的维度vector_size=64)

(9)代码实现:

结果:我们通过运行程序最终打印节点2的向量

(三)LINE方法介绍与实现

LINE(Large-scale Information Network Embedding)是一种适用于大规模网络的嵌入方法。它提出了两种优化目标:一阶邻近度和二阶邻近度,以捕捉网络中节点之间的局部和全局连接关系。一阶邻近度衡量的是直接相连的节点之间的相似性,而二阶邻近度则衡量的是具有共同邻居的节点之间的相似性。LINE通过优化这两个目标来学习节点的向量表示。

1、一阶和二阶邻近性保持

一阶邻近性保持

一阶邻近性指的是网络中直接相连的节点之间的关系。在 LINE 算法中,一阶邻近性保持是通过优化节点与其直接邻居之间的嵌入向量来实现的。

获取一阶上下文:方法 _get_first_order_context(self, node) 返回给定节点的一阶邻居列表。这些邻居是节点在网络中直接相连的节点。

损失函数:在 _loss(self, node, context, neg_samples) 方法中,当 order 参数设置为 1 时,context 变量包含的是节点的一阶邻居。损失函数计算了节点与其一阶邻居之间的正样本损失(pos_loss),以及节点与随机选择的负样本之间的负样本损失(neg_loss)。这个损失函数鼓励节点与其一阶邻居的嵌入向量在空间中更加接近,而与负样本的嵌入向量更加远离。

二阶邻近性保持

二阶邻近性指的是网络中通过其他节点间接相连的节点之间的关系。在 LINE 算法中,二阶邻近性保持是通过优化节点与其二阶邻居(即共享相同邻居的节点)之间的嵌入向量来实现的。

获取二阶上下文:方法 _get_second_order_context(self, node) 返回给定节点的二阶邻居列表。这些邻居不是直接相连的,但它们与给定节点有共同的一阶邻居。

损失函数:同样在 _loss(self, node, context, neg_samples) 方法中,当 order 参数设置为 2 时,context 变量包含的是节点的二阶邻居。损失函数的计算方式与一阶邻近性保持时类似,但此时是针对二阶邻居进行的。这鼓励了在网络中具有相似邻居结构的节点在嵌入空间中也更加接近。

代码:

结果:

四、聚类分析

(一)聚类方法介绍

聚类是数据挖掘和机器学习中的一种重要技术,旨在将数据集划分为多个组或簇,使得同一簇内的数据点彼此相似,而不同簇的数据点则差异较大。以下是几种常见的聚类方法介绍:

1、K-means聚类

简介:K-means是一种基于划分的聚类方法,其中“K”表示要形成的簇的数量。该算法通过迭代的方式,将数据点分配到K个簇中,并尝试最小化每个簇内数据点到簇中心的距离平方和。

步骤:

选择K个初始的簇中心(可以是随机选择的)。

计算每个数据点到K个簇中心的距离,并将数据点分配给最近的簇中心。

更新每个簇的簇中心为簇内所有数据点的平均值。

重复步骤2和3,直到簇中心不再发生变化或达到预设的迭代次数。

优点:简单易懂,计算速度快,适用于大规模数据集。

缺点:对初始簇中心的选择敏感,可能陷入局部最优解;K值的选择对结果有很大影响;对噪声和异常点敏感。

代码及实现:

结果:

2、层次聚类

简介:层次聚类是一种创建层次分解的聚类方法,可以是自底向上的(凝聚的)或自顶向下的(分裂的)。凝聚层次聚类开始时将每个数据点视为一个单独的簇,然后逐步合并最相似的簇,直到满足某个停止条件。

步骤:

将每个数据点视为一个单独的簇。

计算簇之间的距离(如最近邻距离、最远距离、平均距离等)。

合并距离最近的两个簇。

重复步骤2和3,直到所有簇合并为一个或达到预设的簇数量。

优点:能够生成层次化的聚类结构,适用于不同粒度的聚类需求。

缺点:计算复杂度高,特别是当数据集较大时;合并或分裂的决策是不可逆的,可能导致错误的聚类结果。

代码及结果:

3、DBSCAN聚类

简介:DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类方法,能够识别任意形状的簇,并处理噪声点。

步骤:

对于每个数据点,找到其ε邻域内的所有点(即与当前点距离小于ε的所有点)。

如果一个数据点的ε邻域内包含至少MinPts个点,则称该点为核心点。

对于每个核心点,扩展其簇,直到包含所有密度可达的点(即通过一个或多个核心点的ε邻域相连的点)。

噪声点是不属于任何簇的点。

优点:能够识别任意形状的簇,对噪声点有较好的鲁棒性。

缺点:对ε和MinPts参数的选择敏感;对于高维数据或密度不均匀的数据集,可能效果不佳。

代码及结果:

结合我们的数据集,我们最终采用K-means聚类的方法,结果打印各种方法的聚类中心和聚类数目,用于模型的分析

五、链路预测

(一)链路预测方法介绍

链路预测是预测网络中节点之间可能存在的连接关系的一种方法,它在社交网络分析、推荐系统、生物信息学等领域有着广泛的应用。以下是几种常见的链路预测方法的介绍:

1、基于相似性的方法

基于相似性的方法是链路预测中最简单且直观的方法之一。它基于网络中节点之间的相似性来预测潜在的连接关系。

(1)局部相似性:

公共邻居(CN):两个节点之间的相似性可以通过它们共同拥有的邻居数量来衡量。公共邻居数量越多,节点间存在连接的可能性就越大。

Jaccard系数:考虑了节点邻居的数量,即如果两个节点共同邻居的数量在它们所有邻居数量中占比很大,那么它们更容易建立联系。

Adamic/Adar指数(AA):对公共邻居进行加权,权重与邻居的度成反比。即,如果某个邻居拥有更多的度(更多的邻居),那么它的权重越小。

资源分配指数(RA):与AA指数相似,但对高度节点的惩罚更大。

优先链接(PA):基于节点度的乘积来衡量相似性。认为如果两个节点的邻居节点越多,它们成为邻居的概率也越大。

(2)全局相似性:

Katz指数(KI):聚合了两个节点间的所有路径,路径越长权重越小。

随机游走与重启(RWR):模拟从某个节点开始的随机游走过程,通过计算游走者到达其他节点的概率来评估节点间的相似性。

2、基于概率图模型的方法

基于概率图模型的方法通过构建网络结构的概率模型来进行链路预测。

随机图模型:如Erdős-Rényi模型、Barabási-Albert模型等,这些模型对网络的形成规律做出严格的假设,并基于这些假设来预测潜在的连接关系。

概率关系模型:表示基于数据集属性上的联合概率分布,允许对象的属性概率性地依赖于该对象的其他属性以及相关对象的属性。例如,条件贝叶斯网络、关系马尔科夫网络等,它们可以构建数据图、模型图和推理图,通过推理图计算连接产生的条件概率来进行链路预测。

3、基于机器学习的方法

机器学习方法在链路预测中也得到了广泛应用。这些方法通常利用历史链路数据和一些特征来训练模型,然后基于训练好的模型进行预测。

监督学习方法:如支持向量机(SVM)、决策树、随机森林等,它们可以直接利用已知的链路数据作为训练集,通过学习节点之间的连接模式来预测新的连接关系。

半监督或无监督学习方法:如矩阵分解、图嵌入等,它们可以在没有完整标签信息的情况下进行链路预测。例如,图嵌入方法可以将网络中的节点映射到低维空间中,通过计算节点在低维空间中的距离或相似性来预测链路。

4、其他方法

除了上述方法外,还有一些其他链路预测方法,如基于网络拓扑特性的方法、基于节点属性的方法等。这些方法通常结合了网络的结构信息和节点的属性信息来进行预测。

基于网络拓扑特性的方法:通过分析网络的度分布、聚类系数、路径长度等特性来预测链路。例如,可以利用节点的度中心性、介数中心性等指标来评估节点在网络中的重要性,并基于这些指标进行链路预测。

基于节点属性的方法:如果节点具有一些属性信息(如文本描述、用户资料等),则可以利用这些属性信息来计算节点之间的相似性,并进行链路预测。例如,可以利用余弦相似性、Jaccard相似性等指标来计算属性之间的相似性。

链路预测方法多种多样,每种方法都有其独特的优点和适用场景。在实际应用中,应根据具体问题和数据特性选择合适的链路预测方法。同时,也可以尝试结合多种方法进行综合预测,以提高预测的准确性和鲁棒性。

这里我们采用词嵌入方法中的DeepWalk和LINE方法的链路预测

DeepWalk方法

结果实现:

LINE方法

结果实现:

六、结论与展望

(一)研究总结

本研究通过深入分析社交网络数据集,成功运用了描述性统计、词向量求解与图嵌入、聚类分析(包括层次聚类和DBSCAN聚类)以及链路预测等多种技术,揭示了社交网络中的潜在结构和模式。

研究过程中,采用了DeepWalk和LINE两种图嵌入方法,有效降低了数据的维度并提取了有效信息,为后续分析提供了便利。

(二)主要发现与贡献

研究发现,通过词向量求解与图嵌入,可以将高维、稀疏的社交数据转换为低维、稠密的向量表示,从而更容易进行可视化、分类和聚类等后续分析任务。

聚类分析的结果表明,社交网络中的节点呈现出一定的聚集性,不同簇中的节点具有不同的特征和属性。

链路预测方法的应用,为预测社交网络中节点之间可能存在的连接关系提供了有效的手段。

(三)研究局限与未来工作方向

本研究在聚类分析时,虽然采用了多种方法,但聚类数目的选择仍具有一定的主观性,未来可以探索更客观的聚类数目确定方法。

链路预测的准确性有待提高,可以考虑结合更多特征和算法进行优化。

未来的研究还可以进一步探索社交网络数据集中的其他潜在信息和价值,如用户行为分析、社交趋势预测等。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐