4. MLlibを使ったレコメンデーション
def
main(args:
Array[String])={
val
conf
=
new
SparkConf().setMaster("yarn-‐
client").setAppName("MllibTest")
val
sc
=
new
SparkContext(conf)
val
INPUT_FILENAME
=
"s3n://{bucket-‐name}/spark/
vec.npy"
val
rows
=
sc.textFile(INPUT_FILENAME).map
{
line
=>
val
values
=
line.split('t').map(_.toDouble)
Vectors.dense(values)
}
val
mat
=
new
RowMatrix(rows)
val
simsPerfect
=
mat.columnSimilarities()
simsPerfect.entries.saveAsTextFile("s3n://{bucket-‐
name}/spark/sim")
}
行列に変換し、アイテム同士の
コサイン類似度を計算
6. 情弱(Naive)な方法
Zadeh, Reza Bosagh, and Gunnar Carlsson. "Dimension independent matrix square using
mapreduce." arXiv preprint arXiv:1304.1467 (2013).
シャッフルサイズ=>O(mL^2) m:行数,L:非ゼロ要素の個数
m 10^12, L 100くらいで計算不可能に
7. 情強な方法
DIMSUM Sampling
0.0 1.1 3.0
1.1 2.0 1.8
0.2 3.1 6.2
7.7 2.7 8.3
ri
aij
cj
Zadeh, Reza Bosagh, and Gunnar Carlsson. "Dimension independent matrix square using
mapreduce." arXiv preprint arXiv:1304.1467 (2013).
シャッフルサイズ=>O(nLγ) m 10^13, n 10^4