多変量解析

レコメンドに用いられる協調フィルタリングの利点と欠点とは?

ウマたん
ウマたん
当サイト【スタビジ】の本記事では、レコメンドロジックとして様々なところで用いられる協調フィルタリングの仕組みを見ていきたいと思います。そして協調フィルタリングの利点・欠点についてもまとめていきますよ!

アマゾンで自分にぴったりの商品がオススメされたりスマートニュースで自分に合った記事が表示されるようになったり・・・

世の中では、一人一人へのパーソナライゼーションが進化して至る所でレコメンドが行われるようになりました。

そんなレコメンドロジックを支える手法である協調フィルタリングについて、見ていきたいと思います。

ウマたん
ウマたん
協調フィルタリングは現代のパーソナライゼーションを支える非常に重要な手法だよ!

以下のYoutube動画でも詳しく解説しています!

協調フィルタリングとは

協調フィルタリングとは、ユーザー同士の類似性を計算しレコメンドを行う手法です。

つまり、同じような趣味・嗜好を持っている人は同じようなモノに興味を持つだろうというロジック。

ざっくり言うと、Aさんはお店でビールとキムチとティッシュを買いました。Bさんは、ビールとキムチを買いました。そんなBさんはティッシュも買ってくれる可能性が高いからティッシュもオススメしよう!という感じ(ざっくりすぎ笑)

実際のところは以下のような表にユーザー別の商品購買情報が並んでおり、


ユーザーAとユーザーBの購買データからユーザーの類似度(相関関係)を算出し、それを基にレコメンドを行います。

ビールキムチティッシュ・・・
ユーザーA111
ユーザーB110
ユーザーC100
・・・

またアイテムベースの協調フィルタリングは、アイテム同士の類似性をユーザー購買情報から導き出します。

ユーザーAユーザーBユーザーCユーザーD
ビール1111
ティッシュ1110

またアイテムベースの協調フィルタリングは、アイテム同士の類似性をユーザー購買情報から導き出します。

AさんとBさんとCさんがビールとティッシュを買っているなら、ビールとティッシュは類似性が高いと考えられその上でビールを買ったDさんにティッシュもレコメンドするというもの!

先程のコンテンツベースだとビールやキムチとティッシュは商品として類似していないのでレコメンドされませんが、協調フィルタリングを使えば、ユーザーの類似性を算出し、新たな商品との出会いを創出することができるのです。

協調フィルタリングの利点

それでは、協調フィルタリングにはどんな利点があるのでしょうか?

セレンディピティ(偶然の出会いがある)

自分と同じ趣味・嗜好を持っている人の商品がレコメンドされるため、自分が全く知らなかった商品との出会いが発生します。

ルールベースレコメンドだと、面白みのないありきたりのレコメンドに落ち着いてしまいます。

多くの人に画一的ではないレコメンド配信が可能

行動ベース・ルールベースだとどうしても同じようなレコメンドが走ってしまいますが、協調フィルタリングなら大規模ユーザー・大規模商品を抱えるサービスであっても個人に寄り添ったレコメンドを自動で行うことが可能です。

協調フィルタリングの欠点

さて、そんな協調フィルタリングですがいくつか欠点もあるんです。

類似品をレコメンドしてしまう可能性がある

協調フィルタリングでは、同じ商品の色違いをレコメンドしてしまうなどの可能性があるため、注意が必要です。

マイノリティ・新ユーザーへの精度が悪くなる

同じ傾向を持っている人が他にいないユーザーや、新たに登録したばかりのユーザーには精度良くレコメンドすることができません。

新しい商品はレコメンドされずらい

まだ購入されていない商品はレコメンドされません。そのため結果的に新しい商品はレコメンドされにくくなってしまいます。

協調フィルタリング まとめ

協調フィルタリングは、ユーザー同士の類似度を基にレコメンドを出し分けるロジックで様々なサービスで使われています。

ただ、ここで紹介したようにいくつかの欠点があることも頭の片隅を置いておきましょう!

個人的には完璧なレコメンドというものはユーザーにとってベストではないと思っていて、ある程度無秩序な方がユーザー満足度は高い気がしています。

本当に自分にぴったりのモノだけレコメンドして欲しいなら100%、ある程度関係ないものも見てみたいなら50%というようにユーザーがレコメンドの精度を調節できれば良いなと思っています。

余談でしたが、協調フィルタリングについて簡単に理解していただければ幸いです。

 

Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!