일단 기본 아이디어는 이거쥐.



무작위한 좌표점들을 어케 클러스터링 할 것인가 하는 문제야.



내가 아는 방법으로 나온 게 3가지 정도가 있어 보인다.



1번, Rx Means 알고리즘을 이용한 방법.



근데 Rx Means 알고리즘은 고정적인 무게 중심점을 이용해서 클러스터링 하는 방법이란 말이지. 그러니까 무게중심점을 수작업으로 잡아줘야 한다는 문제가 있어. 매번 두 눈으로 보고 잡아주고 잡아주고, 그러려고 프로그래밍을 공부하는 거 아뉘지? 진화 알고리즘을 이용해서 자동으로 잡겠큼 만드러야 최종버전이 되는 거쥐.




2번, K-Means 알고리즘.


이걸 오랜만에 다시 보니까, 내 기억이 조금씩 살아나는데, 내 기억으로는 초반에 K를 설정하면 나머지는 해당 데이터를 기반으로 무작위한 무게중심점을 추려냈던 것으로 기억함. 그럼 해당 무게중심점이 해당 데이터의 포인터와 일치될 테니까, 엉뚱하게 먼 곳에서 무게 중심점이 잡히는 일이 방지되겠지. 그 다음에 그 무게중심점과 데이터들을 하나씩 비교해가며 중간 지점으로 조금씩 옮겨가면서, 평균으로 수렴했던 곳에서 루프를 멈추면 작업은 끝.



이거였던 거로 기억함?



이것도 만들겠지만, 이걸 기억하기 전에 3번째 방법을 먼저 시도하고 있었음.



3번, 무게 중심점을 화면 분할로.



3번은 내가 K-Means 알고리즘에서 무게중심점을 화면분할로 찍어야지- 하고 생각하고 시작했지. 그리고 화면분할을 어케 할까 생각해보니까 중심점을 기반으로 원형으로 돌면서 화면 분할하면 대충 비슷해지겠지? 하고 분할하기 시작했지.



그게 바로 위의 사진이지.


빨간 색 점들이 바로 반할 한 공간의 중간지점.



저 중간지점에 바로 무게중심점.



저거로 클러스터링 하면 인근 지점들이 잡히겠지.



그러면서 K-Means 알고리즘에서 무게중심점을 이동시키는 방식을 가져와 쓰면, 얼추 비슷한 게 나오지 않을까 했던 게 내 생각임.



근데 분할의 개수가 늘어날수록, 무게 중심점이 인접하게 되더라구?



지금 1번 사진만 봐도 20개로 분할한 건데, 빨간점과 빨간점 사이의 공간이 점점 줄어들고 있음. 저러면 내가 원하는 지도상의 클러스터링이 아뉘지.







이거는 지도랑 똑같은 거얌.



여기에 무작위한 좌표점들이 찍히게 될 텐데,



저렇게 원형으로 분할해서 무게중심점을 잡으면, 일정한 공간에 무게중심점이 고정적으로 찍히는 효과를 얻게 될 듯 싶다.



그건 내가 원하는 게 아뉘지.



그렇게 고정적으로 찍을 거면 그냥 Rx-Means 알고리즘을 가져다 쓰면 되니까.





그래서 최종적으로는 K-Means 알고리즘을 쓸 거 같긴 한데, k 값도 자동으로 잡힐 수 있는 방식을 생각할 거 같음.




1,2,3 번 모두를 한 곳에 넣은 라이브러리도 만들어두면 좋을 듯.



이거를 묶어서 통합 Rx-Means 알고리즘이라고 부르면 될 듯.



Rx의 명성을 해외에 떨칠 수 있는 기반이 다져지겠쿤.




이 지도도 마찬가지쿠.




껄껄껄.