如何使基于项目的协同过滤 运行 更快?

How to make item based collaborative filtering run faster?

我正在尝试找出每对项目之间的相似性。项目在 python 字典中,我一次找到一对相似度。代码是 -

def allSimilarity(itemsDict, similarityMetric):
    itemList = itemsDict.keys()
    itemSimilarityDict = {}
    for item1 in itemList:
        itemSimilarityDict[item1] = {}
        for item2 in itemList:
            if(item1 == item2):
                continue
            itemSimilarityDict[item1][item2] = similarityMetric(itemsDict, item1, item2)
    return itemSimilarityDict

问题是每个项目的外循环需要 5 秒。我有大约 300,000 件物品,所以整个计算需要大约 18 天。有什么办法可以提高速度吗?我可以使用 Theano、Tensorflow 等软件包并为此使用 GPU 吗?或者可以采用云端并并行化流程?

如果没有现成的操作或构建块可用于这种类型的所有相似性比较,我认为机器学习库在这里不会特别有用。

我认为您可以通过查看更通用的并行化解决方案获得更好的运气:OpenMP、TBB、MapReduce、AVX、CUDA、MPI、map reduce 等

此外,用 C++ 重写相同的代码肯定会加快速度。