mapreduce计算用户相似度矩阵的方法
我有一个很多用户(超过1000万)的列表,每个用户都有一个用户标识,后面跟着10个浮点数字,表示他们的偏好。我想用基于mapreduce的余弦相似度高效地计算用户相似度矩阵。但是,由于这些值是浮点数,因此很难确定mapreduce框架中的键。有什么建议么?mapreduce计算用户相似度矩阵的方法
回答:
我认为最简单的解决方案是Mahout库。 Mahout中有几个map-reduce相似性矩阵作业可能适用于您的用例。
第一个是Mahout的ItemSimilarityJob
,它是其推荐系统库的一部分。该作业的具体信息可以参见here。您只需提供所需格式的输入数据,并选择您的VectorSimilarityMeasure
(对于您的情况将为SIMILARITY_COSINE)以及任何其他优化。由于您正在计算基于10个浮点值的偏好向量来计算用户 - 用户相似度,因此您可以做的是为矢量的索引分配一个简单的1至10数字哈希,并生成一个简单的.csv文件vectorIndex,userID,decimalValue作为Mahout项目相似度作业(用户ID是数值Int或Long值)的输入。结果输出应该是一个由用户标识,用户标识和相似性组成的选项卡分隔文本文件。
第二种解决方案可能是包含在其数学库中的Mahout的RowSimilarityJob
。我从来没有用过它,但可以找到一些信息here并在此previous stackoverflow thread。而不是.csv作为输入,您需要将输入数据翻译为DistributedRowMatrix
,其中userID是矩阵的行。我相信,输出也将是一个DistributedRowMatrix
序列文件,其中包含您正在寻找的用户 - 用户相似性数据。
我想哪个解决方案更好取决于你喜欢什么输入/输出格式。祝一切顺利。
以上是 mapreduce计算用户相似度矩阵的方法 的全部内容, 来源链接: utcz.com/qa/261162.html