Facebook News Feedの記事を選ぶEdgeRankアルゴリズム–F8で相当詳しく説明

次の記事

Windows 7、マイクロソフトの利益を34.5%押し上げ、BingとXbox Liveも(スライドあり)

きのう(米国時間4/21)のf8デベロッパカンファレンスで、FacebookのエンジニアRuchi SanghviとAri Steinbergが、おそらく初めて、Facebook News Feedの基盤的な部分について詳しく説明した。それはユーザがログインしたとき最初に目にするページだから、とても重要だ。二人は、2006年にスタートしてから今日までいろいろ進化してきたNews Feedの歴史をざっと述べたあと、News Feedが個々のユーザに合ったコンテンツを見せるために使われる、EdgeRank(エッジランク)と総称されるアルゴリズムの仕組みを紹介した。

気づいてない人もいるかもしれないが、News Feedが表示するのはフレンドが作り出す記事のごく一部だけだ。全部を表示したら、多すぎてとても見ていられないだろう。デベロッパたちはつねに、自分たちのサイトやアプリケーションが確実に良い記事を提供するよう心がけている。そのための努力を”News Feed Optimization”(ニューズフィードの最適化)と呼び、それを支えるのがEdgeRankアルゴリズムだ。

EdgeRankのやることは、概念的には単純明快だ。でもここではあえて、エンジニアたちの言葉を使って説明しよう。まず、News Feedに表示される個々の記事をObject(オブジェクト)と呼ぶ。News Feedの中のオブジェクト(たとえばステータスアップデート)は、ほかのユーザがそのオブジェクトと対話するたびにEdge(エッジ)というものが作られる。エッジにはタグやコメントなどのアクションが含まれている。

それぞれのエッジには、アルゴリズムにとって重要な3つの成分がある:

  • (1)affinity score(アフィニティスコア, 親密度)…その記事を見る人と作者とのあいだの親密度。あるフレンドに大量のFacebookメッセージを送ったり、その人のプロフィールをしょっちゅう見たりしていたら、その人との親密度は、たとえばここ数年話をしたこともない旧知の人よりも高い。
  • (2)weight(ウェイト)…エッジのタイプ別に与えられる重み。たとえば、コメントはLikeよりも重要だ。
  • (3)time(タイム)…エッジの古い新しいを表す経過時間。古いエッジほど重要性が低いと見なされる。

各オブジェクトの各エッジでこれら3つの成分を掛け合わせてスコアを算出、そしてそのオブジェクトのすべてのエッジのスコアを足した値が、そのオブジェクトのEdgeRank(エッジランク, 強度のランク)だ。その値が大きいオブジェクトほど、そのユーザのフィードに登場する確率が高くなる。なお、オブジェクトを作る行為もエッジと見なされるので、まだ誰もそれと対話していない時点で、作者であるフレンドのフィードにはそのオブジェクトが現れることがありえる。

以上をもっとふつうの言葉で言うと、ユーザの知ってる人(フレンド)が最近対話したオブジェクトほど、そのユーザのNews Feedに表示されやすい。でもそれは、意外なことではないよね。デベロッパに対する結論的なメッセージもやはり、当たり前のようなことだ: 記事をNews Feedに表示したかったら、人びとがそれと対話したくなる記事を作りなさい。

そのほかのお話: Steinbergは、News Feedをもっと単純化したい、今のタブ2つの方式はやや複雑だから、と述べた。しかし実際には、両方のタブを使っている人が多いし、ユーザの半数以上が’most recent’タブを毎回クリックしている。

今回Facebookのエンジニアたちが話さなかったこともある。いちばん最初には記事をどうやって選ぶのかという質問に対して彼らは、EdgeRankには公開できない部分もあると言った。彼らによれば、今日の話には出なかった情報もいくつか使われており、今でもいろいろ実験中だそうだ(たとえばユーザがクリックした外部リンクの分析など)。

ご自分でビデを見たい方はここからTechniquesセッションへ行き、’Focus on Feed’をクリックしていただきたい。Facebookのアルゴリズムの説明は22分ごろから始まる。

[原文へ]
[米TechCrunch最新記事サムネイル集]

(翻訳:iwatani(a.k.a. hiwa))