본문 바로가기

(머신러닝) Clustering이란? K-means 알고리즘 원리 간단 정리!

Derrick 발행일 : 2024-02-27
728x90
반응형

 

Clustering이란?
대표적인 K-means 알고리즘의 원리 간단 정리!

 

 

 


1. Clustering(군집)이란?

Clustering이란, 비슷한 특성(feature)을 가진 데이터들을 하나의 그룹으로 묶는 작업을 의미한다.
특성의 유사도를 판단하는 기준 : Distance, Connectivity, Distribution, Density 등
→ 대표적인 비지도학습(unsupervised learning) 중 하나이다.

실제 현업에서는 regression도 classification 문제도 아닌 문제점들이 있다. 이와 같은 supervised 유형의 정답이 있는 문제들도 많지만, 정답이 없는 unsupervised 유형의 경우도 많다. ex) 신제품에 대한 잠재 소비자들의 수 예상

[ Data Clustering 예시 ]

# 좋은 Clustering의 기준은?
 - 같은 클러스터 내의 데이터는 서로 높은 유사도를 나타냄
 - 다른 클러스터 간의 데이터는 서로 낮은 유사도를 나타냄

2. K-means Clustering

가장 대표적으로 사용하는 Clustering의 방법 중 하나는 K-means Clustering이다. K-means 알고리즘은 "K-개의 군집(Cluster)로 묶는(그룹화)하는 알고리즘이다.

K-means 알고리즘에서 'K'는 묶을 군집(클러스터)의 개수를 의미하고 means는 평균을 의미한다. 말 그대로 각 군집의 평균(mean)을 활용하여 K개의 군집으로 그룹화한다는 것인데, 여기서 평균(means)란 각 클러스터의 중심과 데이터들의 평균 거리를 의미한다.

 

위의 예시는 K가 3인 K-means 알고리즘에서 3개의 군집으로 묶은 모습이다. 위와 같이 비슷한 특성을 지닌 데이터들끼리 묶는 것을 Clustering(군집)이라고 하며, 그 방법에는 여러가지가 있다.

 # Classification(분류) vs Clustering(군집)

쉽게 헷갈리는 분류(Classification)군집(Clustering) 차이점은?
- 분류(Classification)
: 분류는 지도학습(supervised) 방법으로 Label(정답)이 주어졌을 때, 그 Label을 기반으로 데이터를 나누는 방법을 의미한다. 그래서 머신러닝에서 모델을 학습시킬 때 모델이 제대로 분류하는지를 test하기 위해 Label을 제거하고, 모델이 예측한 Label과 실제 Label을 비교하여 모델의 성능을 확인할 수 있다.

- 군집(Clustering)
: 군집의 경우, 반대로 비지도학습(unsupervised) 방법에 속하여 Label(정답)이 주어지지 않았을 때 주어진 데이터들을 묶는 방법을 의미한다. 정해진 Label이 없기 때문에 분류와 다르게 어떤 Label에 속할지 예측하기보다는 그룹화할 수 있는 정도를 파악하는데 사용되는 경우가 많다.

 

반응형

3. Clustering 방법들

DBSCAN에서 DB는 'Density Base'의 약자로 밀도를 기준으로 clustering해서 가운데 있는 데이터와 외곽에 있는 데이터가 구별된다. 
→ K-means는 현업에서 clustering을 할 수 있다/없다 정도로 판별할 때 주로 사용하고, DBSCAN은 주로 '거리/좌표 데이터'가 포함된 경우에 많이 쓰인다.

 

Hierarchical clustering은 특정 구간/계급을 기준으로 데이터들을 자유롭게 나눌 수 있다.
→ Hierarchical(계급이 있는) 데이터의 경우 효율이 좋다.
→ ex) 상품의 금액대별 클러스터링 등

 


4. K-means 알고리즘 원리 이해하기

위에서 K-means 알고리즘은 비지도 학습으로 Label이 없는 데이터들을 군집으로 묶는 것이라고 했는데, 실제로 어떻게 Clustering하는지 알고리즘의 원리를 알아보자. 아래와 같이 총 5가지 단계로 구성

 

1) 군집의 개수(K) 설정하기

가장 먼저 해야 할 군집의 개수(K)를 결정하는 것이다. 이 K값에 어떻게 설정하냐에 따라서 결과값이 크게 달라질 수 있으며, 종종 터무니 없는 결과가 나올 수도 있다. 

# 군집의 개수 설정하는 방법론
 - Rule of thumb
 - Elbow Method
 - 정보 기준 접근법 (Information Criterion Approach)

 

예시로 위와 같이 6개의 데이터들(1~6)이 주어졌을 때, 어떤 순서로 Clustering되는지 살펴보자
→ 주어진 6개의 데이터에 대해서 군집의 개수(K)는 임의의로 3으로 설정하자.

2) 초기 중심점 설정하기

다음으로 K개의 초기 중심점(Centroid, 무게중심)을 설정하는 것이다. 

 

초기 중심점을 설정하는데도 여러 방법이 있지만, 편의상 중심점(c1, c2, c3)를 위와 같이 랜덤하게 설정

3) 데이터를 군집에 할당(배정)하기

이 과정에서는 초기 중심점(centroid)에서 거리상 가까운 지점으로 주어진 데이터를 할당/배정한다. 아래와 같이 1번 데이터를 시작으로 6번 데이터까지 각각의 중심점에서 가까운 군집으로 배정된다.

 

[  clustering 1번 데이터, 2번 데이터 ]

위와 같이 1, 2번 데이터의 경우 c1 중심점과 가장 가까우므로 노란색으로 표시할 수 있다.

 

[  clustering 3번 데이터, 4번 데이터 ]

그 외 데이터들도 동일한 방법으로 각각 군집에 배정되어서 위와 같이 최종적으로 완료

 

[ 데이터 군집 할당 결과 ]

4) 중심점 갱신하기

지금까지 설정한 c1, c2, c3 각 중심점은 해당 군집에 속하는 데이터들의 평균에 위치한 지점으로 재설정한다.

 

위와 같이 중심점 c1은 데이터 1, 2의 평균 지점으로, 중심점 c2는 3, 4의 평균, 그리고 중심점 c3은 5, 6의 평균 지점으로 갱신된다.

 

5) 데이터를 군집에 재할당하기

중심점의 이동이 없을 때까지 step4와 step5를 계속 반복해서 최종적으로 데이터가 군집에 할당된다.

 

[ Clustering 최종 결과 ]

 

 

 

 

# 참고 문헌

이미지 출처 및 참고 블로그 : https://velog.io/@jhlee508/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-K-%ED%8F%89%EA%B7%A0K-Means-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

학습 참고 : 50개 프로젝트로 완벽하게 끝내는 머신러닝 SIGN

 

 

댓글