修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

搜索
    中文

      HANP

      ✓ 文件回写 ✓ 属性回写 ✓ 直接返回 ✓ 流式返回 ✓ 统计值

      概述

      HANP(Hop Attenuation & Node Preference,跳跃衰减和节点倾向性)算法在标签传播算法(LPA)的基础上引入了标签分值衰减机制,并考虑邻居节点的度对邻居标签权重的影响。HANP 的目标是提高网络中社区检测的准确性和鲁棒性。该算法由 Ian X.Y. Leung 等人于 2009 年提出:

      基本概念

      跳跃衰减

      HANP 算法赋予每个标签一个分值,该分值随着标签从其原点向远传播而逐渐降低。所有标签的初始分值均为 1。当某节点从其邻域采用一个新标签时,新标签在该节点上的分值会在原分值基础上减去一个跳跃衰减因子 δ(0 < δ < 1)的大小。

      跳跃衰减机制限制标签只向附近的节点传播,能防止某标签在网络中传播得太广从而形成过大的社区。

      节点倾向性

      在计算新的最大标签时,HANP 包含基于节点度的倾向性。当节点 j ∈ Ni 将其标签 L 传播到节点 i 时,标签 L 的权重计算公式为:

      其中,

      • sj(L) 是标签 L 在节点 j 上的分值。
      • degj 是节点 j 的度。当 m > 0 时,倾向于度较大的节点;当 m < 0 时,倾向于度较小的节点;当 m = 0 时,对节点度没有倾向性。
      • wij 是节点 i 和 j 之间所有边的权重和。

      以下的示例中包含边权重,标签分值写在标签旁,设置 m = 2 以及 δ = 0.2,蓝色节点的标签将从 d 更新为 a,标签 a 在蓝色节点上的分值衰减至 0.6。

      特殊说明

      • HANP 忽略边的方向,按照无向边进行计算。
      • 具有自环边的节点能将自身当前的标签传播给自身,并且每条自环边计算两次。
      • 如果节点选择的标签与当前自身的标签一致,δ = 0。
      • HANP 在更新节点标签时遵循同步更新原则,即所有节点会根据其邻居的标签同时更新其标签。由于引入了标签分值,HANP 通常不会出现标签振荡。
      • 受节点顺序、同权重标签的随机选取以及并行计算等因素的影响,HANP 算法的社区划分结果可能会不同。

      语法

      • 命令:algo(hanp)
      • 参数:
      名称
      类型
      规范
      默认
      可选
      描述
      node_label_property @<schema>?.<property> 数值/字符串类型,需 LTE / 用于初始化节点标签的点属性,无该属性的点不参与标签传播;不设置时使用节点的 UUID 作为标签
      edge_weight_property @<schema>?.<property> 数值类型,需 LTE / 作为边权重的边属性
      m float / 0 邻居节点度的幂指数:m > 0 时,倾向于度较大的节点;m < 0 时,倾向于度较小的节点;m = 0 时,对节点度没有倾向性
      delta float [0,1] 0 跳跃衰减因子 δ
      loop_num int ≥1 5 传播的迭代次数
      limit int ≥1 -1 返回的结果条数,-1 返回所有结果

      示例

      示例图如下,节点的 Schema 为 user,边的 Schema 为 connect,属性 @connect.strength 的值已标注在图中:

      文件回写

      配置项 回写内容
      filename _id,label_1,score_1
      algo(hanp).params({ 
        loop_num: 10,
        edge_weight_property: 'strength',
        m: 2, 
        delta: 0.2 
      }).write({
        file:{
          filename: 'hanp'
        }
      })
      

      统计值:label_count = 4
      结果:文件 hanp

      O,13,-0.600000,
      N,6,-1.000000,
      M,6,-1.000000,
      L,13,-0.600000,
      K,13,-0.600000,
      J,1,-0.200000,
      I,1,-0.200000,
      H,1,-0.200000,
      G,1,-0.200000,
      F,14,-1.000000,
      E,6,-0.200000,
      D,6,-0.200000,
      C,6,-0.200000,
      B,6,-0.200000,
      A,6,-0.400000,
      

      属性回写

      配置项
      回写内容
      类型
      数据类型
      property label_1,score_1 点属性 标签:string,标签分值:float
      algo(hanp).params({ 
        node_label_property: '@user.interest',
        m: 0.1, 
        delta: 0.3
      }).write({
        db:{
          property: 'lab'
        }
      })
      

      统计值:label_count = 3
      结果:每个节点的标签和标签分值分别回写至名为 lab_1 和 score_1 的点属性下

      直接返回

      别名序号
      类型
      描述 列名
      0 []perNode 点及其标签、标签分值 _uuid, label_1, score_1
      1 KV 标签个数 label_count
      algo(hanp).params({ 
        loop_num: 12,
        node_label_property: '@user.interest',
        m: 1,
        delta: 0.2
      }) as res, stats
      return res, stats
      

      结果:res 和 stats

      _uuid label_1 score_1
      15 movie -1.400000
      14 movie -0.400000
      13 saxophone -0.200000
      12 saxophone -0.200000
      11 saxophone -0.400000
      10 flute -0.200000
      9 flute -0.200000
      8 flute -0.200000
      7 flute -0.200000
      6 movie -0.400000
      5 movie -0.200000
      4 movie -0.200000
      3 movie -0.200000
      2 movie -0.200000
      1 movie -0.400000
      label_count
      3

      流式返回

      别名序号
      类型
      描述 列名
      0 []perNode 点及其标签、标签分值 _uuid, label_1, score_1
      algo(hanp).params({ 
        loop_num: 12,
        node_label_property: '@user.interest',
        m: 1,
        delta: 0.2
      }).stream() as hanp
      group by hanp.label_1
      with count(hanp) as labelCount
      return table(hanp.label_1, labelCount) 
      order by labelCount desc
      

      结果:table(hanp.label_1, labelCount)

      hanp.label_1 labelCount
      movie 8
      flute 4
      saxophone 3

      统计返回

      别名序号
      类型
      描述 列名
      0 KV 标签个数 label_count
      algo(hanp).params({ 
        loop_num: 5,
        node_label_property: 'interest',
        m: 0.6,
        delta: 0.2
      }).stats() as count
      return count
      

      结果:count

      label_count
      5
      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写