ArangoDB - 基于图形的推荐系统

问题描述 投票:1回答:1

我正在使用ArangoDB,我正在尝试用它构建一个基于图形的推荐系统。

数据模型仅包含用户,项目和评级(边缘)。

因此,想要使用katz度量来计算用户对电影的亲和力。

最终我想这样做:

Get all (or a certain number of) paths between a user and a item
For all of these paths do the following:
  Multiply each edge's rating with a damping factor (e.g. 0.7)
  Sum up all calculated values within a path
Calculate the average of all calculated path values

结果是用户和项目之间的某种亲和力,用中间评级加权并且由定义的因子阻尼。

我试图在AQL中实现类似的东西,但它要么是错误的要么是太慢了。这样的算法如何在AQL中看到?

从性能的角度来看,基于图形的推荐系统可能有更好的选择。如果有人有建议(例如项目排名或其他算法),那么在这里得到一些想法也会很好。

我喜欢这个话题,但有时我会到达我的边界。

graph-databases arangodb recommendation-engine aql multi-model-database
1个回答
0
投票

在下文中,@ start和@end是表示两个端点的参数;为简单起见,我假设:

  1. 最大允许路径长度为10000
  2. “rates”是“edge”集合的名称
  3. “rating”是赋予边缘权重的属性的名称
  4. “阻尼”因子符合要求
FOR v,e,p IN 0..10000 OUTBOUND @start rates
    OPTIONS {uniqueVertices: "path"}
    FILTER v._id==@end
    LET r = AVERAGE(p.edges[*].rating) * 0.7
    COLLECT AGGREGATE avg = AVERAGE(r)
    RETURN  avg
© www.soinside.com 2019 - 2024. All rights reserved.