뭐 레포트도 넸겠다.
이래저래 가지고 있는것보다 공개하는게 나을거 같아서 공개함.
아래와 같은 숙제 Description이 나왔었고
Input : sample file, KM/LBG, Number of codeword
Output : total distortion at each iteration
Distortion measure : Euclidian distance
Split : z × (1± 0.05)
8메가 정도되는 데이터 파일
이 아래 파일에 동봉되어 있으나 일단 설명하자면..
한줄에 13개의 float형 데이터가 있고 그 한줄이 벡터가 되는 자료다.
그러니까 벡터 연산을 기반으로 해서 프로그램을 작성한것이다.
K-means가 뭔지는 책이나 인터넷 자료를 찾아보면 많음.
안에 입력데이터까지 포함시켜 놓았으니 바로 돌려보면 돌아갈것임.
보기엔 modified K-means에서 코드북을 업데이트 한 다음에 Total Avg Distance가 약간 상승하는 부분이 있는데 이부분은 고치지 않고 그냥 올린다.(귀차니즘…)
Modified K-mean 알고리즘은 초기값을 수동으로 부여해야 하는 K-means 알고리즘과 달리 K의 개수를 자동으로 결정하고, K가 2일때와 K가 2개 이상일때로 나눠서 처리하는 것으로 알고 있었는데, 제가 잘못 알았는듯.. -.-;
conv2 님 : modified k-means 알고리즘은 코드워드를 1개씩 증가시키면서 update하는 반면에 LGB 알고리즘은 M=2M개씩 증가 시키면서 update하는걸로 알고 있습니다.
예를 들면 modified k-means 알고리즘은 코드워드가 1개 , 2개, 3개….로 증가되지만(가장 큰 Total avg distance를 갖는 cell의 codeword를 split) LBG 알고리즘은 1개, 2개, 4개, 8개….로 증가하게 되는거죠(모든 cell의 codeword를 split)