Self-supervised Learning for Label Sparsity in Computational Drug Repositioning

article/2025/10/26 4:10:28

论文地址:Self-supervised Learning for Label Sparsity in Computational Drug Repositioning

1. Introduction

药物重定位旨在根据已知的药物-疾病关联性揭示上市药物的新用途。其背后的逻辑是:目前市场上的小分子药物具有多靶点特性,这意味着它们可以抑制或激活未知靶点,从而对未知疾病产生治疗效果。药物重定位通过计算模型和大量经验证的药物-疾病关联揭示药物和疾病的潜在治疗模式。基于这些模式,可以推断出目标药物的新的治疗用途。

流行的计算药物重定位模型可分为两类:基于图的模型和基于矩阵分解的模型。
基于图的模型:基于药物和疾病的多源信息构建异构网络,然后使用随机游走等算法挖掘上述异构网络中潜在的药物-疾病关联。
在这里插入图片描述
基于矩阵分解的模型:利用嵌入空间中的向量来表示药物和疾病的潜在因子。随后,通过相似函数计算药物与疾病的关联概率。
在这里插入图片描述
本文的重点是计算药物重定位中的双塔模型(基于矩阵分解的模型),其主要思想是使用两组不同的神经网络来学习药物和疾病的潜在因子。这两种潜在因子的相容性程度是使用相似函数(内积)计算药物治疗疾病的概率。
在这里插入图片描述
该模型有效性的关键是找到合适的潜在因子载体来代表药物和疾病。然而,随着神经网络层数的增加,要学习的参数量也呈指数级增加。值得注意的是,用于训练这些模型的损失函数通常表示为监督学习问题。这些监测信号来自经验证的药物疾病协会。上表显示了本文中使用的数据集的稀疏性,这表明与现实世界中的大量药物和疾病相比,经验证的药物-疾病关联非常稀少。这也意味着很难用这些少量标记样本训练双塔模型中的大量参数。

自我监督学习在通过未经验证的数据增强药物的代表性方面可以提供一个新的视角。因此,在这项工作中,我们提出了一个多任务自监督学习框架(SSLDR)来解决药物重新定位中的标签稀疏问题。具体来说,我们以 药物疾病关联预测问题 为主要任务,辅助任务(自我监督学习)是 使用数据增强策略和对比学习来挖掘原始药物特征的内部关系,从而自动学习一个无监督标签的更好的药物表征。

SSLDR框架的辅助任务可以分为三个步骤:
(1)利用相似信息过滤出目标药物的负邻居样本。
(2)使用两种不同的数据增强策略对目标药物和负邻居样本进行表征学习。
(3)将上述四种药物表征映射到嵌入空间,使属于同一药物的潜在因素在嵌入空间中彼此接近,而不属于同一药品的潜在因素则远离。这样,可以从未标记的药物数据中自动学习更好的潜在因素以进行表示。

如果仅用上述自我监督学习后获得的药物表征初始化双塔模型中的潜在因子,这本质上是一种预训练方法,不能有效提高主要任务(药物疾病关联预测)的准确性。因此,为了确保辅助任务能够提高主任务的准确性,我们采用了一种 多任务训练策略(为主任务的损失函数增加了一个正则化项),其中主任务(监督)和辅助任务(自我监督)联合优化。准确地说,辅助任务中使用的嵌入层与主任务中双塔模型的药物嵌入层共享参数。

一些工作使用自动编码器作为嵌入层来挖掘药物和疾病的潜在因素。随着自动编码器网络层的加深,出现了信息丢失的问题,解码器无法恢复原始输入。自动编码器的思想是:一个好的潜在因素必须能够恢复原始输入。因此,为了解决由于信息丢失导致潜在因素无法恢复到原始输入的问题,我们设计了一个多输入解码器。与前一解码器层只接受前一网络层的输出不同,我们将潜在因素输入到每个解码器层以增强解码器的重构能力。后续实验证明,经过上述运算后,该隐因子具有更好的预测性能。

主要贡献如下:
(1)提出了一个多任务自监督学习框架,用于解决计算药物重新定位中的标签稀疏问题。该框架通过参数共享联合优化主任务(药物疾病关联预测)和辅助任务(自我监督学习),提高药物的代表性,可用于提高潜在药物疾病关联的预测性能。
(2)改进了自动编码器中的解码器,使每个解码器都能考虑潜在因素信息。因此,可以在不丢失信息的情况下获得良好的潜在因素。
(3)在三个真实的药物疾病关联数据集上,证明了作为辅助任务的自我监督学习可以提高主模型的性能。此外,证明了多输入解码器的自编码器具有更好的预测性能。

2. Materials and Methods

2.1 Datasets

Gottlieb 数据集包含593种药物、313种疾病和1933种治疗关系。Cdataset 包含663种药物、409种疾病和2532种治疗关系。DNdataset数据集包含1490种药物、4516种疾病和1008种治疗关系。
上述数据集还包含药物之间的相似矩阵 D r u g S i m DrugSim DrugSim,该矩阵是根据药物的 SMILES 化学结构计算得出的。根据疾病之间的医学描述信息计算疾病之间的相似矩阵。

2.2 The two-tower model in computational drug repositioning

计算药物重新定位可以定义为一个二分类问题,给定目标药物 i i i 和目标疾病 j j j,我们将它们各自的特征输入到模型 M M M 中得到预测值 0/1,其中 0 表示药物 i i i 不能治愈疾病 j j j,1 表示能治愈。

目前流行的计算药物重新定位模型是双塔模型。这个框架使用两组不同的神经网络来学习药物和疾病的潜在因素。在此结构中,药物和疾病的特征分别输入到包含一系列神经网络的嵌入层以提取各自的潜在因素。随后,通过相似算法(内积)计算药物和疾病的潜在因素,得出预测值 R i j R_{ij} Rij,表示药物治疗疾病的概率。

2.3 The multi-task self-supervised learning framework

该框架通过学习更好的药物表示来解决标签稀疏问题。具体来说,我们把预测药物与疾病的相关性作为主要任务(监督学习)。而自动挖掘药物特征的内部关系是辅助任务(自我监督学习),其目的是在存在未标记数据的情况下学习良好的药物表示。
(1)辅助任务
在这里插入图片描述
首先,给定目标药物 i i i,我们根据相似性函数 S S S 选择与目标药物 i i i 相似性最低的药物 k k k 作为负样本。使用药物的 SMILES 字符串来计算目标药物与数据集中所有药物的相似性信息。相似性信息可以从药物的相似矩阵 D r u g S i m DrugSim DrugSim 中获得,可以从公共网站下载。 k ← S ( i ) (1) k\leftarrow S(i)\tag{1} kS(i)(1)随后,使用两个不同的传递函数 h h h g g g 对目标药物 i i i 和负样本 k k k 进行数据增强。对于目标药物 i i i,我们希望在不同的数据增强后学习两种不同的表征 x i x_i xi x i , x_i^, xi确保模型仍然能识别出 x i x_i xi x i , x_i^, xi 代表相同的药物 i i i。对于负样本 k k k 也是一样。 x i ← g ( d r u g i ) , x i , ← h ( d r u g i ) x_i\leftarrow g(drug_i),x_i^,\leftarrow h(drug_i) xig(drugi),xih(drugi) x k ← g ( d r u g k ) , x k , ← h ( d r u g k ) (2) x_k\leftarrow g(drug_k),x_k^,\leftarrow h(drug_k)\tag{2} xkg(drugk),xkh(drugk)(2)实际上,我们使用药物的两种不同化学结构表示作为数据增强策略。传递函数 h h h g g g 分别替换为药物的 SMILES 字符串和国际化学标识符(InChI)。SMILES 字符串和 InChI 都用少量字符表示药物的化学结构信息。为了让深度学习模型能够输入字符串,使用 Word2Vec 算法将字符串转换为数字矢量。

我们将 x i x_i xi x i , x_i^, xi分别输入嵌入函数 H H H G G G,以获得 z i z_i zi z i , z_i^, zi 作为目标药物 i i i 的两个潜在因子。 z i = G ( x i ) , z i , = H ( x i , ) z_i=G(x_i),z_i^,=H(x_i^,) zi=G(xi),zi=H(xi) z k = G ( x k ) , z k , = H ( x k , ) (3) z_k=G(x_k),z_k^,=H(x_k^,)\tag{3} zk=G(xk),zk=H(xk)(3)在获得目标药物 i i i 和负样本 k k k 的潜在因子后,我们希望使 z i z_i zi z i , z_i^, zi 在嵌入空间中属于同一药物的距离尽可能接近。不属于同一药物的 z i z_i zi z k , z k , z_k,z_k^, zk,zk之间的距离在嵌入空间中变得尽可能远。因此,定义了以下损失函数,以使这些潜在因子相互对比。 L a u x i l i a r y = D ( z i , z i , ) − D ( z i , z k ) − D ( z i , z k , ) (4) \mathcal{L}_{auxiliary}=D(z_i,z_i^,)-D(z_i,z_k)-D(z_i,z_k^,)\tag{4} Lauxiliary=D(zi,zi)D(zi,zk)D(zi,zk)(4)其中 D D D 是距离度量函数, D ( z i , z i , ) = ∣ ∣ z i − z i , ∣ ∣ 2 D(z_i,z_i^,)=||z_i-z_i^,||^2 D(zi,zi)=∣∣zizi2

(2)主任务
在这里插入图片描述
主要包含三个模块:输入层、嵌入层和输出层。
输入层:将目标药物 i i i 对所有疾病的治疗信息作为其输入特征,即药物-疾病关联矩阵 R R R 的第 i i i R i ∗ R_{i*} Ri。所有药物的目标疾病 j j j 的治疗信息作为其输入特征,即 R R R 的第 j j j R j ∗ R_{j*} Rj。 此功能的好处是能够记录药物或疾病的行为偏好。
嵌入层:使用一个由2个编码器和3个解码器组成的自动编码器模型来提取药物(疾病)的潜在因素。 d i = f ( W 2 T f ( W 1 T R i ∗ + b 1 ) + b 2 ) (5) d_i=f\big(W_2^Tf(W_1^TR_{i*}+b_1)+b_2\big)\tag{5} di=f(W2Tf(W1TRi+b1)+b2)(5) R ^ i ∗ = f ( V 3 T f ( V 2 T f ( V 1 T d i + b 3 ) + b 4 ) + b 5 ) (6) \hat{R}_{i*}=f\Big(V_3^Tf\big(V_2^Tf(V_1^Td_i+b_3)+b_4\big)+b_5\Big)\tag{6} R^i=f(V3Tf(V2Tf(V1Tdi+b3)+b4)+b5)(6) L d r u g = ∣ ∣ R ^ i ∗ − R i ∗ ∣ ∣ 2 (7) \mathcal{L}_{drug}=||\hat{R}_{i*}-R_{i*}||^2\tag{7} Ldrug=∣∣R^iRi2(7)其中,方程(5)是编码部分,方程(6)是解码部分,而方程(7)是自动编码器的损失函数。 d i d_i di 是通过最小化 L d r u g \mathcal{L}_{drug} Ldrug 获得的。同样,疾病 j j j 的潜在因子 s j s_j sj 可以通过最小化 L d i s e a s e \mathcal{L}_{disease} Ldisease 得到。 L d i s e a s e = ∣ ∣ R ^ j ∗ − R j ∗ ∣ ∣ 2 (8) \mathcal{L}_{disease}=||\hat{R}_{j*}-R_{j*}||^2\tag{8} Ldisease=∣∣R^jRj2(8)输出层:通过对 d i d_i di s j s_j sj 进行内积运算,得到目标药物 i i i 治疗目标疾病 j j j 的预测概率 R ^ i j \hat{R}_{ij} R^ij R ^ i j = d i T s j (9) \hat{R}_{ij}=d_i^Ts_j\tag{9} R^ij=diTsj(9)辅助任务使用的嵌入层与主任务的嵌入层共享参数,即使用相同的自动编码器模型。总损失函数如下所示: L = L m a i n + α L a u x i l i a r y (10) \mathcal{L}=\mathcal{L}_{main}+\alpha\mathcal{L}_{auxiliary}\tag{10} L=Lmain+αLauxiliary(10)其中 L m a i n \mathcal{L}_{main} Lmain 如下所示: L m a i n = − [ R i j log ⁡ R ^ i j + ( 1 − R i j ) log ⁡ ( 1 − R ^ i j ) ] + L d r u g + L d i s e a s e (11) \mathcal{L}_{main}=-[R_{ij}\log\hat{R}_{ij}+(1-R_{ij})\log(1-\hat{R}_{ij})]+\mathcal{L}_{drug}+\mathcal{L}_{disease}\tag{11} Lmain=[RijlogR^ij+(1Rij)log(1R^ij)]+Ldrug+Ldisease(11)其中 R i j R_{ij} Rij 是标签值, L d r u g \mathcal{L}_{drug} Ldrug 是自动编码器提取药物潜在因子的损失, L d i s e a s e \mathcal{L}_{disease} Ldisease 是自动编码器提取疾病潜在因子的损失。

联合训练策略可以提高模型的泛化能力。因为以参数共享的形式,本质上是在主任务的损失函数中增加了一个正则化项,从而改善了嵌入层参数的变化范围,从而提高了主任务的泛化性能。

2.4 The autoencoder with multiple-input decoder

基于主任务的解码架构,我们额外将潜在因子添加到每个解码器的输入中,以便解码器的每一层都可以考虑来自潜在因子的信息。
在这里插入图片描述
其解码操作如下式所示: R ^ i ∗ = f ( V 3 T ( f ( V 2 T ( f ( V 1 T d i + b 3 ) + β d i ) + b 4 ) + β d i ) + b 5 ) (6) \hat{R}_{i*}=f\Bigg(V_3^T\bigg(f\Big(V_2^T\big(f(V_1^Td_i+b_3)+\beta d_i\big)+b_4\Big)+\beta d_i\bigg)+b_5\Bigg)\tag{6} R^i=f(V3T(f(V2T(f(V1Tdi+b3)+βdi)+b4)+βdi)+b5)(6)通过观察上述等式,可以得出结论:当调整参数 β \beta β 为0时,它与原始解码器相同。当调整参数 β \beta β 的值大于0时,解码器可以考虑潜在因子的信息,克服信息丢失的问题。

3. Experiments and Discussion

本节设计的实验用于回答以下研究问题。
  RQ1:联合优化辅助任务和主任务的策略能否提高主任务的预测精度?
  RQ2:与传统的自动编码器相比,多输入解码器的自动编码器在预测性能上是否具有优势?
  RQ3:多任务自监督学习框架能否优于最先进的模型?
  RQ4:多任务自监督学习框架在实际应用中有何帮助?

3.1 Evaluation Metrics

本节中的实验使用 10 折交叉验证来评估模型的泛化能力。我们首先将已知的药物-疾病相关性作为正样本,并将其平均分为 10 个部分,其中的 9 个作为训练集,剩余的 1 个作为测试集。此外,我们将所有未知的药物-疾病相关性作为负样本添加到测试集。然后用训练集训练模型中的参数,并用测试集评估模型的泛化性能,用10轮计算结果的平均值表示模型10折交叉验证的结果。药物重定位是一个二分类问题。为了公平地比较模型的泛化性能,我们使用 AUC、AUPR 和 F1值 来评估模型的性能。

3.2 Parameter Setting

SSLDR 模型中所有超参数的值都是根据它们在验证集上的性能来选择的。验证集是通过从训练集中抽取10%的数据来形成的。药物和疾病的潜在因子的变异区间为 [8,16,32,64,128]。公式(10)中参数 α \alpha α 的变化区间为 [0.1,0.3,0.5,0.7,0.9]。自动编码器损失函数参数的变化间隔为 [0.1、0.3、0.5、0.7、0.9]。模型优化器的学习率在区间 [0.1、0.05、0.01、0.005、0.001]内变化。在本节的实验中,上述参数的默认值为 64、0.5、0.5 和 0.001。

3.3 Effectiveness of joint optimization of auxiliary task and main task(RQ1)

为了回答 RQ1,我们评估了联合训练策略下辅助任务对主要任务的影响。通过比较 SSLDR 和 SSLDR-M(去掉辅助任务)的实验结果,我们可以直观地比较辅助任务是否可以提高主任务的预测精度。首先,从表2中可以直观地发现,SSLDR 模型在所有度量和数据集上都优于 SSLDR-M 模型。在这三个数据集上,AUC、AUPR 和 F1 评分指标下的平均改善率分别为2%、14.3%和48.5%,尤其是 F1 评分指标的改善最为明显。上述结果表明,通过联合训练策略,将辅助任务的损失函数作为主任务损失函数的正则化项,优化了主任务中参数的搜索空间。这使得主任务的模型具有更好的泛化性能。

此外,我们发现SSLDR模型和SSLDR-M模型之间的性能差距与数据集之间的稀疏性成正比,即数据集的稀疏性越大,SSLDR模式和SSLDR-M模型之间的绩效差距越大。Gottlieb数据集、Cdataset和DNdataset的稀疏性依次增加,与SSLDR-M模型相比,这三个数据集的SSLDR平均改善率分别为17%、22.5%和25.4%。

这是因为 SSLDR-M 模型中的参数依赖于标记数据进行训练。稀疏数据集中的少量标记数据阻碍了 SSLDR-M 模型学习药物和疾病的有效潜在因子。SSLDR 模型还使用了自我监督和联合优化,以确保主任务学习更好的药物潜在因子。因此,主任务可以有较好的预测效果。对以上实验结果的讨论证明,辅助任务可以提高主任务的预测精度,表明我们改进点的正确性。
在这里插入图片描述

3.4 Effectiveness of autoencoder with multi-input decoder(RQ2)

为了回答 RQ2,我们评估了多输入解码器的自动编码器的预测性能。通过 SSLDR 和 SSLDR-A(单输入解码器)的直接比较,可以验证多输入解码器是否能够克服信息丢失的问题,从而提高潜在因子的预测能力。在所有度量和数据集上,带有多输入解码器的 SSLDR 模型优于带有单输入解码器的 SSLDR-A 模型。在这三个数据集上,AUC、AUPR 和 F1得分指标的平均改善率分别为1.7%、6.5%和16.3%。

以上实验结果表明,在每个解码器的输入中加入潜在因子,可以使其考虑潜在因子的信息,从而使模型能够学习到更好的潜在因子,从而提高其表达能力和对药物疾病相关性的预测能力。

3.5 Comparison of experimental results(RQ3)

为了回答 RQ3,我们将 SSLDR 模型的实验结果与以下主流计算药物重定位模型进行了比较。

  • MF:矩阵分解模型使用内积和潜在因子来推断药物和疾病之间的治疗关系的概率。
  • SVM:经典的二分类模型。
  • NCF:神经协同过滤利用神经网络和哈达玛积发现药物的潜在新用途。
  • MLP:多层感知器由用于二进制分类问题的多个神经网络和 sigmoid \text{sigmoid} sigmoid 激活函数组成。
  • ASMF:使用了一种注意力机制代替内积,使模型能够考虑每个特征的独特权重。使用改进的自动编码器模型来提取更有效的药物和疾病特征。
  • NMFDR:使用改进的欧氏距离和点空间来表示药物与疾病的关系。

在这里插入图片描述
MF 和 NCF 作为基于主要潜在因子的模型,由于不能包含更多关于药物或疾病的辅助信息,因此预测结果较差。ASMF 模型包含了药物或疾病的相似性信息,在所有数据集和指标上都大大优于 MF 和 NCF 模型。在三个数据集上,SSLDR 模型的性能优于 SVM(机器学习模型)和 MLP(深度学习模型)。可以清楚地发现,在所有数据集和所有指标中,SSLDR 模型的预测结果都优于两个SOTA模型 ASMF 和 NMFDR。与 NMFDR 模型相比,三个数据集在 AUC 度量下 SSLDR 的平均改善率为12.1%,在 AUPR 度量下平均改善率是17.5%,在F1评分度量下平均改进率是32.6%。

不难发现,通过药物的两种增强表示之间的对比学习,模型可以学习到更好的药物表示,从而提高了模型的泛化能力。此外,解码层的额外输入增强了模型的重建能力。这也在一定程度上增强了药物和疾病的代表性,从而提高了模型的预测能力。

3.6 Case study(RQ4)

我们从 Gottlieb 数据集中选择了3种药物,以验证 SSLDR 在实际应用中的有用性。这三种药物是 doxorubicin、gemcitabine 和 vincristine,它们都用于治疗肿瘤疾病。表5列出了SSLDR模型为这三种药物推荐的疾病。表中加粗的疾病表明,它们已在CTD数据集中得到验证与相应药物具有治疗关系。对于药物 doxorubicin 和 gemcitabine,两种新疾病的预测是正确的,都在第一和第五位。最后一种药物 vincristine 有3种疾病在推荐疾病列表中得到了正确的推荐。

上述案例研究的结果表明,与以往的计算药物重新定位模型相比,SSLDR 模型推荐的疾病列表具有较高的命中率,并且大多数疾病都是在较高的排名条件下成功预测的。因此,这可以大大加快药物筛选和研发过程,对于实际应用场景具有很大的经济和实用价值。

4. Conclusion

在这项工作中,我们提出了一个多任务自监督学习框架SSLDR,用于解决计算药物重定位中的标签稀疏问题。在联合训练策略下,该框架使用辅助任务来改善药物的潜在因素,以提高主任务 药物-疾病关联预测 的泛化性能。我们还提出了一种多输入解码器,以提高自动编码器挖掘药物或疾病潜在因子的能力。在多个真实数据集上的实验结果验证了多任务自监督学习框架和多输入解码器的优越性。

对于未来的工作,我们计划探索如何改善疾病的潜在因子,以便更好地应用于计算药物重定位场景。此外,本文提出的框架是基于矩阵分解模型的,如何将该框架应用于基于图的模型也是我们未来工作的方向。


http://chatgpt.dhexx.cn/article/7eyIlcG4.shtml

相关文章

xgboost:分割Sparsity-aware Split Finding

Sparsity-aware Split Finding1 在许多现实问题中,输入 x x x是稀疏的是很常见的。造成稀疏性的可能原因有很多: 1)数据中存在缺失值; 2)统计中频繁出现零项; 3)特征工程的处理结果,如独热编码。 重要的是使算法意识到数据中…

Sparsity constraint稀疏约束详解

Sparsity constraint稀疏约束详解 引子: 线性模型是我们经常使用的一种模型,比如: 文本分类中,bag-of-words 有p 20 K 个特征, 共有 N 5K 个文本样例; 在图像去模糊化,图像分类中,…

[机器学习速成课程] 稀疏性正则化 (Regularization for Sparsity)-学习笔记

稀疏性和 L1 正则化 学习目标: 计算模型大小通过应用 L1 正则化来增加稀疏性,以减小模型大小 降低复杂性的一种方法是使用正则化函数,它会使权重正好为零。对于线性模型(例如线性回归),权重为零就相当于完…

机器学习14:稀疏性-Sparsity

现实世界中,问题的特征的数量往往是很大的,而其中起决定性作用的往往是很小的一部分,稀疏规则化算子的引入会学习去掉这些没有信息的特征,也就是把这些特征对应的权重置为 0。 1.稀疏性正则化:L₁ 正则化 稀疏向量通常…

稀疏(sparsity)矩阵的行压缩存储

压缩矩阵行或列来存储矩阵的格式是很普遍的,它们不会存储不必要的元素(即空值)。但是它们也不是非常有效的,当在一个矩阵-向量积或预解决的每个简单标量中需要间接寻址。行压缩存储方式会把一个稀疏矩阵行的非零数值放在连续的存储…

redis删除锁

redis删除锁 参考:百度安全验证 前言 在分布式系统中,由于redis分布式锁相对于更简单和高效,成为了分布式锁的首先,被我们用到了很多实际业务场景当中。 但不是说用了redis分布式锁,就可以高枕无忧了,如…

Redis进阶: 锁的使用

Redis进阶: 锁的使用 1. 概念1. 原子性2. 事务 2. 使用Redis构建全局并发锁3. Redlock(redis分布式锁)总结 相关Blog 1. 概念 1. 原子性 原子性 原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务&…

redis锁的几种实现

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时&#xff0…

java redis锁_Java中Redis锁的实现

由于具体业务场景的需求,需要保证数据在分布式环境下的正确更新,所以研究了一下Java中分布式锁的实现。 Java分布式锁的实现方式主要有以下三种: 数据库实现的乐观锁 Redis实现的分布式锁 Zookeeper实现的分布式锁 其中,较常用的是前两种方式,但是数据库实现方式需要较多的…

Redis的分布式锁详解

一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&…

redis锁

一、redis锁的实现 加锁命令: SETNX key value: 当键不存在时,对键进行设置操作并返回成功1,否则返回失败0。 Key是锁的唯一标识,一般按业务来决定命名; Value 往往用来比较加锁的是哪一个线程或者哪一个…

超图 hypergraph 二分图 Bipartite graph

超图是什么 超图超图的意义应用 二分图 超图 超图是什么? 超图的本质特征在于它的超边,它可以连接两个以上的结点(包括两个)。按这样的意义来说,我们所熟悉的普通图只是超图的一个特例而已,而超图则定义了一个更加宽泛的图。 超图…

BiNE: Bipartite Network Embedding 阅读笔记

论文传送门 作者 华东师范大学: 高明周傲英Leihui Chen 中国科学技术大学:何向南 摘要 传统的学习图数据的节点表示的方法大都聚焦于一般的同构网络,忽略了二部图的特殊性质。因此这些方法对于二部图嵌入来说可能是次优的。 本文提出了B…

C#,图论与图算法,二分图(Bipartite Graph)最佳二分匹配(Maximum Bipartite Matching)算法与源程序

二部图中的匹配是一组边的选择方式,使两条边不共享一个端点。最大匹配是最大大小(最大边数)的匹配。在最大匹配中,如果向其添加任何边,则该边不再是匹配。对于给定的二部图,可以有多个最大匹配。 我们为什…

【论文精读】Bipartite network projection and personal recommendation

一、Introduction 在过去的几年里,人们对复杂网络进行了大量的研究,一类特殊的网络是二部网络(bipartite network)。特点是其节点可分割为两个互不相交的子集X和Y,连接只允许存在于不同集合中两个节点之间。例如人类的…

【一致性仿真】Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions

文章链接:Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions 仿真图Fig3: MATLAB代码 % Group-Bipartite Consensus in the Networks With Cooperative-Competitive Interactions % Protocol Simulation Results …

C#,图论与图算法,二分图(Bipartite Graph)的霍普克罗夫特-卡普(Hopcroft Karp)最大匹配算法与源程序

二分图Bipartite graph 有没有可能通过数学过程找到你的灵魂伴侣?大概让我们一起探索吧! 假设有两组人注册了约会服务。在他们注册后,会向他们展示另一组人的图像并给出他们的描述。他们被要求选择他们愿意与之匹配的人。 所有信息都被输入…

[VLDB 2022]Butterfly Counting on Uncertain Bipartite Graphs

总结 非确定二部图上的蝴蝶结构统计,精确算法。在普通的蝴蝶结构统计上,增加了边权重,使得传统算法失效,再在这基础上定义新的统计并优化老方法。 动机 Butterfly的数量直接展示了二部图的密度,是个很重要的属性。相…

二分匹配大总结——Bipartite Graph Matchings[LnJJF]

文章目录 二分匹配——Bipartite Graph Matchings[LnJJF]认识:什么是二分图?理解:现实模型如何与二分图相互转化?如何判断能否转化?能够转化的话,如何转化? 应用:已知一个二分图&…

【一致性仿真】Fixed-time bipartite consensus of multi-agent systems with disturbances

文章链接:Fixed-time bipartite consensus of multi-agent systems with disturbances 仿真图Fig2: MATLAB代码: % Fixed-time bipartite consensus of multi-agent systems with disturbances % author:JCGUY % date:2022-04-20 clear clc…