SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現場のAIエンジニアに学ぶ推薦システム入門

ユーザー体験を向上させる、暗黙的フィードバックを用いた推薦システムの作り方

  • X ポスト
  • このエントリーをはてなブックマークに追加

 データをもとに、ユーザーが気に入りそうなアイテムを推薦する推薦システムは、通販サイトや求人サイトなど、生活のいたるところで利用されています。本連載では推薦システムについて学びたい開発者やデータサイエンティスト、およびプロダクトのユーザー体験を向上させたいと考えている方向けに、接触履歴情報のみを用いる「暗黙的フィードバック」を用いた推薦システムの概要と代表的なアルゴリズム、およびそれらの長所と短所を解説します。連載の第1回は、推薦システムの概要と、実装に必要なリソースについて解説していきます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

推薦システムとは

 この連載では「推薦システム」について説明します。推薦システムとは一体どういうものなのかをみるために、みなさんが普段使っている通販サイトのトップページを、試しに開いてみましょう。通販サイトにもよりますが、最近チェックした商品のリマインドにあわせて、「閲覧したものに関連する商品」や「あなたにイチオシの商品」など多種多様なアイテムがリストアップされていると思います。また、そこから個別の商品をクリックして詳細ページに遷移すると、その商品の傾向によく似た関連商品や、一緒によく買われている商品などが表示されるはずです。

 このページを見た印象はさまざまだと思いますが、多くの人にとってこれらのページがおすすめする内容は求めている情報に近いものであり、そのうちいくつかの商品に興味を持って詳細ページを閲覧する人は多いことでしょう。ユーザーの興味を引きつけることによって多くの利益を生んでいることは想像に難くありません。

 推薦システムとは、このように「ユーザーが気に入りそうなアイテムを、ユーザーの行動履歴やプロフィール情報から推薦する仕組み」全般を指します。上述の通販サイトの例だけでも、

  • 閲覧したアイテムに関連するアイテムを推薦するもの
  • あるアイテムと一緒に買われる傾向がみられるアイテムを推薦するもの
  • あるアイテムと属性が似ているアイテムを推薦するもの

など、一見似ているようで異なる推薦の仕組みがあり、一口に「推薦システム」と言っても、それが指すものはさまざまです。本連載では、読者として主に

  • 推薦システムについて詳しく知りたいと考えているエンジニア・データサイエンティストの方
  • 機械学習機能でユーザー体験を向上したいと考えているプロダクト企画職の方

を想定し、多種多様な推薦システムの中から、上述の通販サイトの例のような「閲覧」「購入」などの接触履歴情報のみを用いる「暗黙的フィードバックを用いたアイテム推薦」ロジックに絞って、その仕組みと代表的なアルゴリズム、およびそれらの長所と短所を解説したいと思います。

 このアイテム推薦の仕組みは、最低限、ユーザーとアイテムの接触履歴だけ収集できればよいのでデータセットの収集が比較的簡単です。そのため、近年の推薦システム分野では世界的に主要な研究テーマになっており、多くの企業や研究者がこの状況設定でのアルゴリズムの精度改善に取り組んでいます。一方で、これらのアルゴリズムに関して日本語で解説した文献は多いとは言えないため、本連載がそのギャップを埋める一助となることを期待しています。

ユーザーとアイテム

 推薦システムとは、何らかの方法でユーザーが気に入りそうなアイテムをデータにもとづいて推薦する仕組みです。ただし、「何がユーザーで、何がアイテムなのか」というエンティティーは、時と場合によって異なります。

  • 上述の通販サイトの例では、ユーザーは「そのサイトにアカウントを持つ人」で、アイテムは「その通販サイトで購入可能な商品」となります。
  • MovieLens」という非商用サイトでは、自分が見た映画を評価すると、その人が気に入りそうな別の映画を推薦します。推薦システムで非常によく使われる「MovieLens データセット」は、このサイトで集められたデータで、ここでのユーザーは「MovieLens のユーザー」、アイテムは「映画」になります。
  • ビズリーチ」は、求職者である会員と、企業またはヘッドハンター(求人)とのマッチングを支援するプラットフォームですが、コンテキストによって、ユーザーとアイテムは変わります。
    • 「会員が気に入りそうな求人を推薦する」というコンテキストではユーザーは「ビズリーチ会員」、アイテムは「求人」となります。
    • 「求人(の採用担当者)に適した会員を推薦する」というコンテキストでは、ユーザーは「求人」、アイテムは「ビズリーチ会員」となります。

 最初の二つの例はやや自明に思われますが、最後のビズリーチのケースは、同じサービスでも立場を変えることで二通りの推薦システムを構成することができるという例になっています。

明示的フィードバックと暗黙的フィードバック

 さて、何らかの行動履歴から推薦システムを作るとき、「どのデータを用いて推薦システムを構築するか」という点に関しては大きく分けて2種類のアプローチがあります。一つは「明示的フィードバック(explicit feedback)」、もう一つは「暗黙的フィードバック(implicit feedback)」と呼ばれています。これらはデータ収集のストラテジーが異なるだけでなく、収集したデータから学習を行うアルゴリズムも大きく異なります。大雑把な分け方をすれば、明示的フィードバックに対するアルゴリズムは、機械学習で言う「教師あり学習」に相当し、暗黙的フィードバックの場合は「教師なし学習」に相当します。

 以下では、両者の考え方の違いについて解説していきます。

明示的フィードバック

 例えば多くの通販サイトでは、ユーザーが購入した商品の評価として、星をつけることができます(星の数が多いほど高評価)。またMovieLensでもユーザーは視聴した映画に対しておすすめ度を表す評価を0.5~5.0までの範囲でつけることが可能です(0.5が最低評価、5.0が最高評価)。以下では、このような「ユーザーによるアイテムの評価」を「レーティング」と総称します。

 明示的フィードバックは、

  • あるユーザーがあるアイテムに対するレーティングを、最低点である0.5としているなら、そのユーザーはそのアイテムが嫌いに違いない。
  • 逆にレーティングを最高点である5.0としている場合は、そのアイテムが好きに違いない。

 といった信念にもとづき、ユーザーにとって未知のアイテムのレーティングを何らかの方法で予測し、予測レーティングが高いアイテムを推薦するというストラテジーで推薦を行います。これはデータ分析の分類では「教師あり学習」の範疇に入ります。

 教師あり学習とは、予測したい値に対して、特徴量(その値が出力される要因となる値)と対になったデータセットが事前に与えられている場合に、このデータセットから予測対象の値と特徴量の関連性を学習しておくことで、将来の値を予測する手法のことです。予測対象が数値の場合は回帰問題、カテゴリ値の場合は判別問題とも呼ばれます。ここでのレーティング予測が教師あり学習に相当するのは、この問題が「ユーザーID \(u\)、アイテムID \(i\)を特徴量として、レーティング関数\(\mathrm{Rating}(u,i)\) を出力とする回帰問題」に帰着するためです。

明示的フィードバックの状況。?が付いている箇所のレーティングを予測する。

明示的フィードバックのイメージ。与えられたユーザーIDとアイテムIDの関連性から「?」がついている箇所のレーティングを予測する。

 このように、明示的フィードバックは、低い評価がついているアイテムより、高い評価がついているアイテムのほうが好まれそうだという考え方にもとづいています。発想としては自然ですが、推測するのに十分な大量のレーティングデータをユーザーに求めるのは難しいという欠点があります。

 また「あるユーザーがあるアイテムに最低点の評価としているなら、そのユーザーはそのアイテムが嫌いに違いない」という仮定は一見もっともらしいですが、実は重大なバイアスを含んでいる可能性があります。なぜなら「ユーザーはある程度興味があるアイテムに対してしか、そもそもレーティングをしない」という可能性が見落とされているからです。ユーザーがランダムなアイテムに対してレーティングを行っている前提のデータセットではこの限りではありませんが、通常はレーティングの有無とユーザーの興味は強い関連性を持つことが多いため、一般的にはこのような前提は成り立ちません。

 こういった問題は選択バイアスと呼ばれており、近年、このようなバイアスを推薦システムから除く試みも多く登場しています。その際に鍵となるのが、暗黙的フィードバックの考え方です。

暗黙的フィードバック

 暗黙的フィードバックのデータは

UserID ItemID
1 1
1 2
2 1
2 5

というような、何らかの接触があったユーザー/アイテムの組み合わせ一覧という極めてシンプルなものを指します(ユーザー/アイテムのペアに重複があっても構いません)。

暗黙的フィードバックの状況。明示的な場合と異なり、レーティング情報を無視し、未観測部分はとりあえず0と扱う。

暗黙的フィードバックのイメージ。レーティング情報は無視し、ここでは未観測部分に0を挿入している。

 例えば次の例はいずれも暗黙的フィードバックのデータの例とみなすことができます。

  • Webサービスにおけるユーザーのアクセスログ
  • MovieLensの評価履歴に対して、レーティングを使わず、「誰が何を評価したか」という情報だけを使う場合
  • ビズリーチにおける、会員に対してマッチングされた求人の組み合わせ一覧

 特に2番目の例のように、明示的フィードバックからなるデータセットはレーティング情報を無視することで、常に暗黙的フィードバックと考えられることに注意しましょう。

  • あるユーザーがあるアイテムと接触していれば、そのユーザーはそのアイテムに何らかの関心がある可能性が高い。
  • あるユーザーがあるアイテムと接触していなければ、そのユーザーはそのアイテムに関心がない可能性が高い。

という仮説にもとづき、「何らかの方法でユーザーが現時点では未接触だが、本来なら接触している可能性の高いアイテムを割り出し、接触していそうな順に推薦する」というのが暗黙的フィードバックのストラテジーになります。

 一方で、ユーザーがあるアイテムと接触していないのは「アイテムに対しての評価が低い」場合と「単に接触していないだけ」という2つの可能性があるため、あるアイテムをおすすめしたとしても、実はユーザーはそのアイテムが好きではない可能性を排除できないデメリットがあります。

 その代わり、暗黙的フィードバックにはデータを集めやすいという圧倒的な利点があり、2010年代以降のアルゴリズム研究の主戦場となっています。本連載でも、手軽さと現場フィットという観点から、暗黙的フィードバックに対する種々のアルゴリズムに絞って解説を行います。

次のページ
推薦システムで避けては通れないコールドスタート問題

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現場のAIエンジニアに学ぶ推薦システム入門連載記事一覧

もっと読む

この記事の著者

大槻 知貴(株式会社ビズリーチ)(オオツキ トモキ)

 株式会社ビズリーチ(Visionalグループ) CTO室 AIグループ所属 NTTデータ数理システム、AIベンチャーを経て、2018年にビズリーチ入社。データサイエンス業務に従事し、Visionalグループにおける機械学習関連機能のR&Dを担当。理学博士(物理学)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

中江 俊博(株式会社ビズリーチ)(ナカエ トシヒロ)

 株式会社ビズリーチ(Visionalグループ) CTO室 AIグループ所属 NTTデータ数理システムにてデータ分析の受託案件を多数担当。その後、IoTスタートアップを経て、2019年にビズリーチ入社。レコメンドシステムなど機械学習関連の実装作業に従事。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13555 2021/04/14 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング