2010-04-14 5 views
4

나는 벡터 집합을 가지고 있습니다. 그 세트에있는 벡터의 경우이 벡터에 가장 가까운 서브 세트를 찾고 싶습니다. 어떤 알고리즘이 이것을 할 수 있습니다.가장 가까운 벡터를 찾는 알고리즘

+1

벡터가 "포인트"또는 "길 찾기"를 나타 냅니까? 일부 질문에서 언급 한 코사인 거리 측정 값이 크기를 정상화 할 것이므로 유클리드 (또는 다른 민 코우 스키 표준) 거리를 찾고있는 경우 원하는 거리가 아닐 수도 있습니다. 그런 경우에, 당신은 기존의 가장 가까운 이웃 알고리즘 kd-trees, k-means 클러스터링 등을 원합니다. – tzaman

답변

3

은 벡터들 중에서 유사성 유사성 (http://en.wikipedia.org/wiki/Cosine_similarity)을 사용하여 정렬합니다.

+0

+1 스칼라 제품에 대해서만 언급 할 것입니다. 벡터 길이에 대해서는 생각하지 않았습니다. 비웃음에서 저를 구해 주셔서 감사합니다;) –

+0

우리는 그가 원했던 것을 거리로 모릅니다. –

3

이 알고리즘 클래스는 가장 가까운 이웃 또는 K 가장 가까운 이웃이라고합니다.

excepeiont는 벡터 방향이 중요한 경우에 효과적이라고 말합니다. 벡터가 공간에서 위치를 나타내는 경우 공간에서 거리를 나타내는 측정 기준이 작동합니다.

예를 들어 Euclidean distance : 각 차원의 제곱 차이의 제곱근을 취합니다. 이렇게하면 각 벡터에 대한 거리가 표시되고이 거리에서 오름차순으로 벡터 세트가 정렬됩니다.

이 프로세스는 O (N) 시간이됩니다. 이 속도가 너무 느리면 일반적인 K Nearest Neighbour 알고리즘을 살펴볼 수 있습니다. 문제는 많은 양의 데이터에 관련된 경우

1

는 :

나는 주어진 에 가까운 선을 발견 ddj.com에 관련 알고리즘을 출판 :

Accelerated Search For the Nearest Line

당신 주어진 벡터를 다수의 점으로 변환함으로써이 알고리즘을 수정해야합니다. 이렇게하면 수를 대폭 줄일 수 있습니다.과 일치합니다. 기사에 설명 된대로 정확한 일치는 다음, 가능한 일치에 벡터의 시작과 끝 지점에서 두 벡터의 절단 포인트 또는

  • 가져 오기 거리를 찾기

    • 에 의해 각각의 가능한 일치를 확인해야합니다
  • 관련 문제