1

私はArangoDBを使用しており、グラフベースの推奨システムを構築しようとしています。ArangoDB - グラフベースの推奨システム

データモデルには、ユーザー、アイテム、評価(エッジ)のみが含まれています。

したがって、カッツメジャーを使用して、ユーザーの映画への親和性を計算する必要があります。

は最終的に私はこれをしたい:

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

パフォーマンスの観点からは、グラフベースの推奨システムの方がより良い選択肢があります。誰かが提案(例:商品ランクやその他のアルゴリズム)を提案している場合は、ここでいくつかのアイデアを得ることも良いでしょう。

私はこのトピックが大好きですが、時々私の国境に辿り着きます。

答えて

0

以下では、@startと@endは2つのエンドポイントを表すパラメータです。

  1. が最大許容パス長は「エッジ」コレクション
  2. 「評価」の名が与えプロパティの名前です10000
  3. 「金利」である。簡単にするために、私が想定しましたエッジ
  4. 重量因子が必要条件に従ってある「減衰」
FOR v,e,p IN 0..10000 OUTBOUND @start rates 
    OPTIONS {uniqueVertices: "path"} 
    FILTER [email protected] 
    LET r = AVERAGE(p.edges[*].rating) * 0.7 
    COLLECT AGGREGATE avg = AVERAGE(r) 
    RETURN avg