Machine Learning/Theory

K 평균 알고리즘(kmean++)

ju_young 2021. 6. 22. 01:09
728x90

순서

  1. 데이터 준비
  2. 몇 개의 클래스로 분류할 것인지 설정
  3. 클러스터의 최초 중심 설정
  4. 데이터를 가장 가까운 클러스터로 지정
  5. 클러스터 중심을 클러스터에 속한 데이터들의 가운데 위치로 변경
  6. 클러스터 중심이 바뀌지 않을 때까지 4번부터 5번 과정을 반복적으로 수행

[출처]위키백과

1. 데이터 준비

데이터 간의 거리를 사용해 가까운 거리에 있는 데이터끼지 하나의 클래스로 묶는 알고리즘이다. 물론 데이터는 수치화된 데이터여야 한다.

2. 몇 개의 클래스로 분류할 것인가

k는 몇 개의 클래스로 분류할 것인지를 나타내는 변수이다.

3. 클러스터의 최초 중심 설정

k 평균의 표준 알고리즘은 클러스터의 최초 중심을 무작위로 설정한다. 그리고 사이킷런의 k 평균 라이브러리는 기본적으로 kmean++라는 알고리즘을 써서 클러스터의 최초 중심을 설정한다.

 

kmean++는 최초 데이터 포인트 지점을 첫 번째 클러스터의 중심으로 설정하고 최소 데이터 포인트에서 가장 먼 데이터 포인트를 두 번째 클러스터의 중심으로, 기존의 클러스터 중심에서 가장 먼 데이터 포인트를 그 다음 클러스터의 중심으로 설정한다. 여기서 최초의 데이터 포인트는 가장 첫 번째 데이터라고 이해하면 되겠다.

 

표준 k 평균 알고리즘의 랜덤 중심 설정은 때로는 초기 중심이 한 군데로 집약되어 군집하는데 시간이 오래 걸리고, 군집의 결과가 나쁜 경우가 있다. 그래서 kmean++가 이런 단점을 보완하기위해 만들어졌다.

4. 데이터를 가장 가까운 클러스터로 지정

위에서 설정된 클러스터의 중심은 가장 가까운 데이터들을 지정하여 소속시킨다.

5. 클러스터 중심을 클러스터에 속한 데이터들의 가운데 위치로 변경

이제 설정된 각 클러스터의 중심은 소속된 데이터들을 가지고 있을 것이다. 그리고 소속된 데이터들과 친해지기위해(?) 중앙으로 이동한다.

6. 클러스터 중심이 바뀌지 않을 때까지 4번부터 5번 과정을 반복 수행

소속된 데이터가 변경되지 않거나 클러스터의 중심이 변경되지 않을 때까지 반복한다.

이 과정들은 위 첨부한 이미지를 보면 이해하기 쉽다.

728x90