Web事業部実績紹介
Web事業部実績紹介
2013.04.10

Amazonとかでよく見るおすすめ商品を表示する仕組み、レコメンドを全力で解説する

よっしー

どうも僕です!

メンバー紹介:よっしー
プログラマーよっしー LIGのプログラマー。でも、実はLIGのプログラマーじゃない。

 

みんな、元気!?元気だよね!ちまたはすっかり入学シーズンだよね!今回は、そんな入学シーズンにちなんで、全然関係ない話するよ!準備いい!?ほんとにいい!?じゃあ、いくよ!ほんとにいくよ!?

今回は、Amazonとかでよくみる、おすすめ商品を表示する仕組みについて書こうと思うよー!

みんな、ない!?この、フェチな、すげぇフェチな、すんげぇフェチな、エ○い本買っちゃったハァハァみたいなときに、そんなあなたにはこんな商品がおすすめ!とか、すげぇフェチなんだけど、ドストライクな商品おすすめされちゃったこと!

あるよね!あるだろ!不思議だろ!なんで僕の性癖知ってんだよ!僕の!僕のヒミツの性癖!なに!?監視してんの!?見てんのどっかで!

そう!あなたは見られている!

教えてやろう!

Amazonでドストライクなエ○本がおすすめされる仕組みを!

ユーザの趣向性はデータとして蓄積されている

おすすめ商品を表示する仕組みはいっぱいあるんだけども、その中でも簡単かつメジャーな仕組みについて解説しようではないか!

まず、あなたが、その店で何を購入したかは、データとして記録されている。

購入履歴としてはもちろんなのだが、あなたがどういう組み合わせの商品を購入したかという情報は、ユーザの趣向性を示す情報として、実はとても重要なデータなのだ。

あなたがどんな商品を購入したかは、あなたの趣向性を示すデータとして、お店のデータベースに蓄積されているのだ。

同じ商品を購入したユーザのデータを利用する

この手法では、あなたと同じ商品を多く購入しているユーザを探し出してきて、ユーザをグループ化する。すなわち、あなたと似た趣向性を持つユーザを探してグループ化するわけだ。

ロジカル的にいうと、ユーザがどの商品を購入したという情報を値として持ち、全商品の数(N)の0か1のベクトルデータにする。

これで、ユーザの数(M)だけのN次元のベクトルデータが生成される。

この情報を、コサイン近似という、ベクトルがどれだけ近似しているかを求めるアルゴリズムで比較して、近似するユーザのグループを抽出する。

つまるところ、N次元のグラフで、2つの矢印の内角を求めて、その角度を比較することによって、趣向性の近いユーザを抽出できるというというわけだ。

膨大な商品の中からおすすめを選択できる理由

前の処理でユーザをグループ化したら、あなたと似た商品を購入しているユーザのグループ内でよく購入されていて、あなたがまだ購入していない商品をおすすめとして表示するのだ。

同じ趣向性を持つユーザが購入している商品は、他の商品よりも購入される確率が高い。ゆえに、膨大な数の商品の中から、自動的におすすめ商品をセレクトして、あなたにレコメンドすることができるのだ。

仕組みが分かってしまえば、案外簡単な方法で実現されているのが分かるはずだ。

このような手法は、集合知として、5、6年ぐらい前にはやった分野だよ!マシンの高スペック化により、大量データの有効活用が注目されて、ホットになった分野だ!今では研究もどんどん進んで、実際に実務で使われているアルゴリズムはとんでもなく高度なものになっている。

まとめ

今回は、Amazonとかでよくみる、おすすめ商品を表示する仕組みのうち、簡単かつメジャーな方法として、コサイン近似を使った手法を紹介したよ!その手法は、以下の通りだ!

  • ユーザが何の商品を買ったか記録する
  • 同じ商品を買ったユーザの類似度を比較してグループ化する
  • 同じグループ内でよく購入されているが、そのユーザがまだ購入していない商品をおすすめとして表示する

これを見たあなたは、自分がどんな商品買ったかって情報が、こんなことに使われてるなんて、わたし、心配だわ!とか思っていないだろうか。

どのユーザが何の商品を購入したかは立派な個人情報なので、個人情報保護法で保護されている。その情報は、プライバシーポリシーに記載されている範囲で、適切に使用されている。基本的に、個人が特定されるような使われ方はしない。プライバシーポリシーにそう書いてあればね。

関係ないけど、1万円拾ったっていってよろこんでたその日に、携帯水ポチャして5万円吹っ飛びました。世の中よくできていると思った。