2016-12-26 2 views
0

각 항목 쌍 사이의 유사성을 찾으려고합니다. 항목은 파이썬 사전에 있으며 한 번에 두 개씩 비슷한 점을 찾습니다. 코드는 -항목 기반 협업 필터링을 빠르게 실행하는 방법은 무엇입니까?

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, 맵리 듀스, AVX, CUDA, MPI,지도 감소 등 또한

, C++에서 동일한 코드를 다시 작성 것이다 틀림없이 물건을 빠르게 속도를 내라.

관련 문제