ぜぜ日記

ブログです

Facebookのニュースフィード表示アルゴリズムのメモ

ぼんやりFacebookのみんなの投稿(ニュースフィード、というらしい)を見ていたらちょっとドキっとすることがあった。


知り合いだけれど、Facebookでは友だちになっていない子の映っている写真が、別の友だちがコメントしたことによって表示されたのだ。それもほか数人が映っているにもかかわらず、その子の名前だけをハイライトして。


友だちの投稿で表示されないで埋もれていくものもたくさんあるのに、なんでこれを表示させたんだろう。
そも、なんでFacebookは知り合いだということを知っているんだ?


ただ、思い当たるところはあった。
じつは、その子とは、すこし前にお仕事で会って、雑談のなかでわりと共通の友人がいそうだったのでFacebookで調べてみていたのだ。ちなみに、実際に7人いてひやっとしたけれどこれは別の話。


そう、Facebookは、ニュースフィードになにを表示させるかに、友だちでなくともアクセスしたページも用いている。もしかすると検索した情報も使っているかもしれない。



ちょっと怖いなあと思って、いろいろ調べてみたのでメモとして公開してみる。




f:id:daaaaaai:20130224132046p:plain
(20ページくらいしか読めていないFacebook本。写真は本文とは関係ありません)

すべてが表示されるわけではないニュースフィード

Facebookユーザならすぐ気付くように、ニュースフィードには、友だちのアクションすべてが反映されるわけではない。投稿や写真がよく表示される友だちもいれば、たくさん「いいね」がついているのしか表示されない友だちもいる。

おかげでtwitterみたいにタイムラインがものすごいスピードで流れて全部読めないなんてことはなく、短い時間で重要だと(Facebookが)判断した情報のみが流れてきて便利ではある。
けれど、中身がわからなくてけっこうこわい。そのアルゴリズムについて、簡単に調べてみた。


ニュースフィードになにが表示されるかについては、F8 2010というFacebookによる開発者向けカンファレンスで発表されていたらしい。次の式で決まるEdgerankが多い投稿が優先される、とのこと。

Edgerank = Affinity x Weight x Time Decay


F8 2010 ライブ映像
f8 live


だいたいイメージできるけれどAffinityはよくわからない。日本語に訳すと相性とか親密度になるようだ。

すこし調べてみると次のページでざっくり説明されている。イラストが風刺っぽくて良い。
EdgeRank

気になったところを簡単に要約してみた。

1.Affinity
クリックやlike、タグ付け、シェアなどのアクションをある期間にどのくらいとっているか。ただしこれは一方通行。あなたが彼女を気にしていれば彼女の行動は表示されやすくなるが、だからといってあなたの行動が彼女に表示されるようになるわけではない。


2.Weight、重要さ。likeよりもコメント、コメントよりも投稿、それも写真やビデオがあればさらによい。
その投稿がどれだけlikeやコメントされているかも大事。


3.Timeは投稿されてすぐかどうか。


Facebookには2つアルゴリズムがあると思われる。1つは各ストーリー(投稿やステータス変更、likeなど)のランク付けをするEdge Algorithm、もう1つはニュースフィードの順序を決めるもの。これにはランダム要素やキーワードに反応するものもあるようだ。


2007年にFacebookのエンジニアが語ったことによれば、あるユーザの全体のストーリーのうち、表示されるのは0.2%しかない。


これらは気になる物ではあるが、人によって異なるうえ時間ごとに変化するので正確に測定することは不可能。Facebook社もアルゴリズムを秘密にしているし、頻繁に変更されているようだ。


推測のようなものも多くあまりあてにはならないし思っていたのとあまり変わらない。
もっとも気になるAffinityについて調べてみるとQuoraのやりとりで議論されているけれど同じように推測多し。
How does Facebook determine the affinity score between two users? - Quora



Googleのランクアルゴリズムみたいにシンプルでないうえに、webページと違って、自分自身が評価されているように感じてもやもやする。
おかげで友だちの大事と思われるアクションだけが表示されるので便利。ではあるのだけれど、ちょっと気持ち悪い。


調べようと思ったらダミーアカウントたくさん用意して実験できなくはなさそうだけれど、アクセス元IPとかみてそうだし難しいかも。
だれかやってみてください。


おまけ

Facebookのようにこれだけ個人と個人の関係について情報を持っていると、かなりおもしろいことができそう。個人に適切な広告を出して利益を出すというみみっちい話ではなく、未来を予測したり社会のことがわかる気がする。どこの会社の株価があがるか、といったものからどこの地域でどういう問題が起きそうかもわかるかもしれない。

もっとわかりやすいところで言えば、Facebook上で結婚したり付き合っているとステータスを変えた人たちがそれまでにどういう関係だったかを解析すれば、だれとだれが付き合うかとかも予測できる気がするし、付き合うためのパターンを利用できるようになる。たぶん。
きっと中ではビッグデータな解析をしていて一部の社員だけで独占しているんだろうなあ。まったく。
自分にもかわいい彼女ができるためのパターンを教えて欲しい。