5. 広告アイテムの推薦
item-itemのcos類似度
を分散処理で計算
e.g. レコメンドバナー
A B C
B C
A C
A D
user
item
user1
user2
user3
user4
A B C D
1 1 1 0
0 1 1 0
1 0 0 1
1 0 1 0
item
item
A
B
C
D
A B C D
1 0.16 0.22 0.33
0.16 1 0.33 0
0.22 0.33 1 0
0.33 0 0 1
item item
similarity matrix
recommend items
user item
page view matrix
列ベクトルとみなして
cos類似度を計算
6. ナイーブにMapReduceで内積を求める
Zadeh, Reza Bosagh, and Gunnar Carlsson. (2013).
シャッフルサイズ=>
m:行数, L:行あたりの非ゼロ要素の個数
行数mの増大で計算不可能に
#users = m, #items = n
user
item
user1
user2
user i
user i+1
A B C D
1 1 1 0
0 1 1 0
1 0 0 1
1 0 1 0
partition 1
partition p
j
i
k
emit
map reduce
データは行方向に分散
7. user
item
user1
user2
user i
user i+1
A B C D
1 1 1 0
0 1 1 0
1 0 0 1
1 0 1 0
partition 1
partition p
j
i
k
emit
map reduce
emit with prob.
ナイーブではないMapReduceで内積を求める
DIMSUM
mに依存しない!シャッフルサイズ=>
oversampling
parameter
Zadeh, Reza Bosagh, and Gunnar Carlsson. (2013).
戦略:
ノルムが大きいベクトルの要素は
サンプルせずにスキップする
9. vs error, shuffle size
Zadeh, Reza Bosagh, and Gunnar Carlsson. (2013).
Twitterでの実データを用いた
実験でIO負荷が40%になった
10. MLlibにおけるDIMSUM
val rows: RDD[Vector] = ... // an RDD of local vectors
val mat: RowMatrix = new RowMatrix(rows)
val sim= mat.columnSimilarities(1000)
MLlibだと、たったこれだけ!
γ: oversampling parameter
21. parameter server型モデル
J. Dean et al.(2012)
⭕パラメータの次元が非常に大
きくても分散して保持できる
⭕収束速度の向上
❌sparkはparameter server
に対応していない
❌通信コストが大きい
sparkでparameter serverを使えるパッ
ケージ: Dist-ML(intel)