「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~...

44
「一番いいおすすめを頼む」 5分でわかるレコメンドエンジンの基礎Present by ぱろっと(@parrot_studio) for Gunma.web #3 2010/12/11

Upload: parrotstudio

Post on 05-Dec-2014

5.582 views

Category:

Technology


3 download

DESCRIPTION

2010/12/11におこなったLT資料 二本のうち、比較的真面目な方

TRANSCRIPT

Page 1: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

「一番いいおすすめを頼む」 〜5分でわかるレコメンドエンジンの基礎〜

Present by ぱろっと(@parrot_studio)

for Gunma.web #3

2010/12/11

Page 2: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

Twitter : @parrot_studio hatena/github : parrot_studio

Profile

RDGC - Ruby(Random) Dungeon Game Core 0.2 http://sourceforge.jp/projects/rdgc/

2010/11 Released!!

Page 3: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

レコメンドの話で大丈夫か?

You sure that’s story of “recommend”?

Page 4: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

レコメンド機能

=Amazonのおすすめ

Page 5: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

4コマ漫画と技術書でカオスな

私のおすすめ

Page 6: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

Amazon says:

お前と似た購買傾向のユーザは

これも買ってるから

お前も買えや( ゚Д゚)y─~~

Page 7: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

でも、技術屋で4コマを買う

「私と似たユーザ」は

そんなにいる(´・ω・)?

ROをやってる技術屋より少ないような・・・

Page 8: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

「似ている」の基準は?

Page 9: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

一番いい説明を頼む

I'll take the best explanation you have.

Page 10: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

例:ラーメン屋の特徴調査

Page 11: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

スープの濃さ:薄い1-10濃い

麺の太さ:細い1-10太い

※数字が大きい≠高スコア

Page 12: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

どれが「似ている」?

濃さ 太さ

A店 7 2

B店 3 5

C店 7 6

Page 13: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

グラフにプロットしてみる

Page 14: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

どれが「似ている」?

0

1

2

3

4

5

6

7

8

0 1 2 3 4 5 6 7

A B C

Page 15: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

似ている=角度が小さい

∠α < ∠β

Page 16: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

「似ていること」は

ベクトルの角度から求められる

Page 17: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

ところで・・・

Page 18: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

「濃さ」「太さ」→2次元

+「価格」→3次元

Page 19: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

+「駅からの距離」→4次元

Page 20: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

もはや想像不能

Σ(゚Д゚;≡;゚д゚)

Page 21: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

公式で機械的に求めよう

(`・ω・´) b

Page 22: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

これは「公式」 うまく使いこなせよ

This is Formula. I think now you'll have more luck.

Page 23: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

求めたいもの

=ベクトルaとbの角度Θ

Page 24: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

角度Θは面倒なので

cosΘを求める

Page 25: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

Θが小さいほどcosΘは1に近づく

=cosΘが1に近いほど似ている

Page 26: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

公式:

cosΘ = a・b / |a||b|

a・b = a1b1+a2b2+…+anbn

|a| = sqrt(a1^2+a2^2+…+an^2)

Page 27: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

ラーメン屋の例だと・・・

a1:A店の濃さの値

a2:A店の太さの値

etc...

Page 28: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

実際に計算してみよう

Page 29: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

|A|^2

= 7^2+2^2 = 49+4 = 53

|A| = sqrt(53) = 7.2801

Page 30: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

A・B

= 7*3+2*5 = 31

|B| = … = 5.8309

Page 31: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

cos∠AB

= 31/(7.28 * 5.83)

= 0.7304

Page 32: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

同じように計算すると・・・

cos∠BC = 0.9483

cos∠AC = 0.9088

cos∠AB = 0.7304

Page 33: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

もしかして:

・BとCはよく似ている

・AとCもそれなりに似ている

・AとBはさほど似てない

Page 34: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

グラフの通り(`・ω・´)

0

1

2

3

4

5

6

7

8

0 1 2 3 4 5 6 7

A B C

Page 35: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

お前は常にレコメンドにとって

最良のベクトルを思い、

自由に選択していけ

So choose factors of vector carefully. The recommend depends on it.

Page 36: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

何をベクトルとするか?

Page 37: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

例1:ユーザが購入した本

{プレゼン=>1, Ruby=>3, 4コマ=>10}

Page 38: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

例2:記事に使われている

キーワードの出現回数

{勉強会=>5, Ruby=>3,

レコメンド=>8, 群馬=>2}

Page 39: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

キーワードの出現傾向が似ている

=よく似た記事はこちら(´・ω・)っ

=記事の推薦システム

Page 40: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

そうだな、次もこれを見ている奴に

付き合ってもらう

Well, next time we'll have to get help, again...

Page 41: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

今回やらなかったこと:

レコメンドシステムの仕組み

Page 42: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

・類似度から推薦するロジック

・計算を最適化するためのIndex構築

・IndexとNoSQL系ストレージの関係

・大規模データをどう分散処理させるか

etc...

Page 43: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

また次の機会に(`・ω・´)ノ

Page 44: 「一番いいおすすめを頼む」 ~5分でわかるレコメンドエンジンの基礎~ (Gunma.web #3 2010/12/11)

ありがとうございました

(´・ω・)っ旦~