今回は協調フィルタリングを取り上げてみたいと思います。
類似のユーザーの行動履歴に基づいてレコメンドを行なう仕組み
レコメンドと言えば、皆さんすでにお馴染みかと思いますが、いわゆるAmazonやNetflixで出てくるようなおススメのことです。ユーザーとしても大変便利なレコメンド機能ですが、一体どのようにして適切な商品をおススメ表示しているのでしょうか?
ここで使われているのが今回テーマとなっている協調フィルタリングです。私たちの身近に使われているレコメンド機能の基礎を分かりやすく解説していきたいと思います。
コンテンツベースフィルタリング
協調フィルタリングの特長をより深く理解していただくための比較対象として、まずはそれ以前からあったコンテンツベースフィルタリングを紹介したいと思います。
コンテンツベースフィルタリングはある特定のユーザーの行動履歴を観察して関連商品をレコメンドする仕組みです。例えば、あなたが作家Aさんのミステリー小説を購入したら、作家Aさんの他の小説を薦める、または他の作家のミステリー小説を薦めるといったものです。あなたの購入商品に対して作家や小説のジャンルという観点から商品同士の関連性を考慮してレコメンドしていることが分かると思います。
仕組みとしては分かりやすく、合理的な方法なので現在でも使用されていますが、一方で以下のような難しさも指摘されています。
商品の属性を適切に管理する必要がある
「関連する商品を薦める」というのは簡単そうに見えて、実は結構難しいものです。なぜなら、商品の属性(特徴)が適切に管理されている必要があるからです。例えば、先ほどの小説の例では「作家」や「ジャンル」に着目しましたが、他にも「長編・短編」といった観点もあります。作家やジャンルがあるユーザーの好みに合っていたとしても、長編小説を読みたい人に短編小説を薦めてしまうのは不適切です。このような事態を防ぐためには、商品に付与する属性情報を増やして、関連度の見極め精度を上げていく必要があります。適切な属性を付与するためには、商品をよく理解していないといけませんし、商品の数が多ければ非常に手間のかかる作業になります。
意外な商品のレコメンドができない
意外な購買行動の有名な事例として「おむつを買った人はビールも買う傾向がある」というものがあります。これはかなり極端な例ですが、このように商品の関連性という観点からは到底発見できないような購買行動もあります。コンテンツベースフィルタリングは商品の関連度に着目したレコメンドなので、それを飛び越えた意外性のあるレコメンドをすることはできません。
以上が協調フィルタリングの前置きとなるコンテンツベースフィルタリングの説明です。協調フィルタリングはここで述べた欠点を解決できる手法なので、それを分かりやすく述べていこうと思います。
協調フィルタリング
協調フィルタリングではコンテンツベースフィルタリングと違って、レコメンドに複数のユーザの行動履歴を活用します。
内容を理解するために、早速具体例を見てみましょう。例えば、3人の顧客の購買履歴が以下の表のようになっていたとします。ここでは顧客が〇のついた商品を購入済みであることを意味します。
商品A | 商品B | 商品C | 商品D | 商品E | |
顧客X | 〇 | 〇 | 〇 | 〇 | |
顧客Y | 〇 | 〇 | 〇 | ||
顧客Z | 〇 | 〇 |
この表を見た時に商品A~Eが何であるかは不明であっても、次のことが言えるのではないでしょうか?
- 顧客Xと顧客Yの購買履歴は類似しているので、顧客Yに商品Bを薦められそう。
- 商品Dを購入した顧客は商品Aや商品Eを購入しているので、顧客Zに商品Aや商品Eを薦められそう。
これが協調フィルタリングの基本的な考え方です。見ての通り、商品の属性には一切考慮せず、顧客の購買履歴だけを使ってレコメンドを考えることができます。ちなみに、前者のようにユーザ基準のものをユーザベース、後者のように商品基準のものをアイテムベースと言います。
繰り返しになりますが、協調フィルタリングは商品の属性を一切気にしなくてよいのが大きな特徴です。そのため、コンテンツベースフィルタリングで述べた問題点を解消することができます。上記の商品A~Eが全く異なる種類の商品であっても成立します。
コールドスタート問題
協調フィルタリングがコンテンツベースフィルタリングの問題を解決していると述べましたが、もちろん協調フィルタリングにも欠点はあります。
複数のユーザーの豊富な行動履歴が必要になる
協調フィルタリングの特徴からこれは明らかであると思います。Amazonのように多数のユーザーが存在するのであればよいですが、新規で立ち上げたECサイトなどはユーザーが少ないため協調フィルタリングを有効活用できません。
新商品はレコメンドされにくい
新商品は当然ながら購入履歴がすくないため協調フィルタリングに必要なデータが溜まっておらずレコメンドされにくいという現象が起こります。
協調フィルタリングはユーザーの行動履歴が溜まって軌道に載ってくれば非常に有用な手段ですが、最初のスタート時点の立ち上がりが難しいため、これらはコールドスタート問題と呼ばれています。
逆にコンテンツベースフィルタリングであれば、コールドスタート問題は生じないので、どちらか一方の手法が特別に優れているというわけではなく、状況に応じて使い分けていくことが大切であると言えます。
最後に
今回はレコメンドの有名な手法である協調フィルタリングをシンプルに解説してみました。
普段身の回りに溢れているレコメンドですが、裏側がどうなっているのか知らないという方も意外にいらっしゃると思うので、今回の記事を読んでイメージを掴んでいただければ幸いです!!
最後になりますが、より詳しくAIを学んでみたいという方は、AIの基礎からAI搭載WEBアプリ開発まで学べるキカガク長期コースも活用してみてください!