Upload
jubatusofficial
View
7.533
Download
1
Embed Size (px)
Citation preview
jubarecommenderの紹介
Jubatus Casual Talks #4
2016/06/18(土)
NTTソフトウェアイノベーションセンタ 東羅 翔太郎
Copyright©2016 NTT corp. All Rights Reserved.
jubarecommenderとは
近傍探索ベースの推薦をJubatus上で行う エンジン
近傍データ(あるデータと類似したデータ)の 探索、および推薦(あるデータの値を、近傍のデータを元に類推)する機能
Copyright©2016 NTT corp. All Rights Reserved.
推薦のイメージ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.
推薦のイメージ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.
Jubatus の推薦アルゴリズム
主なアルゴリズム(類似度の計算方法)
詳細は公式サイトを御覧ください ※ inverted_index, inverted_index_euclid は厳密な距離計算を行います。他は近似計算を行う代わりに高速です。
アルゴリズム名 尺度 備考
inverted_index コサイン類似度 厳密
inverted_index_euclid ユークリッド距離 厳密
minhash Jaccard係数 近似、省メモリ
lsh コサイン類似度 近似、省メモリ
euclid_lsh ユークリッド距離 近似、省メモリ
Copyright©2016 NTT corp. All Rights Reserved.
クライアント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.
簡単なサンプル: プログラミング言語のレコメンド
プログラミング言語の特徴から、クエリに 近い言語を推薦
Wikipediaの「Comparison of programming languages」を参考にデータを作成
https://en.wikipedia.org/wiki/Comparison_of_programming_languages
Copyright©2016 NTT corp. All Rights Reserved.
データ概要
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.
デモ Gist
• https://gist.github.com/torash/d17709aca00d53c20d4a82c61ca28f03
Copyright©2016 NTT corp. All Rights Reserved.
まとめ
Jubatusの推薦機能 jubarecommender を紹介 近傍探索ベースのエンジン
jubarecommender を用いたサンプル、プログラミング言語の推薦を紹介 アイテムベースの推薦
前処理をほとんど行わずに処理が可能
「使えそうだな」「動かしてみたいな」と 思われたら、まずは是非 jubatus-example を触ってみてください! https://github.com/jubatus/jubatus-example
Copyright©2016 NTT corp. All Rights Reserved.