相似度函数
定义
Neo4j GDS 库提供了一组度量,可用于计算两个数字数组 ps、pt 之间的相似度。
相似度函数可以分为两类。第一类是分类
度量,它将数组视为集合,并根据两个集合之间的交集计算相似度。第二类是数值
度量,它根据每个位置的数字彼此之间的接近程度计算相似度。
相似度函数名称 | 公式 | 类型 | 值范围 |
---|---|---|---|
|
分类 |
|
|
|
分类 |
|
|
|
数值 |
|
|
|
数值 |
|
|
|
数值 |
|
|
|
数值 |
|
示例
下面提供每个函数的用法示例
Jaccard 相似度函数
RETURN gds.similarity.jaccard(
[1.0, 5.0, 3.0, 6.7],
[5.0, 2.5, 3.1, 9.0]
) AS jaccardSimilarity
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
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
cosineSimilarity |
---|
0.882757381034594 |
皮尔逊相似度函数
RETURN gds.similarity.pearson(
[1.0, 5.0, 3.0, 6.7],
[5.0, 2.5, 3.1, 9.0]
) AS pearsonSimilarity
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
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
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
jaccardSimilarity |
---|
0.666666666666667 |
带有 null 值的余弦
RETURN gds.similarity.cosine(
[1.0, null, 3.0],
[1.0, 2.0, 3.0]
) AS cosineSimilarity
cosineSimilarity |
---|
0.845154254728517 |