고정 거리 내에서 포인트 수를 최대화하는 알려진 수의 원 중심 찾기


10

지정된 거리 ( ) 내의 총 점 수를 최대화 하는 지정된 수의 원 중심 ( ) 의 중심을 찾으려는 2D 데이터 세트가 있습니다 .RNR

예를 들어 10,000 데이터 포인트 있고 반경 내에서 가능한 한 많은 포인트를 캡처하는 원 의 중심을 찾고 싶습니다 . 5 개의 중심과 10의 반경은 데이터에서 도출 된 것이 아니라 미리 제공됩니다.N = 5 R = 10(Xi,Yi)N=5R=10

원 안에 데이터 요소가 있으면 이진 또는 제안입니다. 경우 , 11 개 단위 거리 100 개 단위 대 점까지의 값의 차이는있는 그대로 둘> 10. 마찬가지로 원 내에 존재에 대해, 에지 근처의 중심 대 근방에 존재하는 여분의 가치가 없다 멀리 없다 . 데이터 포인트는 원 중 하나에 있거나 바깥에 있습니다.R=10

이 문제를 해결하는 데 사용할 수있는 좋은 알고리즘이 있습니까? 이는 클러스터링 기술과 관련이있는 것으로 보이지만 평균 거리를 최소화하는 것이 아니라 점이 점 중 하나의 내에 있으면 "거리"기능은 0이고, 그렇지 않으면 1입니다.NRN

R 에서이 작업을 수행하는 방법을 찾는 것이 좋을 것입니다. 그러나 모든 접근법은 감사하겠습니다.


서클 오버랩이 허용됩니까?
curious_cat

1
이것은 기본적으로 래스터 데이터 세트에서 인접 (또는 초점) 작업입니다. 응답이 있는지 GIS 사이트를 확인하고 R 패키지를 검사하여 래스터 분석을 수행하는 것이 좋습니다.
Andy W

1
원 겹침은 허용되지만 두 원이 모두 포함하는 데이터 포인트는 두 번 계산되지 않습니다. 래스터 데이터 세트에서 이웃 / 초점 작업에 대한 포인터에 감사드립니다. 나는 그 선을 따라 무언가를 찾을 것이다.
colonel.triq

@Andy W : 초점 작업은 자연스럽게 솔루션에 관여하지만이 문제는 GIS 커뮤니티 IMHO의 전문 지식을 넘어서는 문제입니다. 왜냐하면 실제로는 (매우 어려운) 최적화 문제이기 때문입니다. 그것은 최대의 초점-평균-그리드를 찾기 란 쉽지 않습니다. 여기에 잠시 동안 유지 한 다음 만족스러운 솔루션이 없으면 프로그래밍 지향 사이트로 마이그레이션하는 것이 좋습니다.
whuber

.... 또는 math.overflow로 마이그레이션 하시겠습니까? 그들은 이것에 대해서도 약간의 통찰력을 가질 수 있습니다.
curious_cat

답변:


1

이것은 k- 평균 문제입니다. 중심의 반경은 동일하다고 가정하는 한 중요하지 않습니다.

연결:

원의 중심이 점의 확률이 가장 높은 위치에 배치됩니다.

고전적인 K- 평균 절차 :

  1. 클러스터 수를 5로 설정
  2. 각 지점을 무작위 군집에 넣습니다
  3. 각 군집에 대해 평균 위치를 계산
  4. 각 점에 대해 각각의 새로운 평균 위치까지의 거리를 계산하십시오.
  5. 멤버쉽을 가장 가까운 클러스터와 연결
  6. 완료 될 때까지 반복 (반복, 위치 변경 또는 기타 오류 메트릭)

옵션 :

  • 평균 위치를 새 위치로 천천히 변환하는 3 후 약간 완화가 가능합니다.
  • 이것은 별개의 시스템이므로 완벽하게 수렴하지 않습니다. 포인트가 멤버십 변경을 중단하면 때때로 종료되고 종료 될 수 있지만 때로는 약간 흔들립니다.
  • (대부분의 사람들이 해야하는 것처럼) 자신의 코드를 작성하는 경우 위의 POR k- 평균을 시작점으로 사용하고 원에 독점적으로 완전히 포함 된 점의 백분율로 EM에 대한 변형을 수행 할 수 있습니다.

K- 평균이 문제를 공격하는 이유 :

  • 성분의 공분산이 동일한 가우시안 혼합 모형을 피팅하는 것과 같습니다. 혼합물 성분의 중심은 가장 높은 기대치의 위치에 위치하게됩니다. 일정한 확률의 곡선은 원이 될 것입니다. 이것은 EM 알고리즘이므로 점근 적 수렴을 갖습니다. 멤버쉽은 단단하지 않고 단단합니다.
  • 등분 산 성분 혼합 모형의 기본 가정이 합리적으로 "가까이"라면이 방법이 적합 할 것입니다. 무작위로 포인트를 분배하면 적합하지 않을 수 있습니다.

균일하지 않은 분포를 선택하는 비 가우시안 성분이 있는 "Zero Inflated Poisson" 과 유사한 아날로그가 있어야합니다 .

모델을 "조정"하고 싶고 충분한 샘플 포인트가 있다고 확신 한 경우 k- 평균으로 초기화 한 다음 원의 반지름 외부에서 포인트를 경쟁에서 제거하는 증강 된 k- 평균 조절기를 만들 수 있습니다. 가지고있는 원을 약간 교란시킬 수 있지만 데이터에 따라 성능이 약간 향상되었을 수 있습니다.


K-means가이 문제를 어떻게 해결하는지 좀 더 명확하게 설명해 주시겠습니까?
whuber

제안 해 주셔서 감사합니다. K-mean 접근법이 문제를 해결한다는 것이 여전히 명확하지 않습니까? 중심이 5 단위 정도 오프셋되는 정규 (0,1) 생성 데이터의 세 군집의 예를 고려하십시오. K- 평균 센터는 최대 밀도를 제공합니다. 이제 "구멍"으로 일부 포인트를 잘라내어 중심에 0.5보다 가까운 데이터를 제거하십시오. K- 평균은 여전히 ​​동일한 중심에 대해 표시되지만 N = 3, R = 0.5의 최대 범위를 얻으려고 시도하는 경우 도넛 구멍에 데이터가 없기 때문에 정답이 아닙니다. 내가 뭔가를 오해하고 있습니까?
colonel.triq

시간이 있으면 더 나은 답변을 위해 귀하의 질문을 더 조사 할 것입니다. 음수 가중치를 허용합니다. 때때로 방사형 이항 다항식뿐만 아니라 데이터 도넛도 처리 할 수 ​​있습니다.
EngrStudent

0

누군가 더 나은 공식 알고리즘을 가지고 있지만 여기에 하나의 무차별 대입 접근 방식이 있습니다 (핵? 육각형 비닝 알고리즘 중 하나를 사용하여 2D 히스토그램을 계산합니다. 마찬가지로 hexbin에서 R.

나는 반경 R의 원을 대략 둘러싸는 육각형 크기를 사용하고 상단 N 빈을 기준으로 정렬합니다. N멀리 떨어진 쓰레기통 이 있다면 좋습니다. 이제 한 가지 방법은 상단 밀도 육각형의 중심에서 2 * R 스케일 (x 및 y 방향)로 원을 중심으로 이동하는 것입니다. 컴퓨팅 밀도는 위치를 대략적으로 최적화 할 수 있습니다. 이것은 육각형이 고정 원점과 관련하여 움직이는 창이 아니라는 사실을 설명합니다.

모든 상단 쓰레기통이 가까이 있으면 그 근처에서 서클을 더 똑똑하게 움직여야합니다.

그러한 순진한 전략이 눈에 띄게 실패하는 몇 가지 경우를 생각할 수 있습니다. 그러나 단지 시작점입니다.

한편, 누군가가 더 나은 알고리즘을 갖기를 바랍니다.


1
이와 같은 것이 적어도 하나의 원에 대해 문제를 해결할 수 있습니다 . (이는 GIS에서 초점 수를 사용하여 쉽게 수행 할 수 있습니다.) 그러나 다중 원 문제는 해결되지 않습니다.
whuber

@ whuber : 하나의 원을 풀고 그 원 안에있는 모든 점을 떨어 뜨린 다음 원래 알고리즘을 반복하는 것은 어떻습니까? 이것이 실패하는 상황을 볼 수 있습니까?
curious_cat

예, 쉽게 (귀하의 "욕심쟁이 알고리즘"입니다.) 포인트가있는 1 차원 의 경우 를 고려하십시오 . 귀하의 알고리즘 풋 커버하는 최초의 원 두 번째 덮개 : 8 점 토토에서 . 더 나은 솔루션이 포함 하나 원과와 9 점 : 서로. 0 , 1 , 2 , 20 , 21 , 28 , 29 , 30 , 31 , 32 , 39 , 40 28 , 29 , 30 , 31 , 32 0 , 1 , 2 (20) , 21 , 28 , 29 , 30 30 , 31 , 32 ,R=10,N=20,1,2,20,21,28,29,30,31,32,39,4028,29,30,31,320,1,220,21,28,29,3030,31,32,39,40
whuber

@ whuber : 맞습니다. 네 말이 맞아 욕심 많은 솔루션과 욕심없는 솔루션은 동일하거나 거의 비슷할 수 있습니까? 모르겠어요
curious_cat

@ whuber : 문제는 대부분 경계에 있습니다. 어떤 일 개 이동 창 (I 내 대답에 언급 다소처럼)하는 경우 +R-R다음 그들 사이에서 스택과 선택의 모든 가능한 솔루션을 둔다. 당신의에서 예를 들면 1D타격에 대한 예 28,29,30,31,32는 때까지 창을 밀어 줄 18-2838-48모든 feasable 솔루션을 찾고. 그런 다음 이들 중 최대 점수 산출 조합을 찾을 수 있습니다. 도움이 될지 확실하지 않습니까? 내 순진한 알고리즘을 복구 할 수 있는지 확인하려고합니까? :)
curious_cat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.