본문 바로가기
연구관련/연구생활

약간의 실수, 커다란 차이, ㅋ

by adnoctum 2011. 10. 20.


   그러니까, 내가 하고 싶은 건 dendrogram 을 그리는 것이었다. 가장 먼저 찾아 본 것은 쉽게 사용 가능한 matlab. 다음과 같은 예제가 있더군.


matlab 의 dendrogram 결과의 예제.



이쁘긴 하네, conventional 한 것에 비해선. 근데 문제는 input 으로 들어가는 것이 약간 애매하다. 내가 원하는 형태가 아니다. 더구나, 지금 나의 경우 agglomerative clustering 을 하고 있기는 한데, 이 때 두 node 를 합한 후 새로 부여하는 값이 일반적으로 사용하는 값이 아니다. 또한 metric 또한 기존에 사용하던 그 어느 metric 도 사용할 수 없다. 따라서 현재 구현되어 있는 많은 프로그램/라이브러리의 clustering 함수를 사용할 수 없고, 따라서 저렇게 그리고 싶지만 할수가 없다. 어제 하루 종일, 이걸 구현을 해야하나 말아야 하나, 고민고민하다, 그냥 해버리기로 결정.

   그래서 일단 clustering 하는 것부터 시작. 생짜로 하면 시간이 오래 걸려서 중간에 포인터써서 바꿔 놓고(ㅋㅋ, 2중 포인터), 수학적으로 빠르게 계산이 가능할 듯 해서 계산해 보았는데, 뭐, node 수가 작기 때문에 중요하지 않을 것 같아서 이 단계는 넘어 뛰고, agglomerative hierarchial clustering 으로 구현, 결과를 뽑아 냈다.

   이 단계에서 문제는, 이 결과가 과연 제대로 나온 것인지 확인하기가 매우 번거롭다는 것. 그래서 그림으로 그려야 했다, 바로 위와 같은 형태를 갖도록. 하지만, node 들의 연결 정보를 알아야 위처럼 그릴 수 있기 때문에, 위처럼 그릴 수 있는 정보를 모두 갖도록 node 들의 정보를 뽑아 내도록 하고, 이제 윈도우즈에서 다시 코딩 시작. 하다 보니, 밑에 깔리는 노드의 순서조차도 정해야 하더군. 보면 선들이 겹치지 않게 되어 있는데, 그것조차도 가장 밑의 노드들이 적절히 정렬될 때에만 가능한 것이었다. 그래서 어제 그렇게 정렬하는 것까지 하고 집에 갔다. 하다 보니, 역시나 노드들의 연결 정보를 역으로 추적하는 단계가 있었고, 이것이 아마도 예전에 Cluster 3.0 프로그램 source code 조금 바꿔서 사용할 때 보았단 back-tracking 어쩌구 하는 부분이었다는 생각이 들었다. 어쨌든,. 오늘 와서, 이제 위쪽의 선들을 그려 나가는 작업을 시작. 오래간만에 약간의 짱구를 굴려서 그림을 그렸는데, >.<""



위처럼 난리가 났다. 그런데, 가만 보아하니, 왠지 심각한 오류는 아닌듯 싶었다. 그래서 노드 두 개를 이은 후 0.5 초를 기다린 후 다시 그려 나가도록 코딩한 후 살펴 보니, 역시나, 아주 간단한 문제였다, 그림은 심히 왜곡되어 있지만, ㅋ. 그래서 코드를 간단히 수정, 결과는 정상.


겨우 서너줄 바꾼 것인데도 결과가 확 바뀌었다,ㅋ. 이처럼 결과가 매우 이상해 보여도 문제의 원인은 간단할 때가 종종 있다. 그러니, 아주 엉뚱한 결과라고 지레 겁먹을 필요는 없지. 어쨌든, 제대로 작동을 해서, 이제 내가 하고 싶은 이것저것을 tree 에 넣었다.




ㅋㅋ, 이제 모든 경우에 대해서 그림을 그리고 저장을 할 차례, 아, 그 전에 코드 정리를 해야 겠군, 위는, ㅋㅋㅋ, 거의 함수 하나에 다 몰아 넣은 것이었기 때문에.


'연구관련 > 연구생활' 카테고리의 다른 글

21세기를 위한 상관계수  (4) 2012.02.09
매의 눈으로 디버깅 하기, ㅋ  (0) 2011.11.22
ㅋㅋㅋ, 당연한 것인데 말이지  (0) 2011.10.15
이제 내일  (0) 2011.10.04
1시필침은 작심삼일인가?  (0) 2011.09.27