说明:使用neo4j算法库时需引入跟neo4j数据库对应的算法库插件或自定义算法库
1.简介
重叠相似度算法就是先把两个向量表示成两个长度相等得一维坐标,即映射到一维空间,再进行重合度加权求和,它即不关注两个向量得夹角,也不关注向量之差得长度值。
其向量公式如下:
数学计算公式如下:
,其中分母
是作为一个归一化因子,其中
成为共同维度函数,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