[학습 일기 #26] 머신러닝 5일차_비지도 학습

Ariel_Jeong·2026년 2월 3일

[학습 일기 시리즈]

목록 보기
26/44

1. 비지도 학습의 활용 분야

비지도 학습(Unsupervised Learning)은 정답(Label)이 없는 데이터에서
구조를 스스로 찾는 학습 방식

  • 차원 축소
  • 군집화
  • 이상치 탐지



1.1. 왜 차원 축소가 필요한가?

1.1.1. 차원의 저주

  • 차원이 늘어날수록 데이터는 공간 안에서 점점 희박해진다(밀도 감소)
  • 거리 기반 알고리즘(KNN, K-Means 등)이 의미를 잃음
  • 과적합(overfitting) 위험 증가

1.1.2. 다중공선성

  • 독립 변수들 간에 높은 선형 상관관계 존재
  • 회귀 계수의 불안정성 증가
  • 모델의 해석력 저하 및 예측 성능에 악역향

1.1.3. 계산 효율성 저하

  • 변수 수 ↑ → 연산량 ↑
  • 학습 시간 증가
  • 메모리 사용량 증가




2. 차원 축소

2.1. PCA(Principal Component Analysis)

데이터의 분산을 가장 잘 설명하는 새로운 축을 찾아 그 축 기준으로 데이터를 재표현하는 방법

주성분의 수가 너무 많아져도 모델이 복잡해지고, 과적합이 발생되기 때문에
주성분의 수는 최소화하면서도 설명력을 높일 수 있는
적절한 주성분의 수를 선택하는 것이 중요

2.1.1. PCA의 핵심 아이디어

  • 데이터의 중심을 원점으로 이동
  • 분산이 가장 큰 방향(PC1)을 찾음
  • 그와 직교하는 방향 중 다음으로 중요한 축(PC2) 탐색
  • 중요한 축 몇 개(원하는 정보량을 보존하는 상위 k개의 주성분)만 남기고 나머지는 버림
  • 고차원 데이터를 이 새로운 축(저차원 공간)으로 정사영(projection)하여
    차원을 축소하는 방식
  • 기존 변수들의 선형 결합으로 서로 직교하는, 상관관계가 0인 새로운 변수(주성분)이 생성되는 것이기 때문에 다중공선성이 보정된다고 볼 수 있음

👉 정보 손실을 최소화하며 압축(최소화 한다는 뜻이지 정보 손실이 없다는 의미는 아님)


2.1.2. PCA에서 자주 나오는 용어 정리

  • 주성분(PC)
    → 데이터 분산을 설명하는 새로운 축

  • 고유값(Eigenvalue)
    → '해당 고유벡터 방향으로 데이터가 얼마나 늘어나는가'를 나타내는 값
    (해당 주성분이 설명하는 분산의 크기. 중요도)

  • 설명 분산 비율(Explained Variance Ratio)
    → 전체 정보 중 이 축이 설명하는 비율


PCA 알고리즘 수행 절차

  • 1 단계: 데이터 표준화(변수들의 스케일이 다르면 영향 받음)
  • 2 단계: 공분산 행렬 계산(변수들 간의 상관관계 구조 파악)
  • 3 단계: 고유값 분해(Eigen Decomposition)
    공분산 행렬의 고유값과 고유벡터 계산 → 고유값 내림차순 정렬 → 고유벡터 정렬
  • 4 단계: 주성분 결정 및 데이터 변환(원본 데이터를 선택된 k개의 주성분으로 형성된 새로운 공간으로 투영하여 k차원의 데이터셋 생성)

2.1.4. 주성분 개수 결정

  • 방법 1: 누적 설명 분산(Cumulative Explained)
    주성분들의 설명 분산 합이 전체 분산의 특정 임계값을 넘는 지점까지 선택
  • 방법 2: 스크리 플롯(Scree Plot)
    y축이 고유값(Eigenvalue)임.
    그래프의 기울기가 완만해지는 지점(Elbow Point)에서 주성분 개수 선택

2.1.5. PCA는 언제 쓰나?

  • 변수가 많고(과적합 위험)
  • 변수 간 상관이 높고(다중공선성)
  • 해석보다는 구조 파악 & 전처리가 목적일 때



2.2. t-SNE

고차원 데이터의 이웃 관계를 저차원에서 최대한 보존
주로 시각화 목적

2.2.1. PCA와 차이

  • PCA: 전역 구조 보존
  • t-SNE: 국소 구조(이웃 관계) 강조

📌 주의

  • 결과 축의 수치 자체는 해석 대상 아님
  • “그림용” 알고리즘




3. 군집화

3.1. 어떤 전략으로 숨은 그룹을 찾을 것인가?

군집화 알고리즘은 “무엇을 기준으로 묶느냐”에 따라 나뉜다.

3.1.1. 중심 기반(거리 기반)

  • 각 군집의 중심점 기준
  • 가까운 점끼리 묶음

📌 대표 알고리즘

  • K-Means

3.1.2. 밀도 기반(hot-place)

  • 데이터가 빽빽한 영역을 군집으로 인식
  • 희박한 영역은 노이즈 처리

📌 대표 알고리즘

  • DBSCAN
  • Mean-Shift

3.1.3. 계층 기반(덴드로그램)

  • 데이터 간 관계를 트리 구조로 표현
  • 병합(Bottom-up) 또는 분할(Top-down) 방식
  • 중복 x, 누락 x(MECE, Mutually Exclusive Collectively Exhaustive)
  • 시각적 해석 용이
  • 데이터 많으면 계산 느림

📌 대표 알고리즘

  • Hierarchical Clustering

3.1.4. 분포 기반(확률 기반, softmax)

  • 데이터가 확률적으로 여러 군집에 속함
  • 경계가 부드러움

📌 대표 알고리즘

  • GMM



3.2. K-Means

군집 내 데이터와 중심점 사이 거리 제곱합(Inertia)을 최소화

  • 동작 흐름

    • K개 중심점 초기화
    • 가장 가까운 중심으로 데이터 할당(유클리드 거리(=L2 거리) 이용)
    • 각 군집에 속한 데이터들의 평균값으로 중심점 재계산(이동)
    • 수렴할 때까지 반복
  • 장점👍

    • 빠르고 직관적
    • 단순해서 이해와 구현이 쉬움
    • 확장성이 높음(다양한 변형 알고리즘의 기초)
  • 단점👎

    • K를 미리 정해야 함
    • 초기 중심점을 무작위로 선택(init='random')시 실행할 때마다 결과 다름
    • 초기 중심점 위치가 결과에 영향 많이 줌
    • 이상치에 약함
    • 형태 민감(원형이 아니면 탐지 어려움)
    • 차원의 저주

### 3.2.1. 단점 보완 해결책: K-Means++** - 아이디어: "첫 중심점들은 서로 최대한 멀리 떨어지게 배치하자" - 동작 1. 첫 번째 중심점 무작위 선택 - 동작 2. 이후 중심점들은 기존 중심점들과 거리가 먼 데이터일수록 선택될 확률을 높게 설정 - 효과: - 수렴 속도 향상 - 지역 최소값 위험 감소 - 사용법: ```init='k-means++'``` (Scikit-learn 기본값이긴 함)

3.2.2. 최적의 군집 수(K) 정하기

K가 너무 작으면 과소적합. K가 너무 크면 과적합

  • 방법 1. 엘보우 기법(Elobow Method)
    • K값을 1부터 순차적으로 늘려가며 군집 내 오차 제곱합의 변화 관찰
    • 기울기가 완만해지는 지점을 최적의 K로 간주(가성비가 떨어지기 시작하는 지점)
    • 한계: 판단이 주관적
  • 방법 2. 실루엣 분석(Silhouette Analysis)
    • 개별 데이터가 자신의 군집과 얼마나 가깝고, 다른 군집과 얼마나 먼지 측정
    • 계산 요소:
      a(응집도. 군집 내 다른 데이터들과의 평균 거리. 작을수록 좋음)
      b(분리도. 가장 가까운 타 군집 데이터들과의 평균 거리. 클수록 좋음)
    • 실루엣 계수(s) = (b-a)/max(a, b) → 범위: -1 ~ 1
      max(a, b): a, b 중 큰 것으로 나누겠다는 의미
    • 해석:
      • 1에 가까울수록 이상적
      • 0에 가까울수록 경계선에 위치하여 소속이 모호
      • 마이너스면 잘못된 군집에 할당됨
    • 판단:
      • 평균 실루엣 계수가 가장 높은 K 선정
      • 개별 군집의 실루엣 폭이 균일해야 함



3.3. Mean-Shift

데이터 밀도가 가장 높은 방향으로 중심을 계속 이동

  • 장점👍
    • K 지정 필요 없음
    • 군집 모양 자유로움
    • 이상치에 상대적으로 덜 민감
  • 단점👎
    • bandwidth(h) 설정에 민감
    • 계산량 큼(복잡도: O(N2))
    • 차원의 저주

3.3.1. 핵심 원리

  • 1) 윈도우 설정
    • 임의의 데이터 포인트에서 h(bandwidth)를 갖는 윈도우(커널) 시작
  • 2) 평균 이동(Mean Shift)
    • 윈도우 내 데이터포인트들의 가중 평균 계산 → 중심 위치 이동(Mean Shift 벡터)
  • 3) 수렴까지 반복
    • 밀도가 더이상 증가하지 않을 때까지 2 과정 반복
  • 4) 군집 할당

3.3.2. 핵심 엔진

  • 커널 밀도 추정(KDE)

    • 밀도를 정량적으로 측정
    • 관측된 개별 데이터 포인트들 위에 커널 함수 중첩 후 합산 → 데이터 개수로 나눔
  • 커널 함수 & 대역폭

    • 커널 함수(Kernel Function)
      • 각 데이터 포인트 주변에 생성되는 가중치 함수
      • 원점을 중심으로 대칭이며 적분 값은 1
      • 일반적으로 가우시안 커널이 널리 사용
      • 중심점(데이터 포인트)에 가까울수록 높은 가중치, 멀수록 낮은 가중치 부여
    • 대역폭(Bandwith, h)
      • 커널 함수의 '폭'을 결정하는 가장 중요한 하이퍼파라미터
      • h가 작을수록 첨도가 큼(변동성 큰 밀도 함수. 과적합 경향)
      • h가 크면 첨도 작음(지나치게 단순. 과소적합)
      • 밀도 추정의 평활화 정도를 제어(가우시안 커널의 표준편차 역할 수행)



3.4. DBSCAN

Density Based Sparse Clustering of Application with Noise
다양한 분포의 데이터셋에서도 robust(견고)한 모델을 만들 수 있는 방법

밀도도 보지만, 희박한(sparse. 느슨한) 곳도 캐치

  • 장점👍

    • K를 사전에 지정할 필요 없음
    • 복잡한 기하학적 형태의 군집 탐색에 강함
    • 이상치 탐지에 강함
    • 군집 개수 자동 결정
  • 단점👎

    • 밀도가 다른 군집에는 약함(이때는 HDBSCAN이 대안)
    • 파라미터 민감성
    • 고차원 데이터의 어려움(차원의 저주)
    • 데이터 순서 의존성(경계 포인트가 어떤 클러스에 속할 것인가)

3.4.1. 밀도를 정의하는 두 가지 기준: Epsilon & MinPts

  • Epsilon(eps, ε)

    • 이웃을 정의하는 반경(한 포인트로부터의 최대 거리)
    • 로컬 영역의 크기 결정
  • MinPts(min_samples)

    • ε 반경 내에 필요한 최소 이웃 포인트 수(자신 포함)
    • 밀집도의 기준 결정

3.4.2. 프로세스

  • Step 1. 임의의 점(방문하지 않은 P) 선택 및 이웃 탐색
  • Step 2. 핵심 포인트 여부 판단
    • |N| ≧ MinPts, P를 핵심 포인트로 지정, 새로운 클러스터 C를 시작.
    • |N| < MinPts, P를 임시로 '노이즈'로 레이블링
  • Step 3. 클러스터 확장
    • P의 이웃 N에 있는 모든 점을 클러스터 C에 추가
    • N에 있는 점들 중 새로운 핵심 포인트가 있다면,
      그 포인트의 이웃들도 재귀적으로 탐색하여 클러스터에 추가
  • Step 4. 모든 점을 방문할 때까지 반복
    • 더이상 확장할 수 없을 때 클러스터 C가 완성
    • 방문하지 않은 다른 점을 선택하여 1단계부터 반복(다른 클러스터 찾기)

3.4.3. 최적의 ε를 찾기

  • k-거리 그래프(K-Distance Plot)
    • 모든 데이터 포인트에 대해 k-번째 최근접 이웃까지의 거리 계산
      (k는 MinPts와 동일하게 설정하는 것이 일반적)
    • 계산된 거리를 오름차순으로 정렬
    • 정렬된 거리 값을 그래프로 시각화
    • Elbow Point에서의 y값이 최적의 ε 후보



3.5. GMM(Gaussian Mixture Model)

데이터는 여러 개의 가우시안 분포가 섞여 만들어졌다고 가정

  • Soft assignment (확률적 소속)

    • 데이터가 특정 군집에 100 % 속하지 x, 각 군집에 속할 확률 계산
  • EM(Expectation-Maximization) 알고리즘 사용

  • 장점👍

    • 유연한 모델링(경계가 부드럽고 현실적)
    • 확률 해석 가능(데이터가 중첩된 경우에 탁월)
    • 높은 확장성(딥러닝과 결합하여 복잡한 고차원 문제 해결)
  • 단점👎 - 전통적 GMM

    • 이미지의 공간적, 문맥적 정보를 포착하기 어려움
      (복잡한 고차원 데이터에 직접 적용 시 성능 저하)
    • 해결(Deep GMM)
      • E-Step을 심층 신경망으로 대체

3.5.1. 핵심 파라미터

  • 평균: K개의 각 가우시안 분포의 중심 위치를 나타대는 벡터
  • 혼합 가중치: K개의 각 가우시안 분포가 전체 데이터에서 차지하는 사전 확률
  • 공분산: K개의 각 가우시안 분포의 형태와 방향성(퍼진 정도)을 결정하는 행렬

3.5.2. 최적의 파라미터 찾기: EM

  • Step 1. 파라미터 초기화
  • Step 2. Expectation(각 데이터의 군집 소속 확률 계산)
  • Step 3. M-Step: Maximization(확률을 가중치로 파라미터 업데이트)
    • 로그 우도 수렴?(최대화가 되었는가?)
      • No → Step 2로 다시 감
      • Yes → 완료
profile
R&D 분야의 경험을 토대로 커리어 확장에 도전중인 개발꿈나무입니다.

0개의 댓글