2017-08-23 40 views
2

我有一些数据集问题答案用户已通过选择完成。我试图建立一个用户用户推荐引擎,根据他们对问题的回答找到类似的用户。一个重要的问题是问题被打乱,并且不是一个顺序,数据是流式传输。Apache Spark用户推荐?

因此,对于每一个用户我有这样一个数据:有关用户用户recomenndations

user_1: {"question_1": "choice_1", ...} 
user_2: {"question_3": "choice_4", ...} 
user_3: {"question_1": "choice_3", ...} 

我发现大多数教程是关于用户的项目建议,但一无所获。

我意识到聚类和余弦相似性可能是一些很好的选择,我发现columnSimilarity是非常有效的。

rows = sc.parallelize([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) 

mat = RowMatrix(rows) 

sims = mat.columnSimilarity() 

我有两个问题:

是否明智定义每个用户作为柱,问题/选择,因为行得到的结果我需要什么?

我应该如何将这种数据向量化为数字?如果我需要做群集。

在此先感谢:)

+2

columnSimilarity与瘦和高矩阵一起使用,所以如果您有一个用户用户矩阵,您希望执行该任务,它将无法工作。例如,如果你有1M用户) – eliasah

+0

@eliasah是的谢谢你的回复。只是想确定。那么聚类会是一个更好的方法吗? –

回答

3

不幸的是,这不是它可以做到的方式。 真是太好了,不是吗?

columnSimilarity将与瘦和高矩阵一起使用,所以如果您有一个用户用户矩阵,您希望执行该任务,它将无法工作。例如,如果您有1M用户)

从您的描述中,我发现您可能有一个短而宽的矩阵,columnSimilarity不适用于您。

如果你想执行UUCF,集群将是一种方式。 (除此之外,LSH也是一种很好的方法。)

+0

谢谢。你可以请分享一个例子或链接关于如何将这个数据集矢量化为数字? –

+0

你可以在这里找到你需要的东西https://stackoverflow.com/questions/44325555/fit-a-dataframe-into-randomforest-pyspark/44326172#44326172和https://stackoverflow.com/questions/32277576/how- to-handle-categorical-features-with-spark-ml/32278617#32278617 – eliasah

+0

对不起,愚蠢的问题,我是数据科学的新手。我需要从我的问题/答案中生成要素数组,但是您发布的链接对于之前的要素具有一些值。 –