2013-09-27 6 views
0

나는 어떤 방식 으로든 비교하고 싶은 300.000 정도의 벡터 세트를 가지고 있는데, 주어진 하나의 벡터에서 나는 세 가지 방법을 생각한 가장 가까운 벡터를 찾을 수 있기를 원합니다.벡터 사이의 거리 측정

  • 간단한 유클리드 거리
  • 코사인 유사도
  • 는 그람 행렬을 계산하도록 (예를 가우시안 용) 커널을 사용.
  • 벡터를 이산 확률 분포로 처리하고 ( 감각을 만들어 냄) 일부 발산 측정을 계산합니다.

다른 것이 아니라 하나를 수행하는 것이 유용한 경우에는 실제로 이해가되지 않습니다. 내 데이터에는 제로 요소가 많이 있습니다. 이를 염두에두고 세 가지 방법 중 어느 것이 가장 좋을지에 대한 일반적인 원칙이 있습니까?

약한 질문에 대한 죄송합니다

하지만 어딘가에 시작했다 ...

감사합니다!

답변

0

질문이 명확하지 않습니다. 벡터 간의 거리 메트릭이나 가장 가까운 이웃을 효율적으로 찾는 알고리즘을 찾고 있습니까?

벡터에 복식 또는 정수와 같은 숫자 유형 만 있으면 kd 트리와 같은 구조를 사용하여 가장 가까운 이웃을 효율적으로 찾을 수 있습니다. (당신은 d 차원 공간의 점들을보고 있기 때문에). 다른 방법에 대해서는 http://en.wikipedia.org/wiki/Nearest_neighbor_search을 참조하십시오.

그렇지 않으면 거리 메트릭과 알고리즘을 선택하는 것이 벡터의 내용에 따라 크게 달라집니다.

0

벡터가 매우 희소하고 바이너리 인 경우 Hamming 또는 Hellinger 거리를 사용할 수 있습니다. 벡터 크기가 클 경우 유클리드를 사용하지 마십시오 (http://en.wikipedia.org/wiki/Curse_of_dimensionality 참조).

거리/유사성 측정에 대한 설문 조사는 http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1&type=pdf&doi=10.1.1.154.8446을 참조하십시오. 단,이 논문에서는 확률 분포의 한도로 제한하고 있습니다.