SlideShare a Scribd company logo
1 of 44
Download to read offline
「一番いいおすすめを頼む」
〜5分でわかるレコメンドエンジンの基礎〜

  Present by ぱろっと(@parrot_studio)
          for Gunma.web #3
             2010/12/11
Profile

Twitter : @parrot_studio
hatena/github : parrot_studio

           RDGC - Ruby(Random) Dungeon Game Core 0.2
                   http://sourceforge.jp/projects/rdgc/
                                    2010/11 Released!!
レコメンドの話で大丈夫か?


    You sure that’s story of “recommend”?
レコメンド機能
=Amazonのおすすめ
4コマ漫画と技術書でカオスな
   私のおすすめ
Amazon says:
お前と似た購買傾向のユーザは
     これも買ってるから
   お前も買えや( ゚Д゚)y─~~
でも、技術屋で4コマを買う
 「私と似たユーザ」は
そんなにいる(´・ω・)?

      ROをやってる技術屋より少ないような・・・
「似ている」の基準は?
一番いい説明を頼む


    I'll take the best explanation you have.
例:ラーメン屋の特徴調査
スープの濃さ:薄い1-10濃い
麺の太さ:細い1-10太い
※数字が大きい≠高スコア
どれが「似ている」?

    濃さ 太さ
 A店 7   2
 B店 3   5
 C店 7   6
グラフにプロットしてみる
どれが「似ている」?
8

7

6

5

4

3

2

1

0
    0   1   2   3       4       5   6   7

                A   B       C
似ている=角度が小さい




   ∠α < ∠β
「似ていること」は
ベクトルの角度から求められる
ところで・・・
「濃さ」「太さ」→2次元
 +「価格」→3次元
+「駅からの距離」→4次元
もはや想像不能
Σ(゚Д゚;≡;゚д゚)
公式で機械的に求めよう
   (`・ω・´) b
これは「公式」 うまく使いこなせよ


       This is Formula.
       I think now you'll have more luck.
求めたいもの
=ベクトルaとbの角度Θ
角度Θは面倒なので
 cosΘを求める
Θが小さいほどcosΘは1に近づく
=cosΘが1に近いほど似ている
公式:
cosΘ = a・b / |a||b|
a・b = a1b1+a2b2+…+anbn
|a| = sqrt(a1^2+a2^2+…+an^2)
ラーメン屋の例だと・・・
a1:A店の濃さの値
a2:A店の太さの値
         etc...
実際に計算してみよう
|A|^2
= 7^2+2^2 = 49+4 = 53
|A| = sqrt(53) = 7.2801
A・B
= 7*3+2*5 = 31
|B| = … = 5.8309
cos∠AB
= 31/(7.28 * 5.83)
= 0.7304
同じように計算すると・・・
cos∠BC = 0.9483
cos∠AC = 0.9088
cos∠AB = 0.7304
もしかして:
・BとCはよく似ている
・AとCもそれなりに似ている
・AとBはさほど似てない
グラフの通り(`・ω・´)
8

7

6

5

4

3

2

1

0
    0   1   2   3       4       5   6   7

                A   B       C
お前は常にレコメンドにとって
 最良のベクトルを思い、
  自由に選択していけ

     So choose factors of vector carefully.
     The recommend depends on it.
何をベクトルとするか?
例1:ユーザが購入した本
{プレゼン=>1, Ruby=>3, 4コマ=>10}
例2:記事に使われている
キーワードの出現回数
 {勉強会=>5, Ruby=>3,
   レコメンド=>8, 群馬=>2}
キーワードの出現傾向が似ている
=よく似た記事はこちら(´・ω・)っ
=記事の推薦システム
そうだな、次もこれを見ている奴に
    付き合ってもらう

        Well, next time
        we'll have to get help, again...
今回やらなかったこと:
レコメンドシステムの仕組み
・類似度から推薦するロジック
・計算を最適化するためのIndex構築
・IndexとNoSQL系ストレージの関係
・大規模データをどう分散処理させるか
etc...
また次の機会に(`・ω・´)ノ
ありがとうございました
  (´・ω・)っ旦~

More Related Content

Viewers also liked

ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
horihorio
 
事業計画作成ワークショップ(公開用)
事業計画作成ワークショップ(公開用)事業計画作成ワークショップ(公開用)
事業計画作成ワークショップ(公開用)
Kengo Ito
 

Viewers also liked (13)

ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
 
10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
 10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot 10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
 
25 Discovery Call Questions
25 Discovery Call Questions25 Discovery Call Questions
25 Discovery Call Questions
 
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
 
Class 1: Email Marketing Certification course: Email Marketing and Your Business
Class 1: Email Marketing Certification course: Email Marketing and Your BusinessClass 1: Email Marketing Certification course: Email Marketing and Your Business
Class 1: Email Marketing Certification course: Email Marketing and Your Business
 
Behind the Scenes: Launching HubSpot Tokyo
Behind the Scenes: Launching HubSpot TokyoBehind the Scenes: Launching HubSpot Tokyo
Behind the Scenes: Launching HubSpot Tokyo
 
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
 
OSC東京(2014年10月)
OSC東京(2014年10月)OSC東京(2014年10月)
OSC東京(2014年10月)
 
【事前資料:NG版】非オタの彼女が俺の持ってる監視ツールに興味津々なんだが…
【事前資料:NG版】非オタの彼女が俺の持ってる監視ツールに興味津々なんだが…【事前資料:NG版】非オタの彼女が俺の持ってる監視ツールに興味津々なんだが…
【事前資料:NG版】非オタの彼女が俺の持ってる監視ツールに興味津々なんだが…
 
事業計画作成ワークショップ(公開用)
事業計画作成ワークショップ(公開用)事業計画作成ワークショップ(公開用)
事業計画作成ワークショップ(公開用)
 
Ley Reestructuración de Deudas
Ley Reestructuración de Deudas Ley Reestructuración de Deudas
Ley Reestructuración de Deudas
 
Diabetes and ayurveda
Diabetes and ayurvedaDiabetes and ayurveda
Diabetes and ayurveda
 

More from parrotstudio

More from parrotstudio (15)

"プロのプログラマ"を目指す初心者が最初に読むべきたった一冊の本
"プロのプログラマ"を目指す初心者が最初に読むべきたった一冊の本"プロのプログラマ"を目指す初心者が最初に読むべきたった一冊の本
"プロのプログラマ"を目指す初心者が最初に読むべきたった一冊の本
 
希望の関数と絶望の副作用
希望の関数と絶望の副作用希望の関数と絶望の副作用
希望の関数と絶望の副作用
 
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
 
ぱろっと、Padrinoやめるってよ
ぱろっと、Padrinoやめるってよぱろっと、Padrinoやめるってよ
ぱろっと、Padrinoやめるってよ
 
エンジニアがTRPGをやるべき理由 〜隣り合わせの遊びと技術〜 (Gunma.web #12 2013/02/09)
エンジニアがTRPGをやるべき理由 〜隣り合わせの遊びと技術〜  (Gunma.web #12 2013/02/09)  エンジニアがTRPGをやるべき理由 〜隣り合わせの遊びと技術〜  (Gunma.web #12 2013/02/09)
エンジニアがTRPGをやるべき理由 〜隣り合わせの遊びと技術〜 (Gunma.web #12 2013/02/09)
 
(´・ω・`)としたーは衰退しました (Gunma.web #11 2012/11/23)
(´・ω・`)としたーは衰退しました  (Gunma.web #11 2012/11/23) (´・ω・`)としたーは衰退しました  (Gunma.web #11 2012/11/23)
(´・ω・`)としたーは衰退しました (Gunma.web #11 2012/11/23)
 
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08) 私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
私に作る時間がないのはどう考えても仕事が悪い!? (Gunma.web #10 2012/09/08)
 
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
ネタプログラミング言語クリエイターYouma (Gunma.web #8 2012/03/03)
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 
Signs;Gate - RESTfulなサイトの作り方 (Gunma.web #6 2011/09/03)
Signs;Gate - RESTfulなサイトの作り方 (Gunma.web #6 2011/09/03) Signs;Gate - RESTfulなサイトの作り方 (Gunma.web #6 2011/09/03)
Signs;Gate - RESTfulなサイトの作り方 (Gunma.web #6 2011/09/03)
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
 
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
 
俺の体がこんなにすっきりしているわけがない ~5分でわかる催眠プログラミング~ (Gunma.web #3 2010/12/11)
俺の体がこんなにすっきりしているわけがない ~5分でわかる催眠プログラミング~ (Gunma.web #3 2010/12/11) 俺の体がこんなにすっきりしているわけがない ~5分でわかる催眠プログラミング~ (Gunma.web #3 2010/12/11)
俺の体がこんなにすっきりしているわけがない ~5分でわかる催眠プログラミング~ (Gunma.web #3 2010/12/11)
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
 

Recently uploaded

Recently uploaded (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

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