10
jubarecommenderの紹介 Jubatus Casual Talks #4 2016/06/18() NTTソフトウェアイノベーションセンタ 東羅 翔太郎 Copyright©2016 NTT corp. All Rights Reserved.

jubarecommenderの紹介

Embed Size (px)

Citation preview

Page 1: jubarecommenderの紹介

jubarecommenderの紹介

Jubatus Casual Talks #4

2016/06/18(土)

NTTソフトウェアイノベーションセンタ 東羅 翔太郎

Copyright©2016 NTT corp. All Rights Reserved.

Page 2: jubarecommenderの紹介

jubarecommenderとは

近傍探索ベースの推薦をJubatus上で行う エンジン

近傍データ(あるデータと類似したデータ)の 探索、および推薦(あるデータの値を、近傍のデータを元に類推)する機能

Copyright©2016 NTT corp. All Rights Reserved.

Page 3: jubarecommenderの紹介

推薦のイメージ1: ユーザベース

例えばECサイトの場合 全ユーザの購買履歴

ユーザ間の類似度(どれくらい嗜好が似ているか)を計算する

類似度の高いユーザの購入した商品を薦める

商品A 商品B 商品C 商品D 商品E

ユーザ1 1 1 0 0 1

ユーザ2 0 0 1 1 0

ユーザ3 0 1 1 0 0

ユーザ4 1 1 0 0 0

Copyright©2016 NTT corp. All Rights Reserved.

Page 4: jubarecommenderの紹介

推薦のイメージ2: アイテムベース

例えばECサイトの場合 全ユーザの購買履歴

商品間の類似度を計算する 類似する商品を推薦する ⇒ 「この商品を買った人はこんな商品も買っています」

ユーザ1 ユーザ2 ユーザ3 ユーザ4

商品A 1 0 0 1

商品B 1 0 1 1

商品C 0 1 1 0

商品D 0 1 0 0

商品E 1 0 0 0

Copyright©2016 NTT corp. All Rights Reserved.

Page 5: jubarecommenderの紹介

Jubatus の推薦アルゴリズム

主なアルゴリズム(類似度の計算方法)

詳細は公式サイトを御覧ください ※ inverted_index, inverted_index_euclid は厳密な距離計算を行います。他は近似計算を行う代わりに高速です。

アルゴリズム名 尺度 備考

inverted_index コサイン類似度 厳密

inverted_index_euclid ユークリッド距離 厳密

minhash Jaccard係数 近似、省メモリ

lsh コサイン類似度 近似、省メモリ

euclid_lsh ユークリッド距離 近似、省メモリ

Copyright©2016 NTT corp. All Rights Reserved.

Page 6: jubarecommenderの紹介

クライアントAPI

利用頻度が多いと思われるAPIを紹介します update_row (id, datum)

キーがid、バリューがdatumの行を追加します datumとはJubatusで用いるkey-value形式のデータ形式です

similar_row_from_id (id, size) id行の近傍データを size 個探索して返します

complete_row_from_id (id) id行の近傍データから、id行の欠けている値を予測して、補完したデータを返します

他は公式サイトを参照 http://jubat.us/ja/api_recommender.html

Copyright©2016 NTT corp. All Rights Reserved.

Page 7: jubarecommenderの紹介

簡単なサンプル: プログラミング言語のレコメンド

プログラミング言語の特徴から、クエリに 近い言語を推薦

Wikipediaの「Comparison of programming languages」を参考にデータを作成

https://en.wikipedia.org/wiki/Comparison_of_programming_languages

Copyright©2016 NTT corp. All Rights Reserved.

Page 8: jubarecommenderの紹介

データ概要

Language Intended use Imperative Object-

oriented Functional

Procedura

l Generi

c Reflectiv

e Event-

driven Other

paradigm(s) Standardized?

ActionScript

3.0

Application,

client-side,

web Yes Yes Yes 1996, ECMA

Ada

Application,

embedded,

realtime, syste

m

Yes Yes[2] Yes[3] Yes[4] concurrent,[5]di

stributed,[6]

1983, 2005, 2012,

ANSI,

ISO, GOST27831-

88[7]

Aldor

Highly

domain-

specific,

symbolic

computing

Yes Yes Yes No

ALGOL 58 Application Yes No

今回使う部分

言語毎に用途が書かれたカラムと、各パラダイムを含んでいればYesが入ったカラムが並んでいます

今回は列ごとに文字列としてスペース区切りで特徴ベクトルを作成するようにします

Copyright©2016 NTT corp. All Rights Reserved.

Page 10: jubarecommenderの紹介

まとめ

Jubatusの推薦機能 jubarecommender を紹介 近傍探索ベースのエンジン

jubarecommender を用いたサンプル、プログラミング言語の推薦を紹介 アイテムベースの推薦

前処理をほとんど行わずに処理が可能

「使えそうだな」「動かしてみたいな」と 思われたら、まずは是非 jubatus-example を触ってみてください! https://github.com/jubatus/jubatus-example

Copyright©2016 NTT corp. All Rights Reserved.