Develop/ML·DL

비지도 학습을 알아보자.

YOOZI. 2025. 2. 2. 22:48
728x90
데이터를 자동으로 그룹화하는 군집 분석

 

 

 

오늘은 머신러닝읜 군집 분석에 대해 알아보자.

 

 

오늘의 배움
  • 비지도 학습의 군집 개념과 알고리즘
  • 가우시안 혼합 모델의 이해
  • 군집화 성능 평가와 DBSCAN

 

1. 군집 (Clustering)

  • 정의: 비슷한 특성을 가진 데이터들을 자동으로 그룹화하는 비지도 학습 방법
  • 핵심 개념 한 줄 설명: 데이터들 간의 유사성을 측정하여 비슷한 것들끼리 묶어주는 방법

군집의 목적

  • 데이터의 그룹화
  • 데이터 분포 이해
  • 노이즈 제거
  • 새로운 데이터의 레이블 생성

군집과 분류의 차이

  • 군집: 레이블이 없는 데이터를 그룹화한다. (비지도 학습)
  • 분류: 이미 정의된 레이블에 데이터를 매핑한다. (지도 학습)

 

📚 실제 예시로 이해하기

[일상적인 예시]
- 옷장 정리하기: 색상별, 종류별로 옷을 분류하는 것
- 도서관 책 정리: 주제별로 책을 분류하는 것

[실무/현업 예시]
- 고객 세분화: 구매 패턴에 따른 고객 그룹 분류
- 이상 거래 탐지: 비정상적인 금융 거래 패턴 탐지

 


2. 핵심 개념 정리

  • K-평균 군집(K-Means Clustering)
    • 정의: 데이터를 K개의 그룹으로 나누는 알고리즘
    • 작동 원리: 중심점을 정하고 가까운 데이터들을 그룹화
    • 장점: 간단하고 빠르므로 대규모 데이터셋에 적합하다.
    • 단점: K값을 미리 설정해야 하고, 데이터 분포가 구형(Gaussian)에 가까워야 잘 작동한다.
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

 

  • 가우시안 혼합 모델(GMM)]
    • 정의: 여러 정규분포의 조합으로 데이터를 모델링
    • 작동 원리: EM 알고리즘으로 각 분포의 파라미터 추정
        1. 기대 단계(Expectation Step): 각 데이터 포인트가 각 가우시안 분포에 속할 확률을 계산한다.
        2. 최대화 단계(Maximization Step): 가우시안 분포의 파라미터(πk,μk,Σk)를 업데이트한다.
        3. 반복: 수렴할 때까지 E-step과 M-step을 반복한다
    • 특징: 확률적 군집화 가능
    • GMM과 K-평균의 차이
      • K-평균: 각 데이터가 특정 클러스터에 완전히 속한다고 가정한다.
      • GMM: 각 데이터가 클러스터에 속할 확률을 기반으로 군집화한다.
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=3)
gmm.fit(X)

 

from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.3, min_samples=5)
dbscan.fit(X)

 

 

  • 계층적 군집(Hierarchical Clustering)
    • 트리 구조(계층 구조)로 데이터 군집화
    • 계층적 군집의 두 가지 유형
      • 병합형(Agnes): 각 데이터를 개별 클러스터로 시작하여 점차 병합-상향식
      • 분할형(Diana): 하나의 클러스터로 시작하여 점차 분할-하향식
    • 결과는 덴드로그램(Dendrogram)으로 시각화된다.

 

 

  • 실루엣 계수(Silhouette Coefficient)
    • 정의: 군집 품질 평가
    • 공식:
      • 실루엣 계수 = (b(i) - a(i)) / max(a(i), b(i))
        • a(i): 같은 군집 내 평균 거리
        • b(i): 가장 가까운 다른 군집과의 평균 거리
        • 군집 품질 평가: -1 ~ 1 사이의 값 (1에 가까울수록 좋음)
from sklearn.metrics import silhouette_score
score = silhouette_score(X, labels)

예시

# 고객 데이터 군집화
import numpy as np
from sklearn.cluster import KMeans

# 고객 데이터 (구매금액, 방문빈도)
customer_data = np.array([[100, 5], [200, 10], [50, 2]])
kmeans = KMeans(n_clusters=2)
segments = kmeans.fit_predict(customer_data)

 


3. 비교 분석표

구분 K-평균 GMM DBSCAN
특징 중심 기반 확률 기반 밀도 기반
장점 간단/빠름 유연함 노이즈 처리
단점 K값 필요 초기값 민감 파라미터 민감
활용 고객 분류 이미지 분할 이상치 탐지

 


 

k-평균 과 k-이웃과 비슷하지만 다른 점 이해하고 넘어가자.

728x90