728x90
반응형
SMALL
지금까지는 정답(Label)이 있는 지도 학습(Supervised Learning) 모델을 중심으로 공부해 보았습니다.
이번 글에서는 완전히 새로운 방식인 비지도 학습(Unsupervised Learning)에 대해 알아보고, 대표 알고리즘 중 하나인 K-Means 클러스터링을 직접 실습해보겠습니다.
1️⃣ 비지도 학습이란 무엇인가요?
비지도 학습(Unsupervised Learning)은 정답이 없는 데이터를 기반으로 숨겨진 구조나 패턴을 찾아내는 학습 방식입니다.
즉, 데이터에 어떤 레이블도 주어지지 않은 상태에서 모델이 스스로 규칙을 발견하는 것이 핵심입니다.
📌 주요 활용 사례
- 고객 세분화 (Cluster Analysis): 고객을 성향이나 행동에 따라 그룹화
- 이상 탐지 (Anomaly Detection): 비정상적인 거래나 행위 탐지
- 차원 축소 (Dimensionality Reduction): 고차원 데이터를 시각화 가능하게 축소
📌 대표 알고리즘 분류
분류 | 알고리즘 예시 |
✅ 군집(Clustering) | K-Means, DBSCAN, 계층적 군집(Hierarchical Clustering) |
✅ 차원 축소 | PCA, t-SNE |
2️⃣ K-Means 클러스터링 개념
K-Means는 비지도 학습에서 가장 널리 사용되는 군집화(Clustering) 알고리즘입니다.
이 알고리즘은 데이터를 K개의 그룹으로 자동으로 나누는 방식으로 작동합니다.
✅ 작동 원리
- 데이터에서 임의로 K개의 중심(Centroids)을 선택합니다.
- 각 데이터 포인트를 가장 가까운 중심에 할당합니다.
- 할당된 포인트들을 기준으로 각 클러스터의 새로운 중심을 다시 계산합니다.
- 클러스터 구성이 더 이상 변하지 않을 때까지 반복 수행합니다.
✅ K 값은 어떻게 정할까요?
- K 값을 무작정 정하면 성능이 떨어질 수 있습니다.
- 일반적으로 엘보우 방법(Elbow Method)을 통해 최적의 K를 찾습니다.
→ 클러스터 개수(K)에 따른 오차를 그래프로 그려 '꺾이는 지점'을 찾는 방식입니다.
✅ 실습: 2차원 데이터 클러스터링
아래는 가상의 2차원 데이터를 생성하고, K-Means 알고리즘을 적용하여 클러스터링을 시각화하는 예제입니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
# 가상 데이터 생성 (3개의 클러스터)
X, _ = make_blobs(n_samples=300, centers=3, cluster_std=1.0, random_state=42)
# K-Means 모델 학습
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
y_kmeans = kmeans.fit_predict(X)
# 시각화
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis', edgecolor='k', s=50)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
c='red', marker='X', s=200, label='Centroids')
plt.title("K-Means Clustering")
plt.legend()
plt.show()
🔍 결과 해석
- 데이터는 3개의 군집으로 잘 나뉘어 있습니다.
- 빨간 X 표시는 각 클러스터의 중심(Centroid)을 의미합니다.
- 서로 다른 색으로 구분된 점들은 각각 서로 다른 그룹에 속한 데이터입니다.
🏆 오늘의 핵심 요약
항목 | 설명 |
✅ 비지도 학습 | 정답 없이 데이터를 분석하여 패턴이나 구조를 찾아냅니다. |
✅ K-Means 클러스터링 | 데이터를 K개의 그룹으로 나누는 대표적인 군집화 알고리즘입니다. |
✅ 엘보우 방법 | 클러스터의 수(K)를 합리적으로 정하기 위한 기준입니다. |
728x90
반응형
LIST
'인공지능 (AI) > 머신러닝 (ML)' 카테고리의 다른 글
9 - 복잡한 데이터를 간단하게 보기: 차원 축소와 PCA, t-SNE (0) | 2025.04.03 |
---|---|
8 -한층 더 정교한 군집화: 계층적 군집과 DBSCAN (0) | 2025.04.03 |
6 - 숫자부터 문자까지, 분류의 확장: 다중 클래스 분류와 소프트맥스 회귀 (0) | 2025.04.03 |
5 - 분류의 시작: 로지스틱 회귀와 시그모이드 함수 (0) | 2025.04.03 |
4 - 회귀 모델 성능, 어떻게 더 좋게 만들 수 있을까? (0) | 2025.04.03 |