비지도 학습이란?
- 비지도 학습(Unsupervised Learning)은 정답(레이블) 없이 데이터에서 패턴이나 구조를 찾는 머신 러닝 기법을 의미합니다.
- 활용 영역
- 데이터의 군집화(Clustering)
- 차원 축소(Dimensionality Reduction)
- 이상치 탐지(Anomaly Detection) 등
지도 학습과의 비교
- 지도 학습(Supervised Learning)
- 입력 데이터에 대한 정답(레이블)을 알고 있는 상태에서 모델을 학습하여, 새로운 데이터가 들어왔을 때 레이블을 예측.
- ex) 이미지 분류, 스팸 메일 분류
- 비지도 학습(Unsupervised Learning)
- 별도의 레이블이 없고, 오직 입력 데이터만으로부터 구조를 파악.
- ex) 고객 그룹화(세분화), 문서 토픽 분류
핵심 포인트! 비지도 학습에서는 ‘라벨’ 대신 ‘데이터 자체의 유사성과 패턴’에 집중합니다.
1. 군집분석
- 비슷한 특성을 가진 데이터들을 묶어서(Cluster) 각 그룹 내 데이터들끼리의 유사도를 최대화하고, 다른 그룹과의 차이는 최대화하는 기법.
- 목적: 정답 없이 데이터의 자연스러운 분포를 확인: 마케팅에서는 고객 세분화를, 제조업에서는 센서 데이터로 기계 작동 패턴 분류 등을 수행
① 데이터의 구조 파악 : 정답 없이 데이터의 자연스러운 분포를 확인
② 세분화 : 마케팅에서는 고객 세분화를, 제조업에서는 센서 데이터로 기계 작동 패턴 분류 등을 수행
군집 분석의 절차
1) 데이터 수집 및 전처리 : 이상치 제거, 결측치 처리, 스케일링/정규화
2) 군집수 또는 파라미터 설정 : K-Means의 경우 k 설정, DBSCAN은 거리(ε), 최소 데이터 수(minPts) 등
3) 군집화 알고리즘 적용 : 설정에 따라 알고리즘 수행
4) 결과 해석 및 평가 : 실루엣 계수 등 군집 평가 지표 활용
5) 사후 활용 : 마케팅 전략, 제품 개선, 이상치 탐지 등
2. 주요 분석 알고리즘
① K-Means
1) 알고리즘 개요
: 미리 군집 수 k를 지정해야 함
: 무작위로 k개의 중심(centroid)을 선택 후, 각 데이터 포인트를 가장 가까운 중심에 할당
: 각 군집의 중심을 다시 계산하고 재할당하는 과정을 반복
: 군집 내 데이터와 중심 간 거리의 제곱합을 최소화
2) 장점
: 계산 속도가 빠르고 구현이 간단
: 대용량 데이터에도 비교적 잘 작동
3) 단점
: 군집 수 k를 미리 알아야 함
: 이상치에 취약(중심값에 영향을 미침)
: 구형(球形) 구조가 아닌 복잡한 형태의 분포를 파악하기 어려움
4) 예시
: 고객 데이터를 나이, 월평균 지출액, 자주 구매하는 카테고리(One-hot 인코딩 후 스케일링 적용) 등을 가지고 분석
: k=3으로 설정한다면 “저가 위주의 고객”, “중간 가격대 선호 고객”, “고가 제품 위주 고객” 등으로 군집이 나뉠 수 있음

② DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
1) 알고리즘 개요
: 밀도 기반 군집화 기법. 일정 거리(ε) 내 데이터가 많으면(최소 포인트 수 minPts 이상) 그 영역을 ‘밀도가 높다’고 판단해 하나의 군집으로 결정
: k를 미리 설정하지 않아도 되며, 노이즈 포인트(어느 군집에도 속하지 않는 점)을 구분할 수 있음
2) 장점
: 군집 수를 사전에 알 필요가 없음
: 노이즈와 이상치를 자연스럽게 처리
: 구형이 아닌 복잡한 형태의 군집도 잘 찾아냄
3) 단점
: 파라미터 ε와 minPts에 민감
: 데이터 밀도가 균일하지 않으면 성능이 떨어질 수 있음
4) 예시
: 지리정보(GIS) 분석에서 지역별로 가게가 얼마나 밀집되어 있는지 분석할 때 사용
: 특정 지점에 가게가 몰려 있으면 하나의 군집, 중간에 뜨문뜨문 있는 가게는 노이즈(Cluster에 속하지 않는 포인트)로 분류

③ 계층적 클러스터링 (Hierarchical Clustering)
1) 알고리즘 개요
: 데이터 포인트 각각이 하나의 군집으로 시작 → 유사도가 가장 높은 군집들끼리 병합 → 최종적으로 하나의 군집(트리) 형성
: 또는 하나의 군집에서 시작해 분할해 나가는 방법도 있음(분할적 접근)
: 덴드로그램(Dendrogram)으로 시각화가 가능
2) 장점
: 군집의 계층적 구조 파악이 쉬움(덴드로그램)
: 군집 수를 명확히 결정하지 않아도, 덴드로그램의 특정 높이(cut)에 따라 유연하게 군집 개수 결정 가능
3) 단점
: 계산 복잡도가 높아서 대규모 데이터에 적용하기 어려움
4) 예시
: 유전자 데이터 분석: 유전자 발현 패턴이 유사한 것끼리 계층적으로 묶어, 생물학적 특성을 추론
: 다양한 문서(텍스트) 클러스터링에서 단어의 사용 빈도 등을 기반으로 문서 구조를 시각화

코드예시)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans, DBSCAN, AgglomerativeClustering
from sklearn.model_selection import train_test_split
from sklearn.metrics import silhouette_score
from sklearn.decomposition import PCA
# 1. 데이터 로드
iris = load_iris()
X = iris.data
y = iris.target # 실제 품종 레이블(군집 학습 자체에는 사용하지 않음)
# 3. K-Means
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans_labels = kmeans.fit_predict(X)
# 4. DBSCAN
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan_labels = dbscan.fit_predict(X)
# 5. 계층적 클러스터링 (AgglomerativeClustering)
agg = AgglomerativeClustering(n_clusters=3)
agg_labels = agg.fit_predict(X)
# 6. 각 군집 결과의 실루엣 지수 평가
kmeans_sil = silhouette_score(X, kmeans_labels)
dbscan_sil = silhouette_score(X, dbscan_labels)
agg_sil = silhouette_score(X, agg_labels)
print("=== 군집 결과 비교 ===")
print("K-Means: 실루엣 점수 =", kmeans_sil, "| 클러스터 라벨 =", np.unique(kmeans_labels))
print("DBSCAN: 실루엣 점수 =", dbscan_sil, "| 클러스터 라벨 =", np.unique(dbscan_labels))
print("Agglomerative: 실루엣 점수 =", agg_sil, "| 클러스터 라벨 =", np.unique(agg_labels))
# 7. 시각화를 위해 PCA로 차원 축소 (2차원)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 8. 군집 결과 시각화
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
# K-Means 시각화
axes[0].scatter(X_pca[:, 0], X_pca[:, 1], c=kmeans_labels)
axes[0].set_title("K-Means")
# DBSCAN 시각화
axes[1].scatter(X_pca[:, 0], X_pca[:, 1], c=dbscan_labels)
axes[1].set_title("DBSCAN")
# Agglomerative 시각화
axes[2].scatter(X_pca[:, 0], X_pca[:, 1], c=agg_labels)
axes[2].set_title("Agglomerative")
plt.tight_layout()
plt.show()
- 데이터 로드를 진행합니다.
- load_iris 함수를 사용하여 Iris 데이터를 가져옵니다.
- 4차원의 연속형 특성(꽃받침 길이·폭, 꽃잎 길이·폭)과 3개 품종 레이블이 존재합니다.
- 학습/테스트 데이터 분할은 선택 사항이지만, 예시로 70% 데이터를 학습에, 30%를 테스트에 사용하도록 분할했습니다.
- 세 가지 군집 기법으로 학습을 수행합니다.
- K-Means: n_clusters=3으로 클러스터를 3개로 분할합니다.
- DBSCAN: eps=0.5, min_samples=5를 기본 설정으로 사용합니다.
- AgglomerativeClustering: n_clusters=3으로 계층적 군집을 수행합니다.
- 군집 결과 평가로 실루엣 지수(Silhouette Score)와 Davies-Bouldin Index를 각각 계산해 봅니다.
- silhouette_score(X_train, labels)는 실루엣 지수를 계산하며, 값이 클수록(최대 1) 군집화가 잘 되었다고 볼 수 있습니다.
- davies_bouldin_score(X_train, labels)는 Davies-Bouldin 지수로, 값이 낮을수록 군집화 품질이 우수함을 의미합니다.
- PCA로 2차원 축소 후 군집 결과를 시각화합니다.
- 4차원 데이터를 2차원으로 변환하여 산점도를 그리므로, 실제 군집 분포가 단순화되어 보일 수 있습니다.
- 그래프에서는 각각의 모델(K-Means, DBSCAN, Agglomerative) 결과를 다른 축에 표시하여 비교합니다.

4. 군집분석 평가 방법
① 실루엣 계수 (Silhouette Score)
- 각 데이터 포인트의 응집도(a)와 분리도(b)를 이용해 계산
- 응집도(a) : 같은 군집 내 데이터와의 평균 거리
- 분리도(b) : 가장 가까운 다른 군집과의 평균 거리
계산 공식

- 범위
- -1 ~ 1
- 1에 가까울수록 해당 데이터가 잘 군집되었음을 의미
- 0 근처면 군집 경계에 위치
- 0보다 작으면 잘못된 군집화 가능성
② Davies-Bouldin Index
- 군집 내 분산과 군집 간 거리의 비율을 활용
- 각 군집에 대해 다른 군집과의 거리를 비교하면서, 군집끼리 얼마나 겹치는지 측정
- 범위
- 0 이상
- 값이 0에 가까울수록 군집 간 구분이 잘 되어 있음
- 값이 커질수록 군집 간 겹침이 많아 군집화 품질이 낮음
③ 내부 평가 vs 외부 평가
- 내부 평가(Internal Evaluation)
- 데이터 내부의 정보(분산, 거리 등)를 활용해 평가 (실루엣 계수, Davies-Bouldin Index 등)
- 외부 평가(External Evaluation)
- 이미 알려진 레이블(정답)과 군집 결과를 비교(정답이 있을 때만 가능)
제조업 사례)
1. 공장에 설치된 기계에서 주기적으로 측정되는 온도, 진동, 압력 등의 센서 데이터 수집
2. DBSCAN을 이용해 비슷한 작동 패턴의 센서 데이터를 군집화
- 군집 1: 정상 범주(온도와 진동 값이 일정 범위 내)
- 군집 2: 약간 불안정한 패턴(진동이 가끔 튀는 경우)
- 노이즈: 완전히 이상치(기계 고장 상태)
3.활용 방안
- 불안정 군집이 얼마나 발생하는지 모니터링하여 사전 정비 계획 수립
- 노이즈로 분류된 이상치를 즉시 점검하여 사고 예방
- 결과
- 예지 정비(Predictive Maintenance)를 통해 생산 라인의 다운타임 줄이고, 비용 절감 가능
5. 총 정리
1. 비지도 학습은 레이블 없이 데이터 구조를 파악하는 데 사용
2. 군집 분석은 유사한 데이터끼리 묶어 세분화하고, 다양한 분야에서 활용
3. K-Means, DBSCAN, 계층적 군집 알고리즘별 특성을 파악해 상황에 맞춰 선택
4. 군집화 결과는 실루엣 계수, Davies-Bouldin Index 등으로 정성·정량적으로 평가
5. 다양한 실무 분야에서 고객 세분화, 이상치 탐지 등으로 적극 활용 가능
Q&A
Q1: 군집 수(k)를 미리 어떻게 정하나요?
A1: K-Means의 경우 엘보(Elbow) 기법이나 실루엣 계수를 활용해 여러 k값을 시도해보고, 각 경우의 군집 품질 지표를 비교하여 적정 군집 수를 결정합니다.
- 엘보(elbow)기법이란?
- 특정 범위의 K값(예: 1부터 10까지)을 바꿔가며 모델을 학습한 뒤, 각 K에 대한 군집 내 제곱오차 합(SSE) 또는 WCSS(Within-Cluster Sum of Squares) 값을 구해 그래프로 표현하고 어느 지점에서 꺾여(“팔꿈치”처럼) 완만해지는 지점이 Elbow Point
- 그 Elbow Point 지점에서의 K값을 결정하는 방식
Q2: K-Means와 DBSCAN 중 어느 것을 골라야 하나요?
A2: 데이터의 구조와 필요에 따라 다릅니다. 군집 수를 알고 있거나 대략적인 예상이 가능하면 K-Means가 간단하고 빠르며, 군집이 구형(球形) 형태가 아닐 수 있거나 노이즈 처리가 중요한 경우 DBSCAN이 유리합니다.
Q3: 비지도 학습에서는 모델 성능을 어떻게 평가하나요?
A3: 비지도 학습에는 정답(레이블)이 없으므로 실루엣 계수나 Davies-Bouldin Index 같은 내부 평가 지표를 사용해 군집 품질을 평가하거나, 필요 시 외부 평가지표(실제 라벨과 비교)가 있으면 함께 활용합니다.
Q4: 군집 분석 후 결과는 어떻게 해석해야 하나요?
A4: 각 군집이 갖는 주요 특징(평균값, 주요 변수 분포 등)을 파악하여 ‘어떤 속성을 공유하는 그룹인가’를 이해하고, 이를 기반으로 마케팅 전략, 제품 추천, 이상 탐지 등 비즈니스 활용 방안을 도출합니다.
Q5: 실제 데이터에서는 이상치나 결측값 처리를 어떻게 해야 하나요?
A5: 군집 분석 전, 결측값 제거·대체, 스케일링(정규화), 이상치 처리(제거 혹은 적절한 대체)를 선행해야 합니다. 특히 K-Means는 평균값에 민감해 이상치 영향을 크게 받으므로 사전에 주의가 필요합니다.
Q6: 군집화 결과가 만족스럽지 않을 때 어떻게 해야 하나요?
A6: 다른 군집 알고리즘을 시도하거나, 파라미터(예: DBSCAN의 ε, minPts)를 조정해보거나, 추가 변수를 고려해 새로운 피처(Feature)를 생성해보는 등 데이터 전처리와 하이퍼파라미터 튜닝 과정을 반복해야 합니다.
Q7: 실무에서 군집 분석을 도입하려면 어떤 절차가 필요한가요?
A7: 먼저 분석할 목적(가설)을 설정하고, 필요 데이터(특징)를 선정·수집한 뒤, 적절한 전처리를 거쳐 군집 알고리즘을 적용합니다. 이후 결과 해석과 평가를 통해 군집을 재조정하고, 마지막으로 인사이트를 업무에 활용합니다.