• GCN 链结预测 负采样 想要请教链结预测当中的负采样问题


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 Claire_meimei 2024-04-12 12:28 采纳率: 0% 浏览 1 首页/ 人工智能 / GCN 链结预测 负采样 想要请教链结预测当中的负采样问题 机器学习pythonpytorch GCN 链结预测 链路预测 负采样想要请教链结预测当中的负采样问题。link prediciton的目标是要辨认当前网路图当中的连接关系,因为正样本(正边)少、负样本(负边)多,会需要从负样本随机取得一些标签放入训练,可是这样的模型未来在使用的目的是要对于潜在连接情况做辨认,这样负样本(负边)是否会采样到「可能存在的证样本(正边)」,造成模型使用上出现问题,也就是只能辨认现在确实存在的正边,而未能发挥找出潜在正边的效果? 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • GISer Liu 2024-04-12 13:26
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      对于链结预测中的负采样问题,我们可以采取一些策略来解决。在链结预测任务中,我们通常使用正样本(即已知存在的连接)和负样本(即未知连接或者假设不存在的连接)来训练模型,以便模型能够学习到网络中连接的模式和规律。
      然而,如果我们简单地随机采样负样本,存在一定的问题,即可能会采样到可能存在的正样本,从而导致模型对于潜在连接的辨别能力下降,仅仅能够识别已知存在的连接,而无法挖掘出潜在的新连接。
      为了解决这个问题,我们可以采用以下几种方法:

      1. 负采样策略的设计 :设计一种更加智能的负采样策略,以避免采样到可能存在的正样本。例如,可以根据节点的度数进行采样,保证采样到的负样本与正样本的节点度数分布相似,从而降低采样到正样本的可能性。
      2. 负采样时的约束条件 :在进行负采样时,可以设置一些约束条件,确保采样到的负样本不与已知的正样本存在重叠。例如,在采样时可以排除已知的正样本所连接的节点,以避免采样到重复的连接。
      3. 动态调整负采样策略 :根据模型的训练过程和性能表现,动态调整负采样策略。例如,可以根据模型的训练情况调整负样本的采样概率或者采样的方式,以提高模型的性能。
      4. 生成负样本的方法 :除了简单的随机采样外,还可以尝试其他生成负样本的方法,例如基于随机游走的方法或者基于负采样的生成模型,以获得更加多样化和具有代表性的负样本。
        综上所述,针对链结预测中的负采样问题,我们可以通过设计更加智能的负采样策略、设置约束条件、动态调整策略以及尝试其他生成负样本的方法来解决。这些方法可以帮助我们更好地训练模型,提高模型在辨别网络连接方面的性能。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-16 12:25
      关注

      中午好🌞🌞🌞
      本答案参考ChatGPT-3.5

      在链结预测中,由于缺乏正样本数据,我们需要从负样本中进行负采样,以便训练模型。负采样在预测训练过程中有其可靠性但使其在预测潜在连接时造成一些问题,因为负采样可能会采样到"潜在正边",从而使模型无法正确预测潜在连接。为了解决这个问题,可以采用以下策略:

      1. 采用知识图谱嵌入方法:使用知识图谱中存在的连接来指导负采样,从而避免采样到潜在正边。

      2. 在负采样中采用多个负采样器:在训练模型时,我们可以使用多个负采样方法,以增加负样本的多样性。这可以减少采样到潜在正边的可能性。

      3. 与近邻数据结合:将近邻关系(指与目标节点相连的节点)与负采样结合使用,以便减少采样到潜在正边的可能性,可以使负样本更真实。

      示例代码如下所示:

      import numpy as np
      
      #定义一个多个负采样器的方法
      def neg_sampling(u, v, num_sampled):
          """
          u: 目标节点
          v: 正样本
          num_sampled: 需要采样负样本数
          """
          negs = []
          while len(negs) < num_sampled:
              samp = np.random.randint(num_nodes)
              if samp != u and not G.has_edge(u, samp) and samp not in negs:
                  negs.append(samp)
          return negs
      
      #在训练阶段将负样本与近邻关系结合起来
      def train_one_epoch(G, model, optimizer, node_pairs):
          loss_all = 0
          for i, (u, v) in enumerate(node_pairs):
              negs = neg_sampling(u, v, 5)
              pos_out = model(G, u, v)
              neg_out = model(G, u, negs)
              pos_loss = -torch.log(torch.sigmoid(pos_out))
              neg_loss = -torch.log(torch.sigmoid(-neg_out)).sum()
              loss = pos_loss + neg_loss
              optimizer.zero_grad()
              loss.backward()
              optimizer.step()
              loss_all += loss.item()
          return loss_all/i
      

      上述代码中,我们使用了多个负采样器,从而减少了采样潜在正边的可能性,并通过结合负采样和近邻关系来使负样本更真实。

      展开全部

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    【FAQ】DevEco Studio如何添加多module
    【精品】将两个字符串进行加密和解密的Java工具类
    计算机毕业设计 基于SpringBoot的图书馆管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    【ros学习笔记】-9 ros基本概念
    离线量化(后量化)算法研究-----脉络梳理
    重新定义分析 - EventBridge 实时事件分析平台发布
    电商独立站前端、后端、接口协议和电商API接口请求方式
    KONICA MINOLTA China | 柯尼卡美能达-SMB扫描问题
    《博弈论》— 人生何处不博弈
    山西电力市场日前价格预测【2023-09-28】
  • 原文地址:https://ask.csdn.net/questions/8087308