[카테고리:] 미분류

  • 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