2016-12-26 15 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

このタイプのすべてからすべての類似性比較のためにすぐに利用できる操作やビルディングブロックがない場合、機械学習ライブラリは特に役立ちません。

私はあなたがより一般的な並列化ソリューションを見ることで、より良い運を持っていると思う

:C++で同じコードを書き換え、また

など、OpenMPの、TBB、MapReduceの、AVX、CUDA、MPI、マップが減少します確かに物事をスピードアップします。

関連する問題