728x90
데이터를 자동으로 그룹화하는 군집 분석
오늘은 머신러닝읜 군집 분석에 대해 알아보자.
오늘의 배움 |
|
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 알고리즘으로 각 분포의 파라미터 추정
-
- 기대 단계(Expectation Step): 각 데이터 포인트가 각 가우시안 분포에 속할 확률을 계산한다.
- 최대화 단계(Maximization Step): 가우시안 분포의 파라미터(πk,μk,Σk)를 업데이트한다.
- 반복: 수렴할 때까지 E-step과 M-step을 반복한다
-
- 특징: 확률적 군집화 가능
- GMM과 K-평균의 차이
- K-평균: 각 데이터가 특정 클러스터에 완전히 속한다고 가정한다.
- GMM: 각 데이터가 클러스터에 속할 확률을 기반으로 군집화한다.
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=3)
gmm.fit(X)
- DBSCAN
- 정의: 밀도 기반 군집화 알고리즘
- 작동 원리: 밀집된 데이터 포인트들을 하나의 군집으로 형성
- 특징: 노이즈 처리 가능
- https://scikit-learn.org/stable/auto_examples/cluster/plot_cluster_comparison.html
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에 가까울수록 좋음)
- 실루엣 계수 = (b(i) - a(i)) / max(a(i), b(i))
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
'Develop > ML·DL' 카테고리의 다른 글
인공신경망 - 출력층 설계를 알아보자. (0) | 2025.02.04 |
---|---|
인공신경망 - 다차원 배열의 계산을 알아보자. (2) | 2025.02.04 |
배열_리스트를 알아보자. (0) | 2025.02.02 |
인공신경망 - 활성화 함수를 알아보자. (0) | 2025.02.02 |
인공신경망 - 퍼셉트론을 알아보자. (0) | 2025.02.02 |