우당탕탕 개발일지

[혼공머신] 6-2. K-평균 본문

인공지능

[혼공머신] 6-2. K-평균

민아당긴아 2025. 2. 4. 11:45

💡 서론

이전에 k-fold classification이 나왔던 것처럼 이번에는 k-means clustering이다. k개의 그룹으로 만들고, 평균값을 이용해서 클러스터링을 진행한다.

 

💡 K-Means 클래스

sklearn.cluster 모듈 아래에 있는 KMeans 클래스로, k-mean clustering에 필요한 다양한 메서드와 매개변수, 그리고 결과를 나타내는 속성들이 있다.

이것들을 이용해서 k-means clustering을 진행하게 된다.

 

💡 K-Means 클래스

k-means clustering 알고리즘

이 과정을 계속 반복하는 비교적 단순한 알고리즘이다. 이 알고리즘을 구현하는 클래스가 KMeans 클래스!

이렇게 fit 메서드를 이용해서 k-평균 알고리즘으로 클러스터링을 진행하고, 속성들을 이용해서 결과를 확인할 수 있다.

책에서는 각 클러스터에 포함된 이미지를 출력하는 함수 draw_fruits()를 이용해서 사진을 출력하고 있다.

 

💡 K-Means 클래스

이 부분이 굉장히 신기했는데, k-means clustering도 결국 비지도 학습  알고리즘이기 때문에 k값을 뭘로 지정하는 것이 가장 좋은지도 모르는 상황이다.이 때 최적의 k값을 찾기 위해 대표적으로 엘보우 방법을 이용한다.

엘보우(elbow): 적절한 클러스터 개수를 찾기 위한 대표적인 방법 

- 이너셔 감소하는 속도가 꺾이는 지점을 최적의 클러스터 개수라고 보는 방법 

이너셔(inertia): 클러스터에 속한 샘플과 클러스터 중심 사이의 거리의 제곱합 

- 클러스터에 속한 샘플이 얼마나 가깝게 모여있는지를 나타내는 값 

- k값이 증가하면 클러스터에 속한 샘플의 개수가 줄어들기 때문에 거리의 제곱합인 이너셔(itertia)도 감소 

- 이너셔가 감소하는 속도가 꺾이는 지점 = 클러스터 개수를 늘려도 클러스터에 잘 밀집된 정도가 크게 개선되지 않기 시작하는 지점 = 최적의 k값

실제로 주어진 데이터를 이용해서 이너셔 변화를 관찰한 결과 k = 3일 때 감소하는 속도가 꺾인다. 따라서 최적의 k값이 3인걸 알 수 있다.