7. 비지도 학습(Unsupervised Learning)- 정답 없는 데이터에서 보석 찾기

Summary
정답 라벨이 없는 데이터에서 숨겨진 구조를 찾아내는 비지도 학습을 알아본다. 대표적인 알고리즘인 K-평균(K-Means) 군집화와 주성분 분석(PCA) 차원 축소의 개념과 수학적 원리를 파헤친다.
카테고리
Machine Learning
Original creation date
Dec 1, 2025
생성일
Jan 30, 2026 12:03 PM
태그
ML
deeplearning
지도 학습이 '정답'이 있는 데이터를 학습하는 것이었다면, **비지도 학습(Unsupervised Learning)**은 정답 라벨이 없는 데이터에서 스스로 의미 있는 구조, 패턴, 특징을 찾아내는 방법이다. 이는 마치 과일 상자에서 "이건 사과야"라고 배우는 대신, "동그랗고 빨간 것들끼리", "길고 노란 것들끼리" 스스로 그룹을 나누는 것과 같다.
비지도 학습의 가장 대표적인 두 가지 분야는 **군집화(Clustering)**와 **차원 축소(Dimensionality Reduction)**이다.

1. 군집화 (Clustering): "끼리끼리 모여라"

군집화는 비슷한 특성을 가진 데이터들끼리 하나의 그룹(Cluster)으로 묶는 작업이다. 고객 분류, 이미지 분할, 뉴스 기사 그룹핑 등 다양한 분야에서 활용된다.

1.1. K-평균 (K-Means) 알고리즘

가장 대표적인 군집화 알고리즘으로, K개의 평균(mean)값을 찾아 군집을 만드는 방식이다.
  • 알고리즘 순서:
      1. 초기화: K개의 중심점(Centroid)을 랜덤하게 배치한다.
      1. 군집 할당: 모든 데이터는 각자 가장 가까운 중심점에 소속된다.
      1. 중심점 이동: 각 군집의 새로운 중심점은 그 군집에 속한 모든 데이터들의 평균 위치로 이동한다.
      1. 반복: 중심점이 더 이상 움직이지 않을 때까지 2, 3번 과정을 반복한다.

1.2. K-Means의 수학적 원리: 비용 함수 최적화

K-Means의 목표는 군집 내 데이터들 간의 응집도를 높이는 것, 즉 각 데이터와 그 데이터가 속한 군집 중심점 사이의 거리를 최소화하는 것이다. 이는 다음 **비용 함수(왜곡 함수) J**를 최소화하는 것과 같다.
J = (1/m) * Σᵢ ||x⁽ⁱ⁾ - μ_c⁽ⁱ⁾||²
  • x⁽ⁱ⁾: i번째 데이터, μ_c⁽ⁱ⁾: i번째 데이터가 속한 군집의 중심점.
K-Means는 이 비용 함수 J를 최소화하기 위해 두 단계를 번갈아 수행한다.
  • 군집 할당 단계: 중심점 μ를 고정한 채, 각 데이터 x⁽ⁱ⁾를 가장 가까운 중심점에 할당(c⁽ⁱ⁾)하여 J를 최소화한다.
    • c⁽ⁱ⁾ := argmin_k ||x⁽ⁱ⁾ - μ_k||²
  • 중심점 이동 단계: 군집 할당 c를 고정한 채, 각 군집 k에 속한 데이터들의 평균으로 중심점 μ_k를 옮겨 J를 최소화한다.
    • μ_k := 평균(군집 k에 속한 모든 데이터)

2. 차원 축소 (Dimensionality Reduction): "중요한 것만 남기자"

차원 축소는 데이터의 중요한 정보는 최대한 유지하면서, 피처(feature)의 개수, 즉 차원(dimension)을 줄이는 기법이다. 데이터 압축, 시각화, 과적합 방지 등을 목적으로 한다.

2.1. 주성분 분석 (Principal Component Analysis, PCA)

가장 널리 사용되는 차원 축소 알고리즘. PCA는 데이터의 분산(Variance)을 가장 잘 보존하는 새로운 축을 찾는 것을 목표로 한다. 분산이 크다는 것은 그 방향으로 데이터가 많이 흩어져 있고, 그만큼 많은 정보를 담고 있다는 의미이기 때문이다.

2.2. PCA의 수학적 원리: 고유값 분해

PCA는 데이터의 **공분산 행렬(Covariance Matrix)**을 분석하여 작동한다.
  1. 데이터 전처리: 각 피처의 평균을 0으로 맞춘다. (필요시 표준편차를 1로 맞추는 표준화 수행)
  1. 공분산 행렬 Σ 계산: 데이터가 어떤 방향으로 얼마나 퍼져있는지에 대한 정보를 담은 n x n 행렬을 계산한다.
  1. 고유값 분해 (Eigendecomposition): PCA의 핵심. 공분산 행렬 Σ를 고유값 분해하여 **고유 벡터(Eigenvector)**와 **고유값(Eigenvalue)**을 찾는다.
    1. Σv = λv
      • v (고유 벡터): 데이터의 분산이 가장 큰 새로운 축의 방향.
      • λ (고유값): 해당 축 방향으로 데이터가 갖는 분산의 크기.
  1. 주성분(Principal Components) 선택:
      • 계산된 고유값을 큰 순서대로 정렬하고, 그에 해당하는 고유 벡터들을 **주성분(PC)**으로 삼는다.
      • PC1: 가장 큰 고유값에 해당하는 고유 벡터 (분산이 가장 큰 방향).
      • PC2: 두 번째로 큰 고유값에 해당하는 고유 벡터 (PC1에 직교하며 분산이 두 번째로 큰 방향).
  1. 데이터 투영 (Projection):
      • k차원으로 축소하고 싶다면, 상위 k개의 주성분(PC1, ..., PCk)을 선택한다.
      • k개의 주성분 벡터로 이루어진 투영 행렬 W를 원래 데이터 x와 곱하여, 새로운 k차원 데이터 z를 얻는다.
      z = Wᵀx
이 과정을 통해 PCA는 정보 손실을 최소화하면서 효과적으로 데이터의 차원을 축소한다.