Apache Spark用户 - 用户推荐?

时间:2017-08-23 07:23:22

标签: apache-spark machine-learning pyspark

我有一些用户已根据选择完成的问题答案的数据集。我试图建立一个用户 - 用户推荐引擎,根据他们对问题的回答找到类似的用户。重要的一点是问题被洗牌,不在订单中,数据也在流式传输。

因此,对于每个用户,我都有这样的数据:

dispatch_async(dispatch_get_main_queue(), ^{
            [self.clViewImages reloadData];
             scrolling collection view to bottom

            NSInteger section = [self numberOfSectionsInCollectionView:self.clViewImages] - 1;
            NSInteger item = [self collectionView:self.clViewImages numberOfItemsInSection:section] - 1;
            NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section];
            [self.clViewImages scrollToItemAtIndexPath:lastIndexPath atScrollPosition:UICollectionViewScrollPositionBottom animated:YES];
        });

我发现大多数教程都是关于用户项推荐的,但没有关于用户用户推荐的内容。

我已经意识到群集和余弦相似性可能是一些不错的选择,而且我发现columnSimilarity非常有效。

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

我有两个问题:

将每个用户定义为列和问题/选择作为行来获取我需要的结果是明智的吗?

我应该如何将这类数据矢量化为数字?如果我需要进行聚类。

提前致谢:)

1 个答案:

答案 0 :(得分:3)

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

columnSimilarity将与瘦和高矩阵一起使用,因此如果您有一个用户用户矩阵,您希望在该矩阵上执行该任务,则它将无效。例如,如果你有1M用户)

根据您的描述,我发现您可能有一个短而宽的矩阵,columnSimilarity将不适合您。

如果您希望执行UUCF,群集将是一种方法。 (其中,LSH也是一种很好的方法。)