개발 창고/AI

비지도학습 실습: 군집과 차원 축소

Royzero 2025. 8. 16. 22:00
반응형

1. 비지도학습(Unsupervised Learning)이란?

비지도학습은 정답(Label)이 없는 데이터에서 패턴, 구조, 관계를 찾아내는 학습 방식입니다.
지도학습처럼 ‘정답지’가 없기 때문에, 모델은 스스로 데이터의 숨은 규칙을 발견합니다.


1.1 주요 활용 사례

  • 고객 세분화: 구매 이력 기반 고객 그룹 나누기
  • 이상치 탐지: 금융 사기, 시스템 장애 조기 감지
  • 데이터 시각화: 고차원 데이터를 2D/3D로 축소해 이해도 향상

2. 군집(Clustering)

군집은 유사한 데이터끼리 묶는 작업입니다.
대표적인 알고리즘은 다음과 같습니다.

알고리즘 특징
K-Means 간단하고 빠르지만, 군집 개수를 사전에 지정해야 함
계층적 군집(Hierarchical) 데이터 계층 구조를 시각화 가능
DBSCAN 군집 개수를 지정하지 않아도 되며 이상치 처리에 강점

2.1 K-Means 개념

  • 데이터 포인트를 K개의 그룹으로 분할
  • 각 그룹 중심(centroid)을 반복적으로 갱신하여 군집 형성

3. 차원 축소(Dimensionality Reduction)

차원 축소는 데이터의 **특징 수(Feature)**를 줄이는 과정입니다.
고차원 데이터를 시각화하거나, 불필요한 특성을 제거해 모델 성능을 향상시킬 수 있습니다.


3.1 PCA(주성분 분석)

  • 데이터의 분산을 가장 잘 설명하는 축(Principal Component)을 찾아 변환
  • 특징 수를 줄이면서 정보 손실 최소화

4. 실습 – K-Means로 Iris 데이터 군집화

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt

# 데이터 로드
iris = load_iris()
X = iris.data

# K-Means 학습
kmeans = KMeans(n_clusters=3, random_state=42)
clusters = kmeans.fit_predict(X)

# 결과 DataFrame 생성
df = pd.DataFrame(X, columns=iris.feature_names)
df['cluster'] = clusters

# 시각화
plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'], c=df['cluster'], cmap='viridis')
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('K-Means Clustering of Iris')
plt.show()

5. 실습 – PCA로 차원 축소

from sklearn.decomposition import PCA

# 2차원으로 축소
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# 시각화
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=clusters, cmap='viridis')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA Dimensionality Reduction')
plt.show()

6. 오늘의 핵심 요약

  • 비지도학습은 정답이 없는 데이터에서 구조를 찾는 방식
  • 군집: K-Means, DBSCAN, 계층적 군집 등 다양한 기법 존재
  • 차원 축소: PCA 등으로 데이터 이해도 향상 및 학습 효율 개선
  • 실습을 통해 K-Means와 PCA를 적용해봄
반응형