如何使基于项目的协同过滤 运行 更快?
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++ 重写相同的代码肯定会加快速度。
我正在尝试找出每对项目之间的相似性。项目在 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++ 重写相同的代码肯定会加快速度。