K-means 클러스터링 + 정답지 비교 노트북 분석

이 Google Colab 노트북은 K-means 클러스터링 알고리즘과 실제 정답 라벨을 비교 분석하는 완전 자동화 도구입니다[1]. 노트북의 주요 특징과 구조를 다음과 같이 분석할 수 있습니다.

노트북의 핵심 목적

이 노트북은 비지도 학습인 K-means 클러스터링의 성능을 지도 학습의 정답과 비교하여 클러스터링 품질을 정량적으로 평가하는 것이 주요 목적입니다[1]. 특히 헝가리안 알고리즘을 사용한 최적 매칭을 통해 클러스터와 실제 클래스 간의 정확도를 계산합니다.

주요 기능 및 특징

1. 범용성과 편의성

  • CSV URL만 변경하면 어떤 공개 CSV 데이터셋에도 바로 적용 가능[1]
  • 라벨 컬럼 자동 탐지 기능: label, target, class, species, activity, Activity, y 등의 일반적인 라벨 컬럼명을 자동으로 인식[1]
  • 비수치형 데이터는 자동으로 one-hot 인코딩 처리

2. 고급 매칭 알고리즘

  • 헝가리안 알고리즘(Hungarian Algorithm)을 사용한 클러스터-정답 매칭으로 정확한 성능 평가[1]
  • 혼동행렬(confusion matrix) 기반의 최적 매핑 계산

3. 다양한 평가 지표

  • 정확도(Accuracy): 헝가리안 매칭 후 계산한 정확도
  • ARI(Adjusted Rand Index): 클러스터링 성능 평가 지표
  • NMI(Normalized Mutual Information): 정보 이론 기반 평가 지표
  • 실루엣 점수(Silhouette Score): 클러스터 내 응집도와 클러스터 간 분리도 평가

코드 구조 분석

1단계: 라이브러리 설치

!pip -q install scikit-learn pandas numpy matplotlib seaborn scipy

2단계: 데이터 로딩

  • Iris 데이터셋을 기본 예시로 사용[1]
  • dataset_url 변수만 수정하면 다른 데이터셋 사용 가능
  • 데이터 형태: (150, 5) – 150개 샘플, 5개 컬럼(4개 피처 + 1개 라벨)[1]

3단계: 데이터 전처리

  • 라벨 컬럼 자동 탐지: species 컬럼 인식[1]
  • 피처와 라벨 분리: X (150, 4), y (150,), 클래스 수: 3개[1]
  • LabelEncoder를 사용한 문자열 라벨의 정수 변환

4단계: K-means 클러스터링

  • StandardScaler를 사용한 피처 스케일링
  • K-means 하이퍼파라미터 설정[1]:
  • n_clusters: 실제 클래스 수와 동일하게 설정 (3개)
  • n_init=50: 안정적인 결과를 위해 50번 시도
  • max_iter=500: 최대 반복 횟수
  • random_state=42: 재현 가능한 결과
  • Inertia: 139.82로 측정됨[1]

5단계: 성능 평가 및 매칭

헝가리안 알고리즘을 사용한 최적 매칭 결과[1]:

평가 지표
정확도0.8333 (83.33%)
ARI0.6201
NMI0.6595
실루엣 점수0.4599

혼동행렬 분석[1]:

  • Setosa: 완벽하게 분리됨 (50개 모두 cluster 1에 배정)
  • Versicolor: 39개는 cluster 0, 11개는 cluster 2로 분산
  • Virginica: 36개는 cluster 2, 14개는 cluster 0으로 분산

클러스터 매핑[1]:

  • Cluster 0 → Versicolor
  • Cluster 1 → Setosa
  • Cluster 2 → Virginica

6단계: 2D 시각화

  • PCA(주성분 분석)를 사용한 2차원 시각화
  • 두 개의 그래프 제공:
  1. 실제 정답 라벨 기준 시각화
  2. K-means 클러스터링 결과를 정답 라벨로 매핑한 시각화

7단계: 결과 저장

  • 원본 데이터에 다음 컬럼들을 추가하여 CSV로 저장[1]:
  • true_label: 실제 정답 라벨
  • cluster_raw: 원시 클러스터 라벨
  • cluster_mapped_to_true: 매핑된 클러스터 라벨

기술적 특징 및 장점

1. 헝가리안 알고리즘의 활용

클러스터링에서 가장 어려운 문제 중 하나인 클러스터 라벨과 실제 클래스 라벨 간의 매칭 문제를 헝가리안 알고리즘으로 해결했습니다[1]. 이는 혼동행렬에서 최대 합을 갖는 매칭을 찾아 가장 정확한 성능 평가를 가능하게 합니다.

2. 완전 자동화

사용자는 단순히 dataset_url과 필요시 label_col만 수정하면 되므로, 기계학습 전문 지식 없이도 쉽게 사용할 수 있습니다[1].

3. 포괄적 평가

단순한 정확도뿐만 아니라 ARI, NMI, 실루엣 점수 등 다양한 클러스터링 평가 지표를 제공하여 종합적인 성능 분석이 가능합니다[1].

4. 시각적 검증

PCA를 통한 2D 시각화로 클러스터링 결과를 직관적으로 확인할 수 있어, 수치적 평가와 함께 시각적 검증도 가능합니다[1].

실행 결과 해석

Iris 데이터셋에서의 결과를 보면[1]:

  • Setosa 클래스는 완벽하게 분리되어 100% 정확도
  • Versicolor와 Virginica는 일부 겹침 현상으로 인한 오분류 발생
  • 전체 83.33%의 정확도는 비지도 학습 방법치고는 상당히 높은 성능

이는 Iris 데이터셋의 특성상 Setosa는 다른 두 클래스와 명확히 구분되지만, Versicolor와 Virginica는 피처 공간에서 일부 겹치는 영역이 있음을 보여줍니다.

이 노트북은 클러스터링 알고리즘의 성능을 체계적이고 정량적으로 평가하는 완성도 높은 도구로, 연구 및 교육 목적 모두에 매우 유용한 리소스입니다.

출처
[1] kmeans_colab.ipynb – Colab https://colab.research.google.com/drive/1B7HWdgYzqpRLjYiDom0NfipP82Teqwki?usp=sharing

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다