修改密码

请输入密码
请输入密码 请输入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

搜索
    中文

      特征向量中心性

      概述

      特征向量中心性(Eigenvector Centrality)算法度量的是节点影响的传递。来自高分值节点的关系对节点分值贡献大于来自低分值节点的关系,节点有高分值意味着它连接到许多高分值节点。特征向量中心性强调节点所处的周围环境,例如在疾病传播中,特征向量中心性较大的节点距离传染源更近的可能性更大,需要格外防范。

      Google 著名的 PageRank 算法是特征向量中心性算法的一个变种,用来进行网页排名。

      特征向量中心性的取值范围是 [0,1],数值越大中心性越大。

      基本概念

      特征值和特征向量

      特征值和特征向量是矩阵理论的重要概念之一。A 为 n 阶矩阵,若常数 λ 和 n 维非 0 向量 x 满足 Ax = λx,那么称数 λA特征值(Eigenvalue), xA 的对应于特征值 λ特征向量(Eigenvector)。

      n 阶矩阵的特征值可通过特征方程 |A - λE| = 0 求解,其中 E 为 n 阶单位矩阵,特征方程的 n 个根(可能有重根)即为 n 个特征值 λ1λ2、... 、λn。对于每个特征值,相应的特征向量可以通过求解特征方程 (A – λE)x = 0 得到,特征向量可以有无穷个。在这些特征值中,绝对值最大的特征值称为主特征值,主特征值对应的特征向量即为主特征向量,它包含矩阵最多的信息。

      上面的例子中,矩阵 A 的特征值有 5 个,与绝对值最大的特征值 λ1 对应的特征向量 x1 就是主特征向量。

      特征向量中心性

      图上节点间通过边互相影响的关系可以用矩阵表示,矩阵的特征向量所度量的节点中心性,就是特征向量中心性。

      幂迭代法

      求解矩阵特征值和特征向量的常用方法是特征多项式计算法,但在实践中,该计算相当耗费资源且无法计算大型矩阵。Ultipa 的特征向量中心性算法使用幂迭代法求解矩阵的主特征向量,此方法在保证精度的同时也极大提高计算效率。

      幂迭代法的计算过程很简单。对于 n 阶矩阵 A,任意选取一个 n 维初始向量 v(0),并按照以下规律进行迭代,继续构造向量:

      • v(1) = Av(0)
      • v(2) = Av(1) = A2v(0)
      • ...
      • v(k) = Av(k-1) = Akv(0)

      当 k 足够大时,v(k) 即可视为 A 的特征向量。幂迭代法的收敛性理论上是可以推导证明的,在此不赘述。

      此方法存在的问题是,v(k) 中的非 0 元素值会随着 k 的增大而大幅增大,为避免计算过程中数据溢出,每步迭代时,算法对 v(k) 中每个元素的绝对值进行 L2 范数归一化处理。

      Ultipa 的特征向量中心性算法规定迭代的收敛偏差 tolerance 为归一化后的向量 v(k) 所有元素绝对值的和的变化,当该变化值小于规定的收敛偏差时,迭代结束,若迭代轮数达到限制,迭代也会结束。

      特殊处理

      孤点、不连通图

      由于没有连接其他节点的边,孤点的特征向量中心性完全取决于其自环边。

      自环边

      自环边的权重值只会被计算一次。

      有向边

      对于每个节点,特征向量中心性算法只考虑其入边,即接收到的来自邻居节点的影响。入边为 0 的节点的特征向量中心性分值无限趋近于 0。

      结果和统计值

      以下面包含 7 个节点的网页间链接关系图为例,所有边的权重为 1,运行特征向量中心性算法,最多迭代 20 次,收敛偏差为 0.01:

      算法结果:为每个点计算特征向量中心性,根据算法执行方式,返回 _idrank 两列或 _uuidrank 两列

      _uuid _id rank
      1 web1 0.57355899
      2 web2 0.57355601
      3 web3 0.45988801
      5 web5 0.25517300
      4 web4 0.25516701
      6 web6 0.018536000
      7 web7 0.0000060000002

      算法统计值:

      命令及配置项

      • 命令:algo(eigenvector_centrality)
      • params() 参数配置项如下:
      名称 类型
      默认值
      规范
      描述
      max_loop_num int 20 >=1 算法最大迭代轮数
      tolerance float 0.001 (0,1) 收敛偏差,即归一化后的向量所有元素绝对值的和的变化,若变化值小于收敛偏差,则算法结束
      edge_weight_property @<schema>?.<property> / 数值类的边属性,需LTE 边权重所在的一个或多个属性名称,带不带 schema 均可,无该属性的边不参与计算;忽略表示不加权
      limit int -1 >=-1 需要返回的结果条数,-1 或忽略表示返回所有结果
      order string / ASC/DESC,大小写不敏感 对返回结果进行排序;忽略表示不排序

      示例:计算所有点的特征向量中心性,最多迭代 20 次,收敛偏差为 0.01

      algo(eigenvector_centrality).params({
        max_loop_num: 20,
        tolerance: 0.01
        }) as centrality
      return centrality
      

      算法执行

      任务回写

      1. 文件回写

      配置项 各列数据
      filename _id,rank

      示例:计算所有点的特征向量中心性,最多迭代 20 次,收敛偏差为 0.01,将算法结果回写至名为 rank 的文件

      algo(eigenvector_centrality).params({
        max_loop_num: 20,
        tolerance: 0.01
        }).write({
          file: {
            filename: "rank"
          }
      })
      

      2. 属性回写

      配置项 回写内容 类型 数据类型
      property rank 点属性 float

      示例:计算所有点的特征向量中心性,最多迭代 20 次,收敛偏差为 0.01,将算法结果回写至名为 ec 的点属性

      algo(eigenvector_centrality).params({
        max_loop_num: 20,
        tolerance: 0.01
        }).write({
          db: {
            property: "ec"
          }
      })
      

      3. 统计回写

      算法无统计值。

      直接返回

      别名序号 类型 描述 列名
      0 []perNode 点及其特征向量中心性 _uuid, rank

      示例:计算所有点的特征向量中心性,最多迭代 20 次,收敛偏差为 0.01,边权重位于 @link.score 属性上,将算法结果定义为别名 ec 并返回

      algo(eigenvector_centrality).params({
        max_loop_num: 20,
        tolerance: 0.01,
        edge_weight_propery: @link.score
        }) as ec 
      return ec
      

      流式返回

      别名序号 类型 描述 列名
      0 []perNode 点及其特征向量中心性 _uuid, rank

      示例:计算所有点的特征向量中心性,最多迭代 20 次,收敛偏差为 0.01,分别统计分值大于 0.5 和小于等于 0.5 的节点数量

      algo(eigenvector_centrality).params({
        max_loop_num: 20,
        tolerance: 0.01
        }).stream() as results
      WITH CASE
      when results.rank > 0.5 then "attention"
      when results.rank <= 0.5 then "normal"
      END as cat
      group by cat
      return table(cat, count(cat))
      

      实时统计

      算法无统计值。

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