KristofferC/NearestNeighbors.jl

High performance nearest neighbor data structures (KDTree and BallTree) and algorithms for Julia.

해결하는 문제

NearestNeighbors.jl은 데이터셋에서 가장 가까운 점을 효율적으로 찾는 방법을 제공합니다. 이는 많은 과학 시뮬레이션 및 머신러닝 작업의 기본 연산입니다. 이 패키지는 수백만 개의 점을 검색할 때 모든 점을 다른 모든 점과 비교하는(브루트 포스) 대규모 데이터셋에는 너무 느린 방법을 피하는 문제를 해결합니다.

작동 방식

이 패키지는 데이터 포인트를 영역의 계층 구조로 구성하는 "트리"라고 하는 여러 공간 분할 구조를 구현합니다:

  • KDTree: 축 정렬 평면을 사용하여 데이터를 분할하며, 저차원 데이터에 이상적입니다.
  • BallTree: 초구를 사용하여 점을 그룹화하므로 고차원 및 사용자 정의 거리 메트릭에 더 적합합니다.
  • BruteTree: 기준선으로 사용되는 단순 선형 검색입니다.
  • PeriodicTree: 정의된 경계의 가장자리를 "래핑"하는 검색을 허용하는 래퍼로, 물리 시뮬레이션에 중요합니다.

트리의 병렬 구성을 지원하여 설정 시간을 단축하고, 데이터가 자주 업데이트될 때 메모리를 재사용하기 위한 변경 가능한 생성자(KDTree! 등)를 제공합니다.

대상 사용자

이 도구는 다차원 공간에서 빠른 k-최근접 이웃(kNN) 또는 범위 검색을 수행해야 하는 Julia 사용자, 연구자 및 개발자를 위해 설계되었습니다.

주요 기능

  • 여러 트리 유형: 데이터 차원과 메트릭에 따라 KD-트리와 볼-트리 중에서 선택할 수 있습니다.
  • 주기적 경계: PeriodicTree를 통한 주기적 도메인에 대한 내장 지원.
  • 메모리 효율성: 디스크 메모리 매핑을 사용하여 사용 가능한 RAM보다 큰 데이터셋을 처리하기 위한 DataFreeTree가 포함되어 있습니다.
  • 고성능: 멀티스레드 트리 구성을 지원하며 디버깅 및 시각화를 위한 최적화된 트리 순회 워커를 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트