今回は,お仕事とも少しだけ絡む話をしてみたいと思います.
(ひとつ前のエントリ新しくなったはてなブックマークが面白いは,このエントリに含めようとして膨らみすぎてしまったはてなブックマークへの想いを切り出したものでした)
はじめに
このエントリでは,ソーシャルブックマークを主な題材として,ユーザ向けのレコメンデーションについての現段階での自分の考えを文章化してみます.今の考えに至るまで,研究室時代の仲間たちや,今の会社のメンバーとの数多くの議論があったことを強調しておきます.
ユーザ向けレコメンデーションとは
特に Web 界隈において,レコメンデーションというと,Amazon の商品ページにて提示される「この商品を買った人はこんな商品も買っています」を思い浮かべる人が多いと思います.これは「商品」に対して「商品」をレコメンデーションするものです.
ここでは,今回のテーマである「ユーザ向けレコメンデーション」を,ユーザの過去の行動履歴から,それぞれのユーザにあった情報(や他の何か)を提示するもの,とします.先に挙げた Amazon でも,ユーザの過去の購買データから,オススメの商品をメールで知らせてくれたりしますよね.これもユーザ向けレコメンデーションです.
好みの近いはてなブックマーカーを探そう!
好みの近いはてなブックマーカーを探そう!がとても良い,というのが,この文章を書こうと思ったキッカケでした.何が良いのか考えてみました.
(ちなみに結果はこれです: id:june29さんと好みが近いブックマーカー)
- 直近のデータしか計算に用いないので,結果が頻繁に変化する
- フィード配信によるプッシュがある
- なぜそのユーザがオススメされるのか(どのブックマークが共通だったのか)が提示される
- (はてなブックマークのシステム的に) 次のアクションにつながりやすい
- (はてなブックマークのシステム的に) 結果を評価しやすい
- (はてなブックマークのシステム的に) 結果が悪くてもマイナスになりにくい
以下,個別に考察します.
直近のデータしか計算に用いないので,結果が頻繁に変化する
ボクも修士のときに,ソーシャルブックマークのデータを用いた情報ナビゲーションのようなものに取り組みました.研究として扱う場合は,少量のデータだと統計的に云々って話になりがちですし,結果がころころと変わっては検証のしようがありません.だけどシステム的にはとても良いと思います.全データを計算に用いる場合,ブックマークが数千件にもなってくると,新しく数件をポストしたところで結果が変わらないんですよね.一度だけ「これとこれとこれとこれがオススメです!」と提示するだけでは,ユーザはもう見にこないでしょう.
フィード配信によるプッシュがある
たとえレコメンデーションの結果が日々更新されるとしても,わざわざそのページに行って内容を確認するかっていうと,しませんよね.フィード配信があるので,変化をチェックできています.
なぜそのユーザがオススメされるのか(どのブックマークが共通だったのか)が提示される
後述しますが,根拠となるデータを示すのは大事です.「この人は Web 好きの人だなー」「この人はジョジョだなー」とその場である程度の情報が得られるので,「最近ちょっとジョジョのアンテナが鈍っているから,強化しておくか」といった判断もできます.
次のアクションにつながりやすい
結果を評価しやすい
結果が悪くてもマイナスになりにくい
オススメされたユーザのブックマークを見に行って,よさそうだったらワンクリックでお気に入りに追加できちゃいます.お気に入りに登録してから数日間,様子を見てみて,自分がブックマークしているエントリをその人もよくブックマークしていて,気の利いたコメントなんかが書かれていたらハッピーですよね.ブックマークが全然重ならなくても特に不利益はありませんし,ネガティブなコメントが気になるようだったらお気に入りから外しちゃってもいいでしょう.いずれにせよ,嬉しいことはいくつかあっても,悲しいことはほとんど起きません.
これら3つは,レコメンデーションのシステムというより,はてなブックマークのシステム的にそうなっているということで,はてなブックマークは「こんなユーザをお気に入りに登録したらどうですか」というレコメンデーションと,大変に相性が良いと言えると思います.公式にもユーザのオススメ機能がありますものね.その辺りも見据えて作っている感じがして恐ろしいです.
良い点のまとめ
こうしてみると,レコメンデーションで最も重要と考えられがちな「何がオススメされるか」について,ボクはあまり気にしていないことが分かります.レコメンデーションは,その内容の他にも重要となる要素がたくさんあります.また,レコメンデーションを適用する先のシステム(この場合ははてなブックマーク)の作りによって,レコメンデーションの結果からどのようにアクションを起こせばいいか,その結果得られるメリットが大きいか,デメリットはないか,などが大きく左右されると思います.
弊社では,汎用化したレコメンデーションエンジンの提供を行っているので,導入先のシステムとの連携については悩ましいです… ただ似たものを提供すれば良い結果が得られる,ってわけではありません.
情報推薦アルゴリズムの効果をどう評価するのか – 図書館情報学を学ぶは,ブックマークコメントも含めて面白い話が多いです.そもそも「これがオススメされれば正解」なんて明確な解をユーザ自身が持たない状況で,適合率がどうのこうのという議論にどれだけ意味があるのか,疑わしいところですよね.それならば,オススメ結果が喜ばれなかったときの失敗コストをできる限り低くする工夫をして,再現率(これも定義を曖昧にしたまま使うと危険な言葉ですが)を上げられるように,「こんなユーザさんもいたんですね」を多く提供できるようにするのが,システム的には吉だと考えます.
ナビゲーションの 5W1H
一旦,レコメンデーションをナビゲーションのひとつとして捉えてみることにします.ナビゲーションを有効に機能させるためには,ユーザの 5W1H (What, When, Where, Who, Why, How) を意識しなければなりません.レコメンデーションのアルゴリズムなんてものは,この中の What をどうするか,という部分しか扱いません(計算量の話なんかは What の範疇をはみ出すかもしれません).先に述べた「オススメ理由の提示」は,もちろん Why に該当します.
例えば,Google の検索連動広告が優れているのは,「ユーザがその言葉で検索したとき」という When をピンポイントで狙っているからだと言えましょう.加えて,検索結果の一部のように見せているのは How の工夫と言っていいかもしれません.
適切なナビゲーションが行われれば,ユーザは気持ちよさを感じながら,望む情報にたどりつくことができます.好みの近いはてなブックマーカーを探そう!は,はてなブックマーク本体のお気に入り機能との相性の良さもありますが,ユーザの 5W1H を上手に捉えてレコメンデーションを提供してくれているシステムだと思います.素晴らしいです.
さいごに
アイテム(商品など)に似たアイテムをレコメンデーションする場合と異なり,各ユーザに対して個別にレコメンデーションを提示するときは,そのユーザ用にビューを用意しなければなりません.それがログイン後に訪れるホーム画面のような場所なのか,レコメンデーション専用のページでの表示にするのか,色々あるかと思いますが,ユーザフレンドリーにするには様々な工夫が必要です.ほとんど変動しないコンテンツが繰り返し同じ場所に表示されるようだと,ユーザは次第にその領域には「何もない」と認識するようになり,いざ「これだ!」というコンテンツを用意しても,気付いてもらえないことにもなりかねません.専用ページを用意した場合にも,一度訪れて「何もない」と認識してしまったユーザは,よほどのことがなければ戻ってきません.
レコメンデーションとは,そもそも「必要ではないけど,あるといいかも」ぐらいのものを提示するものなので,見せ方はとても難しいです.アイテムからアイテムへのレコメンデーションにおいても同様の難しさはあるのですが,こちらは,ユーザ側が「よくあるアレだね」と学習していて,かなり受け入れられやすくなっています.
レコメンデーションエンジンを提供しているチームの人間として,考え続けていきたいテーマです.