修改密码

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

修改昵称

当前昵称:
提交

v4.0
搜索
中文EN
v4.0

    皮尔森相关系数

    概述

    皮尔森相关系数(Pearson Correlation Coefficient)用于度量两个变量之间的线性相关性。在图上是用点的 N 个属性构成两个 N 维向量并计算皮尔森相关系数。

    基本概念

    向量

    向量是高等数学的基本概念,低维空间中的向量是比较容易理解和表达的。下图分别展示了二维空间、三维空间中向量 A、B 和坐标轴之间的关系以及它们之间的夹角 θ

    对图中两点进行比较时,用指定的 N 个数值类属性构成两个 N 维向量。

    皮尔森相关系数

    皮尔森相关系数的取值范围是 [-1,1],假设皮尔森相关系数为 r

    • r > 0 表明正相关,即一个变量值变大,另一个变量值也会变大;
    • r < 0 表明负相关,即一个变量值变大,另一个变量值反而会变小;
    • r = 1r = -1 表明两个变量可以用直线方程来描述,即落在同一条直线上;
    • r = 0 表明没有线性相关性(但可能存在其他相关性)。

    皮尔森相关系数定义为两个变量之间的协方差和标准差的商,计算公式为:

    特殊处理

    孤点、不连通图

    计算两点的皮尔森相关系数理论上不依赖边,无论待计算的两个节点是否为孤点或是否处于同一个连通分量内,都不影响它们皮尔森相关系数的计算。

    自环边

    皮尔森相关系数的计算与边无关。

    有向边

    皮尔森相关系数的计算与边无关。

    命令和参数配置

    • 命令:algo(similarity)
    • params() 参数配置项如下:
    名称
    类型
    默认值
    规范
    描述
    ids 或 uuids []_id 或 []_uuid / 必填 指定计算的第一组节点 ID / UUID
    ids2 或 uuids2 []_id 或 []_uuid / 选填 指定计算的第二组节点 ID / UUID
    type string cosine jaccard 或
    overlap 或
    cosine 或
    pearson 或
    euclideanDistance 或
    euclidean
    相似度度量标准:
    jaccard:杰卡德相似度
    overlap:重叠相似度
    cosine:余弦相似度
    pearson:皮尔森相关系数
    euclideanDistance:欧几里得距离
    euclidean:标准化欧几里得距离
    node_schema_property []@<schema>?.<property> / 数值类的点属性;需 LTE;是否携带 schema 均可 type 为 cosine / pearson / euclideanDistance / euclidean 时,必须指定的构成向量的至少两个点属性,无该属性的点不参与计算;type 为 jaccard / overlap 时,此参数无效
    limit int -1 >=-1 返回的结果条数,-1 表示返回所有结果
    top_limit int -1 >=-1 仅选拔模式可用,每个选拔结果 top_list 的长度,-1 表示返回完整结果

    计算模式

    本算法有两种计算模式:

    1. 配对模式:配置有效的两组节点时,将第一组与第二组中的节点两两配对(笛卡尔乘积),逐对计算相似度
    2. 选拔模式:仅配置(第)一组有效节点时,对于其中每一个节点,计算其与图中其他所有点的相似度,返回相似度大于 0 的结果并按相似度大小降序排列

    示例

    示例图

    示例图包含 4 个产品 product1、product2、product3 和 product4(UUID 依次为 1、2、3、4;忽略边),产品包含 price、weight、width 和 height 属性:

    任务回写

    1. 文件回写

    计算模式 配置项 各列数据
    配对模式 filename node1,node2,similarity
    选拔模式 filename node,top_list

    示例:通过属性 price、weight、width 和 height 计算产品 UUID = 1 与产品 UUID = 2,3,4 两两之间的皮尔森相关系数,将算法结果回写至文件

    algo(similarity).params({
      uuids: [1], 
      uuids2: [2,3,4],
      node_schema_property: [price,weight,width,height],
      type: "pearson"
    }).write({
      file:{ 
        filename: "pearson"
      }
    })
    

    结果:文件 pearson

    product1,product2,0.998785
    product1,product3,0.474384
    product1,product4,0.210494
    

    示例:通过属性 price、weight、width 和 height 计算产品 UUID = 1,2,3,4 各自与其他所有产品的皮尔森相关系数,将算法结果回写至文件

    algo(similarity).params({
      uuids: [1,2,3,4],
      node_schema_property: [price,weight,width,height],
      type: "pearson"
    }).write({
      file:{ 
        filename: "list"
      }
    })
    

    结果:文件 list

    product1,product2:0.998785;product3:0.474384;product4:0.210494;
    product2,product1:0.998785;product3:0.507838;product4:0.253573;
    product3,product2:0.507838;product1:0.474384;product4:0.474021;
    product4,product3:0.474021;product2:0.253573;product1:0.210494;
    

    2. 属性回写

    算法不支持属性回写。

    3. 统计回写

    算法无统计值。

    直接返回

    计算模式
    别名序号
    类型 描述 列名
    配对模式 0 []perNodePair 各点对及相似度 node1, node2, similarity
    选拔模式 0 []perNode 各点及其选拔结果 node, top_list

    示例:通过属性 price、weight、width 和 height 计算产品 UUID = 1 与产品 UUID = 2,3,4 两两之间的皮尔森相关系数,并按照相似性大小升序排列结果

    algo(similarity).params({
      uuids: [1], 
      uuids2: [2,3,4],
      node_schema_property: [price,weight,width,height],
      type: "pearson"
    }) as p
    return p order by p.similarity
    

    结果:

    node1 node2 similarity
    1 4 0.210494150169583
    1 3 0.474383803132863
    1 2 0.998785121601255

    示例:通过属性 price、weight、width 和 height 分别选拔图中与产品 UUID = 1,2 间皮尔森相关系数最高的产品

    algo(similarity).params({
      uuids: [1,2],
      type: "pearson",
      node_schema_property: [price,weight,width,height],
      top_limit: 1
    }) as top
    return top
    

    结果:

    node top_list
    1 2:0.998785,
    2 1:0.998785,

    流式返回

    计算模式
    别名序号
    类型 描述 列名
    配对模式 0 []perNodePair 各点对及相似度 node1, node2, similarity
    选拔模式 0 []perNode 各点及其选拔结果 node, top_list

    示例:通过属性 price、weight、width 和 height 计算产品 UUID = 3 与产品 UUID = 1,2,4 两两之间的皮尔森相关系数,仅返回相似度大于 0.5 的结果

    algo(similarity).params({
      uuids: [3], 
      uuids2: [1,2,4],
      node_schema_property: [price,weight,width,height],
      type: "pearson"
    }).stream() as p
    where p.similarity > 0.5
    return p
    

    结果:

    node1 node2 similarity
    3 2 0.50783775659896

    示例:通过属性 price、weight、width 和 height 分别选拔图中与产品 UUID = 1,3 间皮尔森相关系数最高的产品

    algo(similarity).params({
      uuids: [1,3],
      node_schema_property: [price,weight,width,height],
      type: "pearson",
      top_limit: 1
    }).stream() as top
    return top
    

    结果:

    node top_list
    1 2:0.998785,
    3 2:0.507838,

    实时统计

    算法无统计值。

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