본문으로 이동

K-평균 알고리즘: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
Yeonk (토론 | 기여)
소제목 분리
Yeonk (토론 | 기여)
→‎복잡도: 시간/공간
124번째 줄: 124번째 줄:


== 복잡도 ==
== 복잡도 ==
K-평균 알고리즘의 계산 복잡도에 크게 영향을 미치는 요소 두가지는 [[유클리드 공간]] <math>d</math>와 클러스터의 수 <math>k</math>이다. 클러스터의 수가 작더라도, 일반적인 [[유클리드 공간]] <math>d</math>에서 K-평균 알고리즘의 최적 해를 찾는 것은 [[NP-난해]]이다.<ref name="aloise2009">{{cite journal
이 알고리즘은 간단한 구조를 가지고 있고 많은 환경에서 빠르게 수렴하기 때문에(보통은 처음 주어진 데이터의 개수보다 훨씬 적은 반복만 필요하다) 널리 사용된다. 하지만 이 알고리즘이 다항을 넘는({{lang|en|superpolynomial}}) 시간(<math>2^{\Omega(\sqrt{n})}</math>)이 걸리는 경우도 존재한다. Smoothed analysis 경우의 복잡도는 다항 시간이다.
|author=Aloise, D.; Deshpande, A.; Hansen, P.; Popat, P.
|title=NP-hardness of Euclidean sum-of-squares clustering
|journal=[[Machine Learning (journal)|Machine Learning]]
|year=2009
|volume=75 |pages=245&ndash;249
|doi=10.1007/s10994-009-5103-0}}</ref><ref name="dasgupta2009">{{cite journal
|title=Random Projection Trees for Vector Quantization
|author=Dasgupta, S. and Freund, Y.
|journal=Information Theory, IEEE Transactions on
|volume=55
|pages=3229&ndash;3242
|date=July 2009
|doi=10.1109/TIT.2009.2021326
|arxiv=0805.1390}}
</ref> 반대로 낮은 차원의 [[유클리드 공간]]일지라도, <math>k</math>개의 클러스터에 대해 최적 해를 찾는 것 또한 [[NP-난해]]이다.<ref name="mahajan2009">{{cite journal
|author=Mahajan, M.; Nimbhorkar, P.; Varadarajan, K.
|title=The Planar k-Means Problem is NP-Hard
|journal=[[Lecture Notes in Computer Science]]
|year=2009
|volume=5431 |pages=274&ndash;285
|doi=10.1007/978-3-642-00202-1_24}}
</ref>

이러한 이유로 K-평균 알고리즘에서는 위와 같은 [[발견법|휴리스틱 기법]]을 주로 사용한다. [[#표준_알고리즘|Lloyd 알고리즘]]의 경우, [[시간 복잡도]]는 클러스터의 수, 데이터 [[벡터]]의 차원, 데이터 [[벡터]]의 수에 각각 비례한다. 또한 알고리즘이 해가 수렴하기까지 반복되므로, 알고리즘이 반복된 횟수에도 비례한다. 즉, <math>n</math>개의 <math>d</math>-차원 데이터 [[벡터]]들을 <math>i</math>번의 반복을 통해 <math>k</math>개의 클러스터로 묶는데 걸리는 시간은 <math>O(nkdi)</math>이다. K-평균 알고리즘은 많은 환경에서 빠르게 수렴하기 때문에 (보통은 처음 주어진 데이터의 개수보다 훨씬 적은 반복만 필요하다) 널리 사용된다.

* Smoothed analysis 경우의 복잡도는 다항 시간이다. <math>[0, 1]^d</math>내의 임의의 <math>n</math>개의 점들의 집합에 대해, 집합 내의 각 점들이 평균<math>0</math>, 분산<math>\sigma^2</math>의 정규분포를 이룬다면, 해당 집합을 <math>k</math>개의 클러스터로 묶는데 걸리는 시간이 <math>O(n^{34}k^{34}d^8log^4(n)/\sigma^2)</math>임이 증명된 바 있다.<ref name="arthur2009">{{cite conference
| author=Arthur, D.; Manthey, B.; Roeglin, H.
| year=2009
| title=k-means has polynomial smoothed complexity
| booktitle=Proceedings of the 50th Symposium on Foundations of Computer Science (FOCS)}}
</ref>
* 다항을 넘는({{lang|en|superpolynomial}}) 시간(<math>2^{\Omega(\sqrt{n})}</math>)이 걸리는 경우도 존재한다.<ref name="vattani2011">{{cite journal
|first=A. |last=Vattani.
|url=http://cseweb.ucsd.edu/users/avattani/papers/kmeans-journal.pdf
|title=k-means requires exponentially many iterations even in the plane
|journal=[[Discrete and Computational Geometry]]
|volume=45 |issue=4 |pages=596&ndash;616
|year=2011
|doi=10.1007/s00454-011-9340-1
}}</ref>
* [[공간 복잡도]]의 경우, 알고리즘은 각 클러스터의 무게중심 [[벡터]]들에 대한 정보를 추가로 저장해야 하고, 이 무게중심 [[벡터]]들은 매 반복마다 독립적이기 때문에, K-평균 알고리즘은 <math>O((n+k)d)</math>의 [[공간 복잡도]]를 가진다.


== 한계점 ==
== 한계점 ==

2015년 4월 21일 (화) 04:55 판

K-평균 알고리즘(K-means algorithm)은 주어진 데이터를 k개의 클러스터로 묶는 알고리즘으로, 각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작한다.

이 알고리즘은 EM 알고리즘을 이용한 클러스터링과 비슷한 구조를 가지고 있다.

역사

"K-평균"에 대한 개념은 1957년 Hugo Steinhaus에 의해 소개되었으나,[1] 용어 자체는 1967년에 James MacQueen에 의해 처음 사용되었다.[2] 현재 사용되고 있는 표준 알고리즘은 1957년에 Stuart Lloyd가 펄스 부호 변조(PCM)를 목적으로 처음으로 고안 하였으나 1982년이 되어서야 컴퓨터 과학 매거진에 처음 공개되었다.[3] 알고리즘이 공개되기 이전인 1965년에 E. W. Forgy 또한 같은 알고리즘을 제안하였다.[4] 차후 1975년과 1979년에 Hartigan과 Wong에 의해 거리 계산이 필요하지 않은 좀 더 효율적인 방법이 소개 되었다.[5][6]

알고리즘

표준 알고리즘

번째 클러스터의 중심을 , 클러스터에 속하는 점의 집합을 라고 할 때, 전체 분산은 다음과 같이 계산된다.

이 값을 최소화하는 을 찾는 것이 알고리즘의 목표가 된다.

알고리즘은 우선 초기의 를 설정하는 것으로 시작한다. 이후 다음의 두 단계를 반복한다.

  • 클러스터 설정: 각 데이터로부터 각 클러스터들의 까지의 유클리드 거리를 계산하여, 해당 데이터에서 가장 가까운 클러스터를 찾아 데이터를 배당한다.
  • 클러스터 중심 재조정: 를 각 클러스터에 있는 데이터들의 무게중심 값으로 재설정해준다.
만약 클러스터가 변하지 않는다면 반복을 중지한다.

맨 처음, 각 들을 집합으로 나눈다. 이때 임의로 나누거나, 어떤 휴리스틱 기법을 사용할 수도 있다. 그 다음 각 집합의 무게 중심을 구한다. 그 다음, 각각의 점들을 방금 구한 무게중심 가운데 제일 가까운 것에 연결지음으로써 새로이 집합을 나눌 수 있다. 이 작업을 반복하면 점들이 소속된 집합을 바꾸지 않거나, 무게중심이 변하지 않는 상태로 수렴될 수 있다.

초기화 기법

무작위 분할 (Random Partition)

무작위 분할 알고리즘은 가장 많이 쓰이는 초기화 기법으로[7], 각 데이터들을 임의의 클러스터에 배당한 후, 각 클러스터에 배당된 점들의 평균 값을 초기 로 설정한다. 무작위 분할 기법의 경우 다른 기법들과는 달리 데이터 순서에 대해 독립적이다. 무작위 분할의 경우 초기 클러스터가 각 데이터들에 대해 고르게 분포되기 때문에 각 초기 클러스터의 무게중심들이 데이터 집합의 중심에 가깝게 위치하는 경향을 띈다. 이러한 특성 때문에 K-조화 평균이나 퍼지 K-평균에서는 무작위 분할이 선호된다.[8]

Forgy

Forgy 알고리즘은 1965년 Forgy에 의해 고안되었으며[9] 현재 주로 쓰이는 초기화 기법 중 하나로, 데이터 집합으로부터 임의의 개의 데이터를 선택하여 각 클러스터의 초기 로 설정한다. 무작위 분할 기법과 마찬가지로 Forgy 알고리즘은 데이터 순서에 대해 독립적이다.[7] Forgy 알고리즘의 경우 초기 클러스터가 임의의 개의 점들에 의해 설정되기 때문에 각 클러스터의 무게중심이 중심으로부터 퍼져있는 경향을 띈다. 이러한 특성 때문에 EM 알고리즘이나 표준 K-평균 알고리즘에서는 Forgy 알고리즘이 선호된다.[8]

MacQueen

1967년 MacQueen에 의해 고안된 MacQueen 알고리즘은[2] Forgy 알고리즘과 마찬가지로 데이터 집합으로 부터 임의의 개의 데이터를 선택하여 각 클러스터의 초기 로 설정한다. 이후 선택되지 않은 각 데이터들에 대해, 해당 점으로부터 가장 가까운 클러스터를 찾아 데이터를 배당한다. 모든 데이터들이 클러스터에 배당되고 나면 각 클러스터의 무게중심을 다시 계산하여 초기 로 다시 설정한다. MacQueen 알고리즘의 경우 최종 수렴에 가까운 클러스터를 찾는 것은 비교적 빠르나, 최종 수렴에 해당하는 클러스터를 찾는 것은 매우 느리다.[10]

Kaufman

1990년에 Kaufman과 Rousseeuw에 의해 고안된 Kaufman 알고리즘[11]은 전체 데이터 집합 중 가장 중심에 위치한 데이터를 첫번째 로 설정한다. 이후 선택되지 않은 각 데이터들에 대해, 가장 가까운 무게중심 보다 선택되지 않은 데이터 집합에 더 근접하게 위치한 데이터를 또 다른 로 설정하는 것을 총 개의 가 설정될 때 까지 반복한다. 무작위 분할과 마찬가지로, Kaufman 알고리즘은 초기 클러스터링과 데이터 순서에 대해 비교적 독립적이기 때문에 해당 요소들에 의존적인 다른 알고리즘들 보다 월등한 성능을 보인다.[7]

복잡도

K-평균 알고리즘의 계산 복잡도에 크게 영향을 미치는 요소 두가지는 유클리드 공간 와 클러스터의 수 이다. 클러스터의 수가 작더라도, 일반적인 유클리드 공간 에서 K-평균 알고리즘의 최적 해를 찾는 것은 NP-난해이다.[12][13] 반대로 낮은 차원의 유클리드 공간일지라도, 개의 클러스터에 대해 최적 해를 찾는 것 또한 NP-난해이다.[14]

이러한 이유로 K-평균 알고리즘에서는 위와 같은 휴리스틱 기법을 주로 사용한다. Lloyd 알고리즘의 경우, 시간 복잡도는 클러스터의 수, 데이터 벡터의 차원, 데이터 벡터의 수에 각각 비례한다. 또한 알고리즘이 해가 수렴하기까지 반복되므로, 알고리즘이 반복된 횟수에도 비례한다. 즉, 개의 -차원 데이터 벡터들을 번의 반복을 통해 개의 클러스터로 묶는데 걸리는 시간은 이다. K-평균 알고리즘은 많은 환경에서 빠르게 수렴하기 때문에 (보통은 처음 주어진 데이터의 개수보다 훨씬 적은 반복만 필요하다) 널리 사용된다.

  • Smoothed analysis 경우의 복잡도는 다항 시간이다. 내의 임의의 개의 점들의 집합에 대해, 집합 내의 각 점들이 평균, 분산의 정규분포를 이룬다면, 해당 집합을 개의 클러스터로 묶는데 걸리는 시간이 임이 증명된 바 있다.[15]
  • 다항을 넘는(superpolynomial) 시간()이 걸리는 경우도 존재한다.[16]
  • 공간 복잡도의 경우, 알고리즘은 각 클러스터의 무게중심 벡터들에 대한 정보를 추가로 저장해야 하고, 이 무게중심 벡터들은 매 반복마다 독립적이기 때문에, K-평균 알고리즘은 공간 복잡도를 가진다.

한계점

이 알고리즘은 전역 최적값을 보장해 주지 않는다. 맨 처음 나눈 방법에 상당히 의존한 결과가 나오므로 초기 클러스터 설정에 따라서는 실제 최적값보다 꽤 나쁜 값을 얻을 수도 있다. 이를 방지하기 위해서는, 서로 다른 초기값으로 여러 번 시도하여 가장 좋은 결과를 사용하는 기법 등을 사용할 수 있다.

또한, 이 알고리즘은 구하려는 클러스터의 갯수를 미리 정해 두어야 한다. 클러스터 갯수를 너무 많이 설정하면 큰 클러스터가 여러 개로 나뉘는 결과를 얻을 수도 있다.

바깥 고리

참고 문헌

각주

  1. Steinhaus, H. (1957). “Sur la division des corps matériels en parties”. 《Bull. Acad. Polon. Sci.》 (프랑스어) 4 (12): 801–804. MR 0090073. Zbl 0079.16403. 
  2. MacQueen, J. B. (1967). 《Some Methods for classification and Analysis of Multivariate Observations》. Proceedings of 5th Berkeley Symposium on Mathematical Statistics and Probability. University of California Press. 281–297쪽. MR 0214227. Zbl 0214.46201. 2009년 4월 7일에 확인함. 
  3. Lloyd, S. P. (1957). “Least square quantization in PCM”. 《Bell Telephone Laboratories Paper》.  Published in journal much later: Lloyd., S. P. (1982). “Least squares quantization in PCM” (PDF). 《IEEE Transactions on Information Theory28 (2): 129–137. doi:10.1109/TIT.1982.1056489. 2009년 4월 15일에 확인함. 
  4. E.W. Forgy (1965). “Cluster analysis of multivariate data: efficiency versus interpretability of classifications”. 《Biometrics》 21: 768–769. 
  5. J.A. Hartigan (1975). 《Clustering algorithms》. John Wiley & Sons, Inc. 
  6. Hartigan, J. A.; Wong, M. A. (1979). “Algorithm AS 136: A K-Means Clustering Algorithm”. 《Journal of the Royal Statistical Society, Series C28 (1): 100–108. JSTOR 2346830. 
  7. J.M. Peña, J.A. Lozano, P. Larrañaga (1999). “An empirical comparison of four initialization methods for the K-Means algorithm” (PDF). 
  8. Hamerly, G. and Elkan, C. (2002). 〈Alternatives to the k-means algorithm that find better clusterings〉 (PDF). 《Proceedings of the eleventh international conference on Information and knowledge management (CIKM)》. 
  9. M. R. Anderberg (1973). 《Cluster Analysis for Applications》. Academic Press. 
  10. Qiang Du, Tak-win Wong (2002). “Numerical Studies of MacQueen’s k-Means Algorithm for Computing the Centroidal Voronoi Tessellations” (PDF). 
  11. L. Kaufman, P. J. Rousseeuw (1990). 《Finding Groups in Data. An Introduction to Cluster Analysis》. Wiley, Canada. 
  12. Aloise, D.; Deshpande, A.; Hansen, P.; Popat, P. (2009). “NP-hardness of Euclidean sum-of-squares clustering”. 《Machine Learning75: 245–249. doi:10.1007/s10994-009-5103-0. 
  13. Dasgupta, S. and Freund, Y. (July 2009). “Random Projection Trees for Vector Quantization”. 《Information Theory, IEEE Transactions on》 55: 3229–3242. arXiv:0805.1390. doi:10.1109/TIT.2009.2021326. 
  14. Mahajan, M.; Nimbhorkar, P.; Varadarajan, K. (2009). “The Planar k-Means Problem is NP-Hard”. 《Lecture Notes in Computer Science5431: 274–285. doi:10.1007/978-3-642-00202-1_24. 
  15. Arthur, D.; Manthey, B.; Roeglin, H. (2009). 〈k-means has polynomial smoothed complexity〉. 《Proceedings of the 50th Symposium on Foundations of Computer Science (FOCS)》. 
  16. Vattani., A. (2011). “k-means requires exponentially many iterations even in the plane” (PDF). 《Discrete and Computational Geometry45 (4): 596–616. doi:10.1007/s00454-011-9340-1.