K-평균 알고리즘 (K-Means Algorithm)


Step1. 초기화 : 입력값 및 클래스값

입력값의 개수는 9개 이며, 클래스는 2개로 나눈다.

[입력값]
i1 = (1,3)
i2 = (2,2)
i3 = (2,3)
i4 = (3,4)
i5 = (5,5)
i6 = (5,6)
i7 = (6,4)
i8 = (7,3)
i9 = (10,8)

[클래스값]
c1 = (2,2)
c2 = (5,6)
 
사용자 삽입 이미지

Step2. 입력값과 클래스값 사이의 거리를 구한다.

[거리]
c1 ~ i1 = (1,1) / c2 ~ i1 = (4,3)
c1 ~ i2 = (0,0) / c2 ~ i2 = (3,4)
c1 ~ i3 = (0,1) / c2 ~ i3 = (3,3)
c1 ~ i4 = (1,2) / c2 ~ i4 = (2,2)
c1 ~ i5 = (3,3) / c2 ~ i5 = (0,1)
c1 ~ i6 = (3,4) / c2 ~ i6 = (0,0)
c1 ~ i7 = (4,2) / c2 ~ i7 = (1,2)
c1 ~ i8 = (5,1) / c2 ~ i8 = (2,3)
c1 ~ i9 = (8,6) / c2 ~ i9 = (5,2)


Step3. 클래스 나누기 : 입력값들을 가장 짧은 거리에 속한 클래스로 설정한다

c1 = i1, i2, i3, i4
c2 = i5, i6, i7, i8, i9
사용자 삽입 이미지


Step4. 클래스의 중심좌표를 구한다 : 클래스에 속한 입력값들의 평균

 
중심좌표 구하는 방법 : (x축의 합, y축의 합) / 각 클래스에 속한 입력값의 수

c1 : (1+2+2+3,3+2+3+4)/4 = (8/4,12/4) = (2,3)
c2 : (5+5+6+7+10,5+6+4+3+8)/5 = (33/5,26/5) = (6.6,5.2)


Step5. 중심좌표와 클래스값 비교
 
중심좌표와 클래스값이 같지 않다면 중심좌표를 클래스값으로 설정하고 Step6
중심좌표와 클래스값이 같다면 Step7
 
중심좌표의 값이 클래스값과 다르므로 중심좌표를 클래스값으로 설정

c1 = (2,3)
c2 = (6.6,5.2)


Step6. 더 이상 중심좌표의 변화가 없을 때까지 Step2-Step5 를 반복한다.
 
(Step1. 입력값 및 클래스값)
[입력값]
i1 = (1,3)
i2 = (2,2)
i3 = (2,3)
i4 = (3,4)
i5 = (5,5)
i6 = (5,6)
i7 = (6,4)
i8 = (7,3)
i9 = (10,8)
 
[클래스값]
c1 = (2,3)
c2 = (6.6,5.2)
사용자 삽입 이미지

(Step2. 입력값과 클래스값 사이의 거리를 구한다)
[거리]
c1 ~ i1 = (1,0) / c2 ~ i1 = (5.6,2.2)
c1 ~ i2 = (0,1) / c2 ~ i2 = (4.6,3.2)
c1 ~ i3 = (0,0) / c2 ~ i3 = (4.6,2.2)
c1 ~ i4 = (1,1) / c2 ~ i4 = (3.6,1.2)
c1 ~ i5 = (3,2) / c2 ~ i5 = (1.6,0.2)
c1 ~ i6 = (3,3) / c2 ~ i6 = (1.6,0.8)
c1 ~ i7 = (4,1) / c2 ~ i7 = (0.6,1.2)
c1 ~ i8 = (5,0) / c2 ~ i8 = (0.4,2.2)
c1 ~ i9 = (8,5) / c2 ~ i9 = (3.4,2.8)

(Step3. 클래스 나누기 : 입력값들을 가장 짧은 거리에 속한 클래스로 설정한다)
c1 = i1, i2, i3, i4
c2 = i5, i6, i7, i8, i9
사용자 삽입 이미지

(Step4. 클래스의 중심좌표를 구한다 : 클래스에 속한 입력값들의 평균) 
c1 : (1+2+2+3,3+2+3+4)/4 = (8/4,12/4) = (2,3)
c2 : (5+5+6+7+10,5+6+4+3+8)/5 = (33/5,26/5) = (6.6,5.2)
 
(Step5. 중심좌표와 클래스값 비교)
중심좌표와 클래스값이 같으므로 Step7 로 이동 (중심좌표가 더 이상 변하지 않는다)
 

Step7. 완료
 
결과값
c1 = i1, i2, i3, i4
c2 = i5, i6, i7, i8, i9
 
입력값 1,2,3,4 는 클래스1 에 속하게 되며, 입력값 5,6,7,8,9 는 클래스2 에 속하게 된다
사용자 삽입 이미지


[출처 : http://rainless.com/blog/25]

+ Recent posts