推薦システムとは?
前回は、推薦エンジンシステムが求められる背景について解説しました。今回は、そもそも「推薦」とはどういったものなのか述べていきます。
「推薦」というタスクは、どういう条件で何を目的として行われるのでしょうか。もし仮に、あなたがあらゆる情報に対しての知見を持っていて、すべての情報に目を通すことができる場合、「推薦」は必要でしょうか。そんなことをできる人に対して「推薦」は必要ありません。
現実にはそんな人間は存在しませんし、すべての情報を処理できるはずもありませんので、何らかの目的や規準に従い情報をフィルタリングすることが必要になってきます。それが「推薦」の正体です。「推薦」とは本質的には、情報のフィルタリングのことで、ほとんどの推薦システムが行っている、情報の分類や、重要度に応じた並び替えのことなのです(図1)。
「推薦」とは「ある目的や規準に則して、情報を分類したり並び替えたりすることにより、情報に優先度をつけること」
筆者はここ最近「データやコンテンツはあるから、何か推薦システムが作れないか?」という相談を受けることが多くなりました。ここで注意しておきたいのは、推薦というタスクには目的に則して情報の優先度を付けるタスクであるという点です。そのため推薦システムを作る際には、具体的で検証可能な目的、仮説が必要となります。
Webサービスなどの場合は、ユーザ満足度の向上を達成するという目的に対して、情報の分類や並び替えをする技術が効果的である場合、推薦システムを作ることは大きな価値を生み出すことになります。一方、こういったことを考えず、なんとなくたまったデータとコンテンツで推薦システムを作ってしまうと工数がかかった割に、いったい何がしたかったのかよくわからなくなるということになりかねません。
非個人化推薦と個人化推薦
ここで少し視点を変えてみましょう。「推薦システム」といったときにみなさんはどういったものをイメージするでしょうか。多くの人は、サービスを受ける個人に合った情報を提示してくれるシステムを思い浮かべるのではないでしょうか。実際には、推薦には非個人化推薦と個人化推薦という2種類のものがあります。推薦には非個人化推薦と個人化推薦があることを覚えてください。
非個人化推薦とは、たとえばビュー数の多い記事や、編集者のピックアップ記事など、全ユーザを対象(=非個人)として行った推薦(情報の優先度の付け方)を指します。
もう一方の個人化推薦とは、先ほどあったイメージの通り、個人を対象とした推薦のことです。
これらを組み合わせた中間的な推薦手法もあります。たとえばAmazonの「この商品を買った人はこんなものも買っています」といった推薦手法は、ある商品をクリックしたユーザを対象に推薦を行い、これは一時的個人化と呼ばれます。ほかには、リターゲティング広告も一時的個人化による推薦の1つと言えるでしょう。
個人化推薦のなかでも、推薦を完全に個人化することを永続的個人化と言います。永続的個人化ではユーザの嗜好(しこう)に関する情報を蓄積し、それをもとに推薦を行います。Amazonの購入履歴をもとに送られてくる推薦リストやYoutubeの推薦、また筆者達が運営するGunosyも永続的個人化による推薦です。
推薦システムに対する意思決定
サービスに推薦システムを組み込むときは、次のような点に注意する必要があります。
- 推薦で成し遂げたい目的
- 持っている情報の性質
- 工数
- スケーラビリティ、ロバスト性
- 自社の強み
たとえば、会社の強みとして、Webコンテンツが良質なものかどうか判断できる編集者がいるとします。その編集者は1人で1万記事を見て一面(TOPページ)に表示する10個の記事を選択するのが仕事です。ここで編集者用には推薦システムを用い、ユーザに対しては人による推薦というような選択はできないでしょうか。どういうことかというと、1万記事をトピックごとに分類します。そのトピックが20個あったとし、その中で各トピックの重要そうな記事5記事を抽出するというような推薦システムを編集者向けに作ります。重要度はたとえばページランクのような指標であったり、TwitterやFacebookなどのソーシャルグラフの度合を利用したモデルなどで評価できるでしょう。そして機械的に選ばれた100記事の中から編集者が10記事を選択するといったことができれば編集者は1記事あたりにかけられる時間が100倍になり、より的確な選択ができるようになるかもしれません。また、余った時間を記事の要約などに使うこともできるかもしれません。
世の中の話題を網羅的に知ることを目的とするサービスを開発しているような場合は、無理に永続的個人化の推薦システムを開発するよりも、こちらのモデルのほうが結果的に工数も少なくユーザ満足度も高くできる可能性があります。
スパムフィルタリングはもっとわかりやすい例かもしれません。システムでのスパムフィルタによりスパムの可能性が高いコンテンツ候補をピックアップし、その候補を最終的に人手でチェックするといったモデルです。機械のみで100%の精度を追い求めることはかなり難しいですが、人手と組み合わせることで限りなく100%に近いスパムフィルタリングを容易に実現できるのではないでしょうか。
正直なところ、エンジニアの本能として、機械で100%自動化できる完璧なシステムを作りたいという欲求があると思います。しかし、サービスの運営者、経営者としての側面から考えると機械が得意なところ、人が得意なところをうまく組み合わせて100%に近いシステムを作るほうが結果としてトータルのコストが安くなる場合も多いと思います。現実的にはこのように情報フィルタリングの技術と人手をうまく組み合わせることで効果的なシステムを作るという判断がきちんとできるかは非常に重要だと思いますし、筆者はこのような方法も立派な推薦システムの応用と考えます。
一方で個人化推薦は非常に魅力的な選択肢です。人手によって個々人に合った情報を選択するというのは不可能といっていいでしょう。しかし機械だったら人間が寝ている間だって一生懸命働いてくれます。計算機のコストはどんどんやすくなっており、人ではとても処理できないようなタスクを自動化することで今まででは到底実現できなかったようなユーザ体験を作り出すことも可能だと我々は考えています。Gunosyではそんな可能性にかけておもに個人化推薦にフォーカスして、研究、開発を進めています。
本連載で推薦システムというときには個人化推薦を指すことにします。また連載で紹介する内容も個人化推薦にフォーカスした内容になります。ただし前述のように推薦システムの応用のしかたは会社の特性、サービスの特性によってさまざまです。ぜひそのことを頭に入れて読み進めていただきたいと思います。いかがだったでしょうか。第2回までは概念的な話に終始したため少し退屈だったかもしれません(笑)。次回からはより具体的な応用例や、推薦の主要な手法である内容ベースフィルタリング、協調フィルタリングといった手法を紹介し、その後より発展的な内容を取り扱っていくことになります。