ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [머신러닝] 클러스터링의 대표, K-means Algorithm
    머신러닝 배우기 2023. 12. 12. 12:13

    ▶︎ K-means Algorithm 이란?

    → 비지도 학습의 클러스터링 기법 중 하나로, K개의 클러스터로 그룹화 한다.

    같은 클러스터에서는 서로 가깝고, 다른 클러스터끼리는 멀다는 것이 기본 개념이다.

     

    ▶︎ 수행 방식

    1. K개의 클러스터 중심값을 임의로 선택한다

    2. 각 데이터 포인트들을 모든 중심값까지의 거리를 구한 뒤, 가장 가까운 중심값의 클러스터로 할당한다 (거리 계산 시, 보통 유클리디안 거리를 활용)

    3. 각 클러스터에 속한 데이터 포인트들의 평균을 계산하여 중심값을 평균값으로 업데이트한다.

    4. 데이터 포인트들에 대한 클러스터 할당이 변하지 않을 때까지 (= 업데이트하는 데이터들의 평균값이 거의 움직이지 않고 수렴할 때까지) 2,3을 반복한다.

     

    ▶︎ K-means Algorithm의 단점과 해결방법

    Problem1) 계산량이 엄청 많음. 클러스터의 갯수와 피쳐의 갯수가 많아지면 중심값까지 거리를 계산하고, 같은 클러스터끼리 평균을 계산하고 반복하면 연산량이 많아져서 시간이 오래걸린다. 

    Solution1) 도메인이나 데이터에 대한 지식으로 피쳐 수를 줄일 수 있음. 또는 차원축소 모델들로 피쳐들을 줄일 수 있다. (정답 데이터가 만약 있다면 feature importance, permutation importance로 골라 낼 수 있다. 하지만 보통 k-means는 정답이 없는 비지도 학습 모델이기 때문에 일반적인 상황은 아니다.)

     

    Problem2) 사용자가 클러스터의 개수인 하이퍼파라미터 K를 잘 지정해야 함. 몇 개로 군집화할 것인지는 클러스터의 특성의 질을 결정하는데 중요한 역할을 함

    Solution2) 엘보우 기법이나 실루엣 기법을 사용하여 적절한 K를 찾을 수 있음. (뒤에 설명)

     

    Problem3) 초기중심점을 잘 설정해야함. 잘못 설정을 하면 최적의 해에 수렴할 때까지 시간이 오래걸리고 잘못하면 최적의 해를 찾지 못할 수도 있다. Global Optima 를 찾지 못하고 Local Optima에 수렴할 수도 있다. 특히 이상치에 초기값이 설정되면 그 이상치가 클러스터의 중심으로 인식되어 다른 데이터 포인터들이 클러스터링되는 것에 문제가 될 수 있다.

    Solution3) K-means++, Randomly select, Manually assign 의 방법이 있고, 파이썬은 K-means++ 이 기본값으로 설정되어 있어서 크게 걱정하지 않아도 된다.

     

    ▶︎ 엘보우 기법 (최적의 클러스터 개수 K찾기)

    → K값에 따라 SSE(각 데이터 포인트가 속한 클러스터 중심까지의 거리의 제곱의 합, 이너셔)의 값을 측정한다. 이를 그래프로 나타내면 급격하게 감소하는 비율이 있는데 바로 그 부분이 최적의 클러스터 개수가 됨. 즉 이니셔가 급격하게 떨어지다가 완만해지는데 그 엘보우 지점을 찾으면 된다. (급격하게 떨어지는 부분이 아니라 더 SSE가 작은 값을 택하면, 클러스터링이 너무 파편화될 수 있는 문제가 있다.)

     이너셔를 사용하여 클러스터 내의 응집도만 고려하므로 간단하고 직관적이다. 그러나 데이터의 형태에 따라 엘보우가 명확하지 않을 수 있다.

    이 상황에서는 K=2가 적당하다

     

    ▶︎ 실루엣 기법 (최적의 클러스터 개수 K찾기)

     실루엣 기법은 클러스터 내 응집도와 클러스터 간 분리도를 모두 고려하여 클러스터링의 품질을 정량적으로 계산해주는 방법이다.

    클러스터 내의 응집도만 고려하는 엘보우 기법보다 더 면밀한 방법

Designed by Tistory.