社交网络分析4(上):社交网络链路预测分析、Logistic回归模型、LLSLP方法(LightGBM 堆叠链路预测)、正则化方法、多重共线性

写在最前面

《社交网络分析》课程由鲁宏伟老师授课,其教学方式不仅严谨负责,还充满幽默与个人见解。这个方向对我而言也尤其有吸引力,怀着极大的兴趣选修了这门课程。

四、社交网络链路预测方法
主要结合三个PPT:社交网络链路预测分析、LightGBM框架、Logistic回归模型概述
本章简要介绍社交网络隐私攻击和保护的基本概念和方法


在这里插入图片描述

在这个由连接驱动的数字时代,社交网络不仅仅是连接人与人的桥梁,它们还蕴含着深刻的社会、经济和技术洞见。从Facebook到LinkedIn,社交网络的每一个点击、每一条信息流,都构成了一个复杂且动态的网络结构。但是,这些看似简单的连接背后隐藏着什么秘密?如何预测未来可能形成的社交联系,从而揭示隐藏在数据背后的深层次模式和趋势?这就是社交网络链路预测分析的魅力所在。

在这篇博客中,我们将深入探讨社交网络链路预测分析的核心,解析它的基本概念、重要性以及各种现代方法。我们将介绍从基于网络结构的传统方法到利用深度学习和人工智能的先进技术,如何在社交网络的海洋中捕捉那些看不见的线索。

我们不仅仅停留在理论层面,还将深入探讨实际应用,包括:

  • 链路预测的目标和具体应用场景。
  • 各类链路预测方法的分类和原理。
  • 逻辑斯蒂回归在链路预测中的独特作用。
  • 创新的逻辑斯蒂回归 LightGBM 堆叠链路预测(LLSLP)方法及其步骤。
  • LightGBM在处理大数据和高维特征时的策略。
  • 正则化在LLSLP方法中的关键作用。
  • 层叠泛化在LLSLP方法中的重要性及其应用。

社交网络链路预测不仅面临数据稀疏性、模型泛化能力、计算复杂性等挑战,还需要不断适应快速变化的网络环境和实时数据更新的要求。本博客将为您提供一个全面的视角,探索社交网络链路预测分析的现状、挑战和未来发展趋势。

准备好深入这个领域了吗?让我们开始这段探索之旅!

社交网络链路预测分析概述

链路预测分析简介

链路预测分析是一种方法,用于预测社交网络中用户间可能存在的联系。它主要分为以下几种方法:

  1. 基于网络结构的方法:依据社交网络的结构特征。
  2. 基于内容的方法:根据用户生成的内容进行预测。
  3. 基于用户行为的方法:依据用户的活动和互动模式。

此分析的目标是预测未来可能形成的联系,从而提升社交网络的推荐质量和预测准确性。它在社交网络、推荐系统、数据挖掘等领域有着广泛的应用。

链路预测分析的重要性

链路预测分析在多个领域都有显著应用,包括但不限于:

  • 社交网络:预测用户间的社交关系,提升推荐系统的准确性。
  • 生物信息学:预测蛋白质间的相互作用,助力药物研发。
  • 交通网络:预测交通流量,优化交通规划。
  • 通信网络:预测网络拓扑结构,增强网络性能和可靠性。

社交网络链路预测分析方法

基于网络结构的方法

  • 邻接矩阵方法:利用邻接矩阵信息进行预测。
  • 图论方法:应用图论概念和算法。
  • 社区结构方法:根据社交网络的社区结构进行预测。
  • 网络演化方法:基于社交网络演化规律。

基于节点属性的方法

  • 节点度:考虑节点与其他节点的连接数量。
  • 节点中心性:评估节点在网络中的重要性。
  • 节点聚类系数:衡量节点所在社群的紧密程度。
  • 节点属性:如年龄、性别、兴趣等特征。

基于随机游走的方法

  • 随机游走模型:构建节点间的联系和传播模型。
  • 随机游走算法:通过模拟过程预测联系和传播概率。

基于深度学习的方法

  • 卷积神经网络(CNN):提取节点特征。
  • 自编码器(Autoencoder):学习低维表示。
  • 循环神经网络(RNN):处理时序信息,如用户行为序列。
  • 生成对抗网络(GAN):生成新的社交网络链接。
  • 图神经网络(GNN):处理图结构信息。
  • 强化学习(RL):优化模型参数。

基于相似性和基于似然性的链路预测方法

基于相似性的方法

基于相似性的链路预测方法主要分为三类:基于邻居、基于路径和基于随机游走。

基于邻居的方法

  • 这种方法假设两个节点若有更多共同邻居,则更可能存在链接。
  • Newman提出了使用共同邻居(Common Neighbor, CN)指数来衡量节点间的相似性,并引入了多个变体,如Salton指数、资源分配(Resource Allocation, RA)指数、Adamic-Adar(AA)指数等。
  • 实验结果显示,RA指数表现最优,而PA指数整体表现较差。

基于路径的方法

  • 使用节点间路径来计算相似性。
  • 例如,Local Path(LP)指数关注长度为2和3的路径,而Katz指数则考虑所有路径,常在实际网络中表现良好。

基于随机游走的方法

  • 这类方法通过随机游走模拟网络中节点间的交互。
  • 例如,平均通勤时间(Average Commute Time, ACT)指数、SimRank、重新开始随机游走(Random Walk with Restart, RWR)和局部随机游走(Local Random Walk, LRW)。
  • ACT指数基于平均步骤数,SimRank衡量随机游走者相遇的时间,而LRW专注于短路径,计算复杂度较低。

基于似然估计的方法

  • 这类方法假设社交网络中的节点和边符合某种概率分布或模型,并利用历史数据估计这些参数,从而预测未来的链路。
  • 如Clauset等人推断网络层次结构的方法,Nur Nasuha Daud等人的节点分组方法,以及Pan等人基于结构哈密顿量的方法。
  • 这些方法尽管计算复杂度较高,但提供有价值的见解。

两类方法的优缺点

  • 基于相似性的方法:计算复杂度低,但结果易受网络结构影响,稳定性和鲁棒性有限。
  • 基于似然估计的方法:具有强大的数学基础和高预测准确性,但计算量大,不适合大规模网络。

LLSLP方法(逻辑斯蒂回归 LightGBM 堆叠链路预测)

逻辑斯蒂回归 LightGBM 堆叠链路预测(Logistic-regresion LightGBM Stacking Link Prediction method,LLSLP)

方法概述

逻辑斯蒂回归 LightGBM 堆叠链路预测方法(LLSLP)是一种高效的链路预测方法。它把社交网络中的链路预测问题视为一个二分类问题,并采用以下步骤:

  1. 特征学习:使用15个相似性指标作为模型要学习的特征。
  2. 超参数确定:精确调整基模型的超参数以优化性能。
  3. 特征重学习:对基模型学到的新特征进行重新学习,以精细化预测结果。
  4. 算法验证:通过在10个不同网络上的实验,并比较7个关键指标,验证算法的可行性和有效性。

逻辑斯蒂回归模型

逻辑斯蒂回归模型是一种用于解决分类问题的模型,它通过以下方式提升性能和准确度:

  • 梯度的单边采样算法(GOSS):减少样本维度,从而提高处理速度和效率。
  • 互斥特征捆绑算法(EFB):减少特征维度,增强模型的解释能力。

防止过拟合

为了防止模型过拟合,LLSLP方法在误差函数中加入正则项。这有助于平衡模型的复杂度与预测准确度。

强学习器的创建

LLSLP方法通过结合弱学习器的偏置或方差,创建出一个性能更优的强学习器(或称为“集成模型”)。这种方法旨在从多个简单模型中汲取优势,构建出一个整体性能更强的复合模型。

逻辑斯蒂回归(Logistic Regression)

Logistic回归模型概述

定义和用途

逻辑斯蒂回归是一种用于二分类问题的统计方法,它预测某个事件发生的概率。适用于需要概率输出的场景,如医学诊断、市场营销响应预测等。

模型特点

  • 二分类模型:预测结果为二元输出,通常为0或1。
  • 概率输出:与传统的线性回归不同,逻辑斯蒂回归输出的是发生概率。
  • Sigmoid激活函数:采用sigmoid函数将线性回归模型的输出转换为概率。

Logistic回归模型的基本形式

  • Logit变换:使用logit函数转换概率以便进行线性建模。
  • 模型公式 logit ( p ) = log ⁡ ( p 1 − p ) = β 0 + β 1 X 1 + β 2 X 2 + . . . + β n X n \text{logit}(p) = \log\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_nX_n logit(p)=log(1pp)=β0+β1X1+β2X2+...+βnXn
  • 损失函数:采用对数损失函数(Log Loss),表示为: L ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] L(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}\log(h_\theta(x^{(i)})) + (1 - y^{(i)})\log(1 - h_\theta(x^{(i)}))] L(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

Logistic回归模型的优缺点

优点

  • 简单高效:原理简单,模型清晰,易于操作。
  • 在线学习:支持在线学习,参数可轻松更新。
  • 概率输出:输出介于0到1之间,具有概率意义。
  • 可解释性:模型参数具有明确的统计学意义。

缺点

  • 处理缺失数据:对缺失数据敏感,需要预处理。
  • 非线性边界:对复杂或非线性关系的建模能力有限。

Logistic回归模型的应用场景

  • 二分类问题:如疾病诊断、垃圾邮件分类等。
  • 多分类问题:通过技术手段如一对多(OvR)扩展到多类别分类问题。

模型评估指标

准确率

准确率是反映分类器或模型对整体样本判断正确的能力,即能将阳性(正)样本(positive)判定为positive和阴性(负)样本(negative)判定为negative的正确分类能力。

精确率

精确率反映分类器或模型正确预测正样本精度的能力,即预测的正样本中有多少是真实的正样本。

召回率

召回率反映分类器或模型正确预测正样本全度的能力,即正样本被预测为正样本占总的正样本的比例。

F1分数

F1分数是精确率和召回率的加权调和平均。值越大,性能越好。F1值可以平衡precision少预测为正样本和recall基本都预测为正样本的单维度指标缺陷。

Logistic回归模型的训练和优化

训练过程

  1. 初始化参数:设定初始参数值。
  2. 计算损失函数:使用损失函数评估模型的性能。
  3. 反向传播:计算损失函数的梯度。
  4. 更新参数:根据梯度调整模型参数。

超参数调整和优化策略

  • 优化学习率、正则化参数等超参数。
  • 使用交叉验证来选择最佳超参数。

过拟合和欠拟合的处理

欠拟合处理
  • 增加特征数量。
  • 增加模型复杂度。
  • 减少正则化影响。
过拟合处理
  • 增加数据量。
  • 减少模型复杂度。
  • 应用正则化技术。
过拟合与欠拟合的判断
  • 通过比较训练集和测试集上的误差来判断。

正则化方法的应用

定义

正则化是对模型的复杂度进行惩罚,以防止过拟合。

L1和L2正则化

  • L1正则化(Lasso回归):使用绝对值,可以将系数压缩至0,实现特征选择。
  • L2正则化(Ridge回归):使用平方值,可以增加系数的大小,避免过拟合。

多重共线性问题

定义及其表现

多重共线性是指在一个回归模型中,两个或多个解释变量高度相关。当出现多重共线性时,计算自变量的偏回归系数会遇到困难,因为涉及的矩阵可能不可逆。其主要表现包括:

  • 模型整体方差分析结果与单个自变量的回归系数检验结果不一致。
  • 通常有统计学意义的自变量检验结果却显示为无意义。
  • 自变量的系数或符号与实际情况不符。

检验方法

  • 容忍度(Tolerance):值介于0至1之间。容忍度值较小表明存在共线性。
  • 方差膨胀系数(Variance Inflation Factor, VIF):最常用的检验方法。VIF值大于1表明存在多重共线性。VIF值越接近1,共线性问题越轻,反之越重。

处理多重共线性的经验式做法

  1. 删除共线性变量:删除不重要的共线性变量。但需注意,这可能导致模型改变,引发决策错误。
  2. 增加样本容量:有时多重共线性与样本量过少相关,增加样本量可能有助于解决。但这可能受到实际限制,如实验已结束等。
  3. 变量转换:构造一个新变量,作为多重共线性变量的函数,并用这个新变量替代原有变量。需确保新变量具有实际意义,以保持模型的可解释性。

岭回归和Lasso回归

岭回归(Ridge Regression)

岭回归,也称为Tikhonov regularization,是一种专用于处理共线性数据的回归方法。它是最小二乘估计法的改良版,通过引入一个惩罚项来减少模型的复杂度。这种方法虽然牺牲了一些信息和精度,但却能获得更可靠的回归系数,尤其在处理病态数据时比最小二乘法更为有效。

  • 惩罚项的影响:岭回归惩罚项中的λ对模型的精确性有显著影响。
  • 岭迹分析:通常使用岭迹分析来选择合适的λ值,选择原则包括回归系数的稳定性、符号的合理性、避免经济意义不合理的绝对值,以及残差平方和的适度增加。

Lasso回归

Lasso回归(Least Absolute Selection and Shrinkage Operator)是一种以降维为目的的压缩估计方法。通过引入一个一阶惩罚函数,Lasso能够将某些系数完全压缩至0,实现变量选择的目的。虽然和岭回归在公式上有相似之处,但Lasso在λ较小时能使一些系数变为0,这是岭回归难以做到的。

  • 与岭回归的比较:Lasso使用一阶绝对值惩罚项,而岭回归使用二阶平方和惩罚项。
  • 几何解释:通过几何角度可以明显看出Lasso和岭回归的不同。
  • 缺点:Lasso无法得出显式解,需要使用近似计算方法(如坐标下降法和最小角回归法),估计结果可能存在误差。

核心差异

两种回归方法的核心区别在于它们使用的范数不同:Lasso回归采用L1范数,而岭回归采用L2范数。这导致了它们在处理过拟合问题以及系数缩减上的不同表现。

Logistic回归模型与其他模型的比较和选择

与决策树的比较

  • 分类方式:Logistic回归是连续概率模型,而决策树是离散分类模型。
  • 模型解释性:Logistic回归易于解释,决策树则更易于构建。
  • 变量选择:Logistic回归采用正则化方法进行变量选择,决策树采用剪枝方法。
  • 计算复杂度:Logistic回归模型的计算复杂度相对较低,决策树的计算复杂度较高。

与支持向量机的比较

  • 模型类型:Logistic回归是线性模型,支持向量机(SVM)是二分类模型。
  • 约束不同:Logistic回归通常使用L1正则化,SVM使用L2正则化。
  • 损失函数:Logistic回归使用对数损失函数,SVM使用Hinge损失函数。
  • 适用范围:Logistic回归适用于数据量大、特征多、类别不平衡的情况,SVM适用于数据量小、特征少、类别平衡的情况。

在不同场景下的模型选择

  • 线性回归模型:适用于连续型变量,无类别标签的情况。
  • Logistic回归模型:适用于二分类问题,提供概率输出。
  • 决策树模型:适用于分类和回归问题,提供结构化决策规则。
  • 随机森林模型:适用于分类和回归问题,提供多个决策树的综合结果。
  • 支持向量机模型:适用于二分类问题,关注于找到最大间隔的分类边界。

正则化的作用

正则化是一种重要的技术,用于防止机器学习模型的过拟合。以下通过一个简单实验来说明正则化的效果。

实验设计

实验采用一个两层的神经网络模型,其中激活函数为Sigmoid。目标是拟合直线 y = x y = x y=x。我们对这条直线进行等间距采样,并加入随机噪声,得到10个数据样本。

实验结果

实验中,我们比较了两种情况:没有正则化 λ = 0 \lambda = 0 λ=0和有正则化 λ = 0.5 \lambda = 0.5 λ=0.5

  • 无正则化 λ = 0 \lambda = 0 λ=0:模型尝试降低误差,但由于训练数据较少,可能导致模型完美拟合带噪声的数据,即发生过拟合。
  • 有正则化 λ = 0.5 \lambda = 0.5 λ=0.5:通过引入正则化项,模型在拟合过程中不仅考虑误差最小化,也考虑了模型的复杂度。这种方式使得模型更加健壮,能够抵抗噪声,从而提高了对未知样本的预测性能。

正则化的作用

正则化通过向损失函数中添加一个正则项(通常是模型权重的L1或L2范数),使模型在训练过程中不仅尽可能降低误差,同时也保持模型的简洁性。这样的策略有效地抑制了过拟合现象,增强了模型的泛化能力。

  • 34
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
### 回答1: 好的,我会尽量用通俗易懂的语言来解释链路预测中的Random Walk with Restart算法,并给出具体的代码。 首先,链路预测是指在一张图中,预测两个节点之间是否存在一条边。例如,在社交网络中,我们可以通过链路预测预测某个人是否与另一个人是朋友关系。 Random Walk with Restart算法是一种基于概率的链路预测算法,其基本思路是在图中随机游走,并不断地重新开始游走,直到找到终点为止。在每次游走过程中,我们都会记录下走过的节点,并计算每个节点被访问的次数。最后,我们可以通过节点被访问的次数来预测两个节点之间是否存在一条边。 下面是使用Python来实现Random Walk with Restart算法的代码: ```python import numpy as np def random_walk_with_restart(G, start_node, end_node, restart_prob=0.5, max_steps=1000): """ G: 输入图 start_node: 起点节点 end_node: 终点节点 restart_prob: 重新开始游走的概率 max_steps: 最大游走步数 """ # 记录访问的节点 visited_nodes = [] # 记录每个节点被访问的次数 node_counts ### 回答2: Random Walk with Restart (RWR) 是一种常用于网络链路预测方法。RWR方法基于随机游走的思想,通过模拟节点在网络中的随机传播来预测节点之间的关联概率。 具体步骤如下: 1. 构建一个网络图G,节点集为V,边集为E。 2. 初始化一个节点集合S,表示种子节点集合。可以是已有的已知关联节点对。 3. 为每个节点定义一个初始概率向量p,表示每个节点被选择作为种子节点的概率。初始时,S中的节点概率为1,其他节点概率为0。 4. 进行若干次迭代,每次迭代都按照以下步骤计算更新节点的概率: - 对于所有节点v∈V,计算其与S中节点的关联概率:p_new[v] = α * Σ(p[u]/d_out(u)),其中u∈N(v)为节点v的邻居节点,d_out(u)表示节点u的出度。 - 对于所有节点v∈V,更新概率:p[v] = p_new[v] + (1-α) * δ[v],其中δ[v]是节点v是否属于种子节点集合S的指示函数,α为阻尼系数。 5. 根据节点的最终概率向量p,可以计算节点之间的关联概率,例如可以取概率最高的k个节点作为预测链路。 下面给出一个简单的Python代码示例: ```python import numpy as np import networkx as nx def random_walk_with_restart(G, S, alpha, num_iterations, k): V = G.nodes() p = np.zeros(len(V)) p[list(S)] = 1.0 for _ in range(num_iterations): p_new = np.zeros(len(V)) for v in V: if v in S: p_new[v] = 1.0 else: neighbors = G.neighbors(v) # 获取节点v的邻居节点 for u in neighbors: p_new[v] += p[u] / G.out_degree(u) p = alpha * p_new + (1 - alpha) * p sorted_nodes = np.argsort(p)[::-1] # 根据概率排序 return sorted_nodes[:k] ``` ### 回答3: Random Walk with Restart(RWR)是一种用于链路预测的算法,它通过模拟在网络中随机游走的过程来预测未知的链路。下面是一个使用Python实现RWR算法进行链路预测的代码示例: ```python import numpy as np def random_walk_with_restart(adj_matrix, restart_prob, num_steps): n = adj_matrix.shape[0] # 创建转移概率矩阵 transition_matrix = adj_matrix / np.sum(adj_matrix, axis=1, keepdims=True) # 初始化结果矩阵 result_matrix = np.zeros((n, n)) # 进行多步随机游走 for _ in range(num_steps): result_matrix = (1 - restart_prob) * np.dot(transition_matrix, result_matrix) + restart_prob * adj_matrix return result_matrix def link_prediction(adj_matrix, restart_prob, num_steps): n = adj_matrix.shape[0] # 使用RWR进行链路预测 result_matrix = random_walk_with_restart(adj_matrix, restart_prob, num_steps) # 预测链路存在的概率 link_probability = np.dot(result_matrix, adj_matrix.T) # 获取未知链路预测结果 link_prediction = link_probability[:n, n:] return link_prediction # 示例数据 adj_matrix = np.array([[0, 1, 0, 1], [1, 0, 1, 1], [0, 1, 0, 0], [1, 1, 0, 0]]) restart_prob = 0.2 num_steps = 10 # 运行链路预测算法 prediction = link_prediction(adj_matrix, restart_prob, num_steps) # 打印预测结果 print("链路预测结果:") for i in range(prediction.shape[1]): for j in range(prediction.shape[0]): if prediction[j, i] > 0.5: print(f"节点 {j} 和节点 {i} 之间有链路存在") ``` 在这个示例代码中,首先定义了一个函数 `random_walk_with_restart`,它用于执行多步随机游走,其中 `adj_matrix` 是邻接矩阵,`restart_prob` 是重启概率,`num_steps` 是游走步数。该函数通过迭代计算转移概率矩阵和结果矩阵来模拟游走的过程。 然后,定义了另一个函数 `link_prediction`,它使用前面的 `random_walk_with_restart` 函数进行链路预测。在函数内部,我们计算了链路存在的概率,并提取了未知链路预测结果。 最后,我们使用一个示例数据 `adj_matrix` 来运行链路预测算法,并打印出预测的结果。这个示例数据是一个4x4的邻接矩阵,表示了4个节点之间的连接关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是Yu欸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值