【エンジニアへの道】レコメンデーションシステム
はじめに
エンジニアとして就職活動をしていて、リコメンデーションシステムの話を聞くことが多いと感じました。今回は「リコメンデーションシステム」とそのアルゴリズムについて調べたことを簡単にまとめていこうと思います。
レコメンデーションシステムとは
レコメンデーションシステムとは、その名の通り何かを推薦するシステムのことです。最近は「ビッグデータ活用だ」といって様々な企業で注目されている(?)ようです。わかりやすいのが、Amazonの「これを買っている人はこの商品も、、、」みたいなやつです。広告系の企業などはこういったワードをよく聞きます。
用語集
レコメンデーションシステムをやってらっしゃる社会人の方とお話していた時に、やたらと知らない単語が出てきたので、まとめておきます。
CTR
「CTR」とは「クリック率(Click Through Rate)」のことで、推薦したものがクリックされた割合のことです。
CVR
「CVR」とは「コンバージョン率(Conversion Rate)」のことで、クリックされた回数のうち成果(コンバージョン)に結びついた割合のことです。ここでいう成果とは購入や会員登録のことを指します。
クリエイティブ
「クリエイティブ」とは、広告業界では広告素材のことをさします。
アルゴリズム
上記の用語集を使うと、リコメンデーションシステムは「CTRやCVRが高くなるようなクリエイティブを推薦したい」ということになります。
それを行うアルゴリズムとして代表的なものとして「コンテンツベースフィルタリング」と「協調フィルタリング」があります。
コンテンツベースフィルタリング
コトバンクには以下のように書かれています。
あらかじめ商品やサービス、コンテンツなどを属性に応じてグループ化しておくことで、利用者の選択と類似したものをすすめることができる。
要するに「今選んだものに似ているものはこれです」ということです。
キーとなるものは
- ユーザの嗜好情報
- 商品間の類似度計算アルゴリズム
協調フィルタリング(Collaborative Filtering)
Wikipediaには以下のように書かれています。
協調フィルタリングは多くのユーザの試行情報を蓄積し、あるユーザと嗜好の類似した他のユーザの情報を用いて自動的に推論を行う方法論である。
要するに「あなたに似た人はこんなものも見ています」ということです。
手順としては以下のようになります。
手順
- ユーザの嗜好情報を取得する
- 嗜好情報に基づ活き、ユーザ間の類似度を算出
- 似ているユーザを抽出
- 似ているユーザが選んでいるものをリコメンド
以上からキーとなるものは
- 取得する嗜好情報
- ユーザ間の類似度計算アルゴリズム
二つの手法の比較
ドメイン知識
ドメイン知識とは扱っているものに関する知識ということです。コンテンツベースフィルタリングは商品間の類似度計算が必要なため、ドメイン知識が必要となります。一方で、協調フィルタリングはユーザ間の類似尺度を用いるため、ドメイン知識は不要です。
Cold-Start問題
Cold-Start問題とは、ユーザに関する情報が少ない時(新規ユーザの時)に推薦することができない問題のことを言います。コンテンツベースフィルタリングはユーザに関する情報があまりなくても、予め商品の情報に基づいて商品間の類似度がわかっているため、現在ユーザが見ている商品から類似した商品を推薦できます。一方で、協調フィルタリングはユーザの情報を元に類似ユーザを探すため、Cold-Start問題が発生します。
少数派問題
少数派問題とは、類似したユーザが存在しない少数派なユーザが現れた時に推薦ができなくなる問題です。先程と同様、コンテンツベースフィルタリングはユーザが誰であれ関係ないので、少数派問題は発生しません。一方で、協調フィルタリングは類似ユーザを探す手法なので、Cold-Start問題と同様に少数派問題が発生します。
被覆率
被覆率は全ての商品を網羅的に考慮・推薦できているかということです。コンテンツベースフィルタリングは商品のコンテンツに基づいているので、被覆率は高くなります。一方、協調フィルタリングはまだ誰も評価していない新しい商品に関しては、それを購入したユーザがいないので、推薦されなくなり、被覆率が被覆率が低くなります。
まとめ
今回はレコメンデーションシステムについてざっくりとまとめました。実際はもっと様々な論文が発表されており、きっと企業さんのレコメンデーションシステムにはそういったものが採用されていると思います。