이 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%) |
ARI | 0.6201 |
NMI | 0.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차원 시각화
- 두 개의 그래프 제공:
- 실제 정답 라벨 기준 시각화
- 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
답글 남기기