2016-12-26 88 views
0

我試圖找出每對項目之間的相似性。項目在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嗎?或者可以採取雲計算並行化流程?

回答

1

我不認爲機器學習庫會在這裏特別有用,如果沒有任何操作或構建塊可用於此類型的所有類似的所有相似性比較。

我想你會通過看更通用的並行化解決方案有更好的運氣:OpenMP的,TBB,MapReduce的,AVX,CUDA,MPI,地圖降低等

而且,改寫C++相同的代碼會肯定會加快速度。