相似度函数
定义
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 |
Pearson 相似度函数
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 |