실습 목표
- Kaggle Mall Customers 데이터셋을 활용하여 쇼핑몰 고객을 군집화(Clustering) 함으로써 고객 세분화(Customer Segmentation) 진행
kaggle : https://www.kaggle.com/code/jiakim1324/k-means-clustering
🧠 K-means란?
- 비지도 학습의 대표적인 군집화 알고리즘
- 데이터를 K개의 클러스터로 자동 분할하여 유사한 데이터끼리 그룹화
- 중심(centroid)은 각 군집의 평균 위치
- 🎯 특징: 간단하고 빠르며, 시각적으로 해석하기 쉬움
⚙️ K-means 알고리즘 과정 (Lloyd 방식 기준)
- 초기화
- K개의 중심점 무작위 설정 (k-means++ 방식 권장)
- 할당 (Assignment)
- 각 데이터 포인트를 가장 가까운 중심점에 할당
- 거리 기준: 일반적으로 유클리드 거리
- 대안: 코사인 유사도, 맨해튼 거리
- 업데이트 (Update)
- 각 클러스터의 중심점을 새롭게 계산 (군집 내 평균)
- 반복 (Repeat)
- 클러스터링 결과가 더 이상 변하지 않거나, 최대 반복 수에 도달할 때까지 반복
📉 최적 K 선택법: 엘보우 방법 (Elbow Method)
- 다양한 K값에 대해 SSE(Sum of Squared Errors)를 측정하여 **SSE 감소율이 급격히 줄어드는 지점(K)**을 찾음
- "팔꿈치처럼 꺾이는 지점"이 최적의 K
📐 클러스터 품질 평가: 실루엣 계수 (Silhouette Coefficient)
- 1 ~ 1 사이의 값
- +1: 응집도 높고, 분리도 높음 → 군집화 잘됨
- 0: 경계에 위치
- 1: 잘못된 클러스터링
- 계산식:s(i)=max(a(i),b(i))b(i)−a(i)
- a(i): 같은 클러스터 내 평균 거리 (응집도)
- b(i): 가장 가까운 외부 클러스터와의 평균 거리 (분리도)
- s(i)=b(i)−a(i)max(a(i),b(i))s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))}
🧪 Python 실습 예제
✅ 기본 K-means 클러스터링
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 데이터 생성
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.6, random_state=0)
# 모델 학습
kmeans = KMeans(n_clusters=4, random_state=0)
kmeans.fit(X)
# 시각화
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
s=200, c='red', marker='X')
plt.title("K-means Clustering")
plt.show()
✅ 엘보우 방법으로 최적 K 찾기
sse = []
K_range = range(1, 11)
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=0).fit(X)
sse.append(kmeans.inertia_) # inertia_는 SSE
plt.plot(K_range, sse, marker='o')
plt.title('Elbow Method')
plt.xlabel('Number of Clusters (K)')
plt.ylabel('SSE')
plt.show()
✅ 실루엣 계수로 클러스터 평가
from sklearn.metrics import silhouette_score
# 예시: K=4
kmeans = KMeans(n_clusters=4, random_state=0).fit(X)
labels = kmeans.labels_
score = silhouette_score(X, labels)
print(f'Silhouette Score (K=4): {score:.2f}')
📝 요약
항목 내용
목적 | 데이터를 자동으로 유사한 그룹으로 분류 |
핵심 단계 | 초기화 → 할당 → 업데이트 → 반복 |
하이퍼파라미터 | K (클러스터 수) |
평가 방법 | Elbow (SSE), Silhouette Score |
주요 사용 사례 | 고객 세분화, 이미지 분류, 문서 군집화 등 |
'데이터분석데브코스 8 > 이론' 카테고리의 다른 글
8 - 18. Isolation Forest (0) | 2025.05.28 |
---|---|
8 - 14. SVM & Decision Tree 분류 실습 (0) | 2025.05.28 |
8 - 15. 비지도학습 개념 및 대표 알고리즘 요약 (0) | 2025.05.28 |
8 - 13. Decision Tree (0) | 2025.05.28 |
8 - 12. SVM(Support Vector Machine) (0) | 2025.05.28 |