2014-12-02 2 views
0

사용자 관심 분야가 많습니다 (> 10k). 각 목록은 상당히 길며 사용자의 관심 분야가 일부 포함되어 있습니다. [ '축구', '권투', '영화'..], 그리고 사용자마다 다릅니다. 따라서 데이터는 매우 고차원 적입니다.고차원 데이터의 유사성을 계산하는 가장 효율적인 방법

이제 각 목록 간의 pairwise 유사성을 계산하고 싶습니다. 실제로 특정 목록에 대해 n이 임의 인 n 번째 유사한 목록을 얻고 싶습니다. 나는 이것을 위해 scikit을 사용하고 있으며, 지금까지 목록을 벡터화하고 각 목록 간의 코사인 유사성을 계산했습니다. 이해할 수 있듯이, 이것은 상당히 느린 것으로 보이고 크지 만 드문 드문 한 데이터 세트에는 잘 맞지 않습니다. kd-Tree 나 Ball-Tree와 같은 것을 사용하여 더 잘 서비스 할 수 있습니까?

답변

0

가장 효율적인 방법은 스파 스 데이터와 코사인을 거꾸로 나열한 색인입니다.

텍스트 검색 엔진을 생각해보십시오. 그것은 당신이 필요로하는 것을 정확히합니다.

+1

kd- 나무가 유용하게 사용되는 더 작은 공간으로의 임의의 투영. +1. –

관련 문제