web-dev-qa-db-ja.com

エッジランク/アクティビティストリームでアフィニティをどのように計算しますか

私は、関連性によって順序を並べ替えるニュースフィードを作成する方法を研究してきました。

私はFacebookの エッジランクEtsyのアクティビティフィードアーキテクチャ をフォローしてきましたが、これらの企業がどのようにアフィニティを計算しているかわかりません。

データベースには、たとえば0.75などのパーセンテージ値が格納されます。

一連のアクティビティアイテムを作成したとします。

ユーザーXがユーザーYにコメントしましたユーザーXがユーザーYを高く評価しました

これからどのように親和性のパーセンテージを取得しますか?

2
ericraio

私があなたの質問を理解しているように、あなたは具体的になぜ/どのように計算する必要があるのか​​パーセンテージではなく絶対アフィニティスコアを尋ねていますか?

ソーシャルストーリーの優先度を選択するためのEdgeRankアルゴリズムは、(理論的には)PageRankで検索結果のページを選択するのと同じ問題であり、特定の検索クエリで多数の中から広告を選択するのと同じです。

PageRankを例にとってみましょう。 Wikipedia によると:

Wikipedia Diagram for PageRank 単純なネットワークの数学的PageRanks。パーセンテージで表されます。 (Googleは対数目盛を使用します。)ページCはページEよりも高いPageRankを持っています...

こちらもご覧ください-> http://www2007.org/posters/poster893.pdf

同様に、パーセンテージを使用する本当の理由はnormalize EdgeRankで、すべてのニュースフィードストーリーが同じスケールになるようになっていると思います。

あなたの例をとると、Aというユーザーが気に入った2ページのP1とP2があるとしましょう。現在、両方からの更新があります。 Facebookのページに対する親和性公式が(仮説的に)これである場合->

popularity of page * frequency of user interaction

または

number of page likes / time since last interaction from user A.

ページP1の場合は100000 / 20 = 50000、ページP2の場合は2000 / 10 = 200とします。

したがって、ページP1のニュース記事は、より人気のあるページであり、その記事はP2の前に表示されるため、勝ちます。

しかし、これもcompete with stories from usersである必要があります。ここで、式はまったく異なる可能性があります。

Number of Mutual Friends * Number of Posts shared on their Wall

別のユーザーBからの投稿の場合、これは1000 * 10 = 10000になる可能性がありますが、この値がP1と競合すると絶対数が失われます。しかし、1000人の相互の友達を持つことは本当に大きなことです!技術的には、BのストーリーはP1の前に表示されます。

これに対する解決策は、競争が公平で相対的になるように、0〜1のすべてのアフィニティスコアを正規化することです。

これで、EdgeRank数式の2番目の部分に、上記の概念に類似したエッジの重みが追加されました。ただし、エッジの重みは具体的に相互作用のタイプに焦点を当てています(コメント、共有など)。

これらすべての「競合アルゴリズム」EdgeRank、PageRankなどは レコメンデーションシステム と呼ばれます。これらのアルゴリズムは、関連する結果の順序を表示するために、スコアを正規化してスケーリングする必要があります。

もっと何か見つけたら、質問に追加していきます!

0
Gaurav Ramanan