相似性函数

定义

Neo4j GDS 库提供了一组度量方法,可用于计算两个数字数组 ps, pt 之间的相似性。

相似性函数可分为两类。第一类是 categorical 度量,它们将数组视为集合,并根据两个集合之间的交集计算相似性。第二类是 numerical 度量,它们根据每个位置的数字彼此之间的接近程度计算相似性。

相似性函数名称 公式 类型 值范围

gds.similarity.jaccard

jacard

分类

[0,1]

gds.similarity.overlap

overlap

分类

[0, 1]

gds.similarity.cosine

cosine

数值

[-1, 1]

gds.similarity.pearson

pearson

数值

[-1, 1]

gds.similarity.euclideanDistance

ed

数值

[0, ∞)

gds.similarity.euclidean

euclidean

数值

(0, 1]

示例

每个函数的用法示例如下

Jaccard 相似性函数
RETURN gds.similarity.jaccard(
  [1.0, 5.0, 3.0, 6.7],
  [5.0, 2.5, 3.1, 9.0]
) AS jaccardSimilarity
表 1. 结果
jaccardSimilarity

0.142857142857143

重叠相似性函数
RETURN gds.similarity.overlap(
  [1.0, 5.0, 3.0, 6.7],
  [5.0, 2.5, 3.1, 9.0]
) AS overlapSimilarity
表 2. 结果
overlapSimilarity

0.25

余弦相似性函数
RETURN gds.similarity.cosine(
  [1.0, 5.0, 3.0, 6.7],
  [5.0, 2.5, 3.1, 9.0]
) AS cosineSimilarity
表 3. 结果
cosineSimilarity

0.882757381034594

Pearson 相似性函数
RETURN gds.similarity.pearson(
  [1.0, 5.0, 3.0, 6.7],
  [5.0, 2.5, 3.1, 9.0]
) AS pearsonSimilarity
表 4. 结果
pearsonSimilarity

0.468277483648113

欧几里得相似性函数
RETURN gds.similarity.euclidean(
  [1.0, 5.0, 3.0, 6.7],
  [5.0, 2.5, 3.1, 9.0]
)  AS euclideanSimilarity
表 5. 结果
euclideanSimilarity

0.160030485454022

欧几里得距离函数
RETURN gds.similarity.euclideanDistance(
  [1.0, 5.0, 3.0, 6.7],
  [5.0, 2.5, 3.1, 9.0]
) AS euclideanDistance
表 6. 结果
euclideanDistance

5.248809388804284

当提供的向量中有一个或多个值为 null 时,这些函数也能计算结果。对于基于交集的函数,例如 Jaccard 或 Overlap,null 值将从集合和计算中排除。对于其余函数,null 值将替换为 0.0。请参阅以下示例。

带 null 值的 Jaccard
RETURN gds.similarity.jaccard(
  [1.0, null, 3.0],
  [1.0, 2.0, 3.0]
) AS jaccardSimilarity
表 7. 结果
jaccardSimilarity

0.666666666666667

带 null 值的余弦
RETURN gds.similarity.cosine(
  [1.0, null, 3.0],
  [1.0, 2.0, 3.0]
) AS cosineSimilarity
表 8. 结果
cosineSimilarity

0.845154254728517

© . All rights reserved.