NEO4J-相似度算法05-重叠相似度算法应用场景简介

本文介绍了如何在Neo4j数据库中利用内置的algo.similarity.overlap函数和存储过程计算节点间的重叠相似度,用于分析和比较节点的属性集合。通过示例展示了如何计算两个节点的相似度、筛选相似度高于特定阈值的节点对,以及找出每个节点最相似的节点。此外,还解析了相关源码,帮助理解算法的内部工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:使用neo4j算法库时需引入跟neo4j数据库对应的算法库插件或自定义算法库

1.简介

重叠相似度算法就是先把两个向量表示成两个长度相等得一维坐标,即映射到一维空间,再进行重合度加权求和,它即不关注两个向量得夹角\theta,也不关注向量之差得长度值。

其向量公式如下:

O\left ( A,B \right )=\frac{A\cap B}{min(\left | A \right |,\left | B \right ))}

数学计算公式如下:

S(X,Y)=\frac{\sum_{i=1}^{n}g(x_{i},y_{i}).O(x_{i},y_{i}) }{n^{O(0)}};X,Y\epsilon R^{n},其中分母n^{O(0)是作为一个归一化因子,其中g(x_{i},y_{i})成为共同维度函数,O(x_{i},y_{i}) }为重合度函数

2.使用场景

我们可以使用重叠相似性算法来计算出哪些事物是其他事物的子集。此算法对两个事物之间本身关联关系数据不必要求数量一致,然后我们可能会使用这些计算出的子集从标记数据中学习分类法。比如再常见数据挖掘分析过程中

3.neo4j中重叠度函数使用示例

neo4j中提供如下函数和存储过程,根据第四小节源码分析可知,其函数适合两个点比较重叠度,存储过程适合多个点比较重叠度

  • algo.similarity.overlap函数,入参为两个List<Number集合>
  • algo.similarity.overlap.stream存储过程,入参(List<Map<String,Object>> data,
    Map<String, Object> config)
  • algo.similarity.overlap存储过程,入参(List<Map<String,Object>> data,
    Map<String, Object> config)

1.计算两个硬编码重叠度

RETURN algo.similarity.overlap([1,2,3], [1,2,4,5]) AS similarity

结果:0.6666666666666

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂攻城师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值