오답노트

[ML] 비지도 학습 - k-means 본문

Python/ML

[ML] 비지도 학습 - k-means

권멋져 2022. 8. 26. 19:33

k-means 

(출처 : https://stanford.edu/~cpiech/cs221/handouts/kmeans.html )

 

k-means는 데이터를 좌표평면에 위치시킨 후 임의의 위치에 k개 점을 찍는다. 그리고 각 데이터들은 k개의 점들중에 가장 가까운 점에게 군집된다.

 

그 후 k 개의 점은 군집된 데이터들의 중심 위치로 재위치 시킨다. 그리고 다시 데이터들이 k개의 점들중 가장 가까운 점에게 군집되는 과정을 중심 위치의 변화가 거의 없을 때까지 반복한다.

 

위 과정이 걸리는 시간은 매우 빠르지만 k는 모델링을 할 때 우리가 정해줘야한다. (비지도인데 지도를 해야한다니..)

 

k 값 선정 방법

Inertia value를 통해서 k 값을 유추해 볼수있다.

Inertia value는 군집화가 된 후, 각 중심정에서 군집의 데이터간 거리를 합산한 값이다.

이는 군집의 응집도를 나타내는데, 값이 작을 수록 응집도가 높게 군집화가 잘 되었다고 할 수 있다.

 

즉, k에 따른 Inertia value의 변화량을 봤을 때 그래프가 급격하게 변하는 곳 주변에서 적절한 k 값을 유추할 수 있다.

 

 

위 그래프는 k에 따른 Inertia value의 변화량 그래프이다. k가 작아질 수록 0에 수렴하고 있다. 군집화는 잘 되었지만 과적합 상태이다. 위 그래프에서는 2.5 이상 5미만의 값에서 k를 유추하는 것이 좋아보인다.

'Python > ML' 카테고리의 다른 글

[ML] 시계열 데이터  (0) 2022.08.29
[ML] 비지도 학습 - DBSCAN  (0) 2022.08.29
[ML] Boosting - Gradient Boost  (0) 2022.08.26
[ML] 앙상블 - Boosting  (0) 2022.08.26
[ML] Bagging - Random Forest  (0) 2022.08.25