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 에 속하게 된다