AI Study/머신러닝(ML)

PM 혼자 AI 기초 공부: 머신러닝 - 주성분 분석(PCA)

Brownee 2025. 12. 30. 15:33
반응형

1. 소개: 주성분 분석

주성분 분석(Principal Component Analysis, PCA)은 고차원 데이터를 저차원으로 압축하는 가장 기본적이면서도 강력한 차원 축소 기법입니다.

고객 데이터가 100개의 특성(나이, 소득, 구매 이력, 클릭 패턴 등)을 가지고 있다면, 이를 모두 분석하는 것은 매우 복잡하고 시간이 많이 걸립니다. PCA는 이 100개의 특성 중에서 가장 중요한 정보를 담고 있는 5~10개의 '핵심 특성'으로 압축해줍니다.

AI/ML 학습에서 PCA가 중요한 이유

  1. 학습 속도 향상: 데이터 차원이 줄어들면 모델 학습 시간이 대폭 단축됩니다
  2. 과적합 방지: 불필요한 노이즈를 제거하여 모델이 일반화를 더 잘하도록 돕습니다
  3. 시각화 가능: 고차원 데이터를 2D/3D로 압축하여 사람이 이해할 수 있게 만듭니다
  4. 저장 공간 절약: 데이터 압축을 통해 메모리와 저장 공간을 효율적으로 사용합니다

2. 핵심 개념: 5가지 키 포인트

2.1 분산 최대화가 핵심이다

  • PCA는 데이터가 가장 많이 퍼져있는 방향(분산이 큰 방향)을 찾습니다. 데이터가 많이 퍼져있다는 것은 그 방향에 중요한 정보가 많다는 의미입니다.

2.2 주성분은 새로운 좌표축이다

  • 원래 변수들을 선형 조합하여 만든 새로운 축입니다. 첫 번째 주성분(PC1)이 가장 많은 정보를, 두 번째 주성분(PC2)이 그 다음으로 많은 정보를 포함합니다.

2.3 고유값과 고유벡터가 수학적 기반

  • 고유벡터: 주성분의 방향을 나타냅니다
  • 고유값: 해당 주성분이 설명하는 분산의 크기를 나타냅니다
  • 고유값이 클수록 그 주성분이 더 중요합니다

2.4 정보 손실은 불가피하다

  • 100차원을 10차원으로 줄이면 일부 정보는 손실됩니다. 하지만 주요 정보(보통 90% 이상)는 유지할 수 있습니다.

2.5 변수 스케일링이 필수다

  • 키(cm)와 몸무게(kg)처럼 단위가 다른 변수들은 반드시 표준화(standardization)해야 합니다. 그렇지 않으면 단위가 큰 변수가 결과를 지배하게 됩니다.

3. 이미지

PCA의 차원 축소.(이미지 출처: https://www.analyticsvidhya.com/blog/2016/03/pca-practical-guide-principal-component-analysis-python/)

 


 

4. PCA 쉽게 이해하기

📸 사진 압축으로 이해하기

100장의 회사 단체 사진을 가지고 있다고 상상해보세요. 각 사진은 4K 해상도(수천 개의 픽셀)입니다.

PCA가 하는 일:

  1. 100장의 사진에서 공통적으로 나타나는 패턴(배경, 얼굴 구조, 조명 등)을 찾습니다.
  2. 이 패턴들을 "템플릿"으로 만듭니다(이것이 주성분입니다).
  3. 각 사진을 "템플릿 1을 70%, 템플릿 2를 20%, 템플릿 3을 10% 섞은 것" 으로 표현합니다.
  4. 결과적으로 수천 개의 픽셀 대신 3개의 숫자로 각 사진을 표현할 수 있습니다.

5. 등장 배경

PCA는 칼 피어슨(Karl Pearson)이 1901년에 제안했습니다. 당시 통계학자들은 다음과 같은 문제에 직면했습니다:

해결하고자 한 문제:

  • 차원의 저주(Curse of Dimensionality): 변수가 많을수록 데이터 분석이 기하급수적으로 어려워짐
  • 다중공선성: 변수들 간의 높은 상관관계로 인한 분석의 불안정성
  • 시각화의 한계: 3차원 이상의 데이터를 사람이 이해하기 어려움
  • 계산 복잡도: 고차원 데이터 처리에 필요한 막대한 계산량

현재 목적을 달성했는가?

  • 성공적으로 달성한 부분:
    • 선형 관계를 가진 데이터에서는 여전히 가장 효율적인 방법
    • 빠른 계산 속도와 수학적으로 명확한 해석
    • 표준 전처리 단계로 자리잡음
  • 한계가 드러난 부분:
    • 비선형 데이터: 복잡한 곡선 형태의 관계를 포착하지 못함
    • 국소 구조 보존: 전역적 분산만 고려하고 지역적 패턴은 놓칠 수 있음
    • 해석의 어려움: 주성분이 원래 변수의 조합이라 직관적 이해가 어려움
  • 현재는 PCA의 한계를 극복하기 위해 Kernel PCA (비선형 변환), t-SNE, UMAP (비선형 시각화), Autoencoder (딥러닝 기반) 등이 개발되었습니다.

6. 활용 사례

6.1 얼굴 인식 시스템 (Eigenfaces)

  • 문제: 얼굴 이미지는 픽셀 수가 매우 많아 (예: 64x64 = 4,096개) 직접 비교하면 계산량이 막대합니다.
  • PCA 적용:
    • 수천 장의 얼굴 이미지에서 공통 패턴(eigenface)을 추출
    • 4,096차원을 50~100차원으로 축소
    • 약 93%의 높은 인식률 달성
    • 실시간 얼굴 인식이 가능해짐
  • 실제 결과: Yale Face Database 실험에서 약 93%의 인식 성공률을 보였으며, 얼굴 인식의 기초 기술로 자리잡았습니다.

6.2 이미지 압축

  • 문제: 고해상도 이미지는 저장 공간과 전송 대역폭을 많이 차지합니다.
  • PCA 적용:
    • 13,233장의 64x64 얼굴 이미지 데이터셋(LFW)을 처리
    • 4,096차원을 577차원으로 축소 (약 86% 압축)
    • 원본 정보의 99%를 유지하면서 압축 달성
  • 실무 활용: 웹 서비스에서 이미지 로딩 속도 개선, 모바일 앱의 데이터 사용량 절감

6.3 고객 세그멘테이션

  • 문제: 전자상거래 플랫폼에서 고객 데이터가 100개 이상의 특성(구매 이력, 클릭 패턴, 검색 키워드 등)을 가집니다.
  • PCA 적용:
    • 100개 특성을 10~15개 주성분으로 축소
    • 주요 고객 행동 패턴 4~5가지 식별
    • K-means 클러스터링으로 고객 그룹 분류
  • 비즈니스 임팩트:
    • 타겟 마케팅 효율성 30% 향상
    • 추천 시스템 정확도 개선
    • A/B 테스트 시간 단축

7. Key Words

  • 주성분(Principal Component)
    • 원래 변수들의 선형 조합으로 만들어진 새로운 변수. 데이터의 분산을 최대로 설명하는 방향을 나타냅니다.
  • 고유값(Eigenvalue)
    • 각 주성분이 설명하는 분산의 크기. 고유값이 클수록 해당 주성분이 더 중요합니다.
  • 고유벡터(Eigenvector)
    • 주성분의 방향을 나타내는 벡터. 원래 변수들에 대한 가중치를 포함합니다.
  • 설명 분산 비율(Explained Variance Ratio)
    • 각 주성분이 전체 데이터 분산의 몇 퍼센트를 설명하는지 나타내는 지표. 주성분 개수를 결정하는 데 사용됩니다.
  • 차원 축소(Dimensionality Reduction)
    • 고차원 데이터를 저차원으로 변환하는 과정. PCA는 대표적인 차원 축소 기법입니다.
  • 공분산 행렬(Covariance Matrix)
    • 변수들 간의 상관관계를 나타내는 행렬. PCA는 이 행렬의 고유값 분해를 통해 주성분을 찾습니다.
  • 특이값 분해(SVD, Singular Value Decomposition)
    • 행렬을 세 개의 행렬로 분해하는 방법. 현대 PCA 구현에서 공분산 행렬 대신 직접 사용되어 수치적으로 더 안정적입니다.
  • Scree Plot
    • 고유값을 크기 순서대로 나타낸 그래프. 'elbow point'를 찾아 적절한 주성분 개수를 결정합니다.
  • Feature Extraction
    • 기존 변수를 조합하여 새로운 변수를 만드는 기법. PCA는 모든 변수를 사용하는 특징 추출 방법입니다.
  • 표준화(Standardization)
    • 변수들의 스케일을 평균 0, 표준편차 1로 맞추는 전처리 과정. PCA 적용 전 필수적입니다.

8. 한계 및 극복 방법

[PCA의 주요 한계]

  1. 선형성 가정
    • 한계: PCA는 선형 변환만 수행하므로 비선형 관계를 포착하지 못합니다.
    • 예: 원형이나 나선형 데이터 구조를 제대로 표현하지 못함
    • 극복 방법:
      • Kernel PCA: 커널 함수를 사용하여 비선형 관계 포착
      • Autoencoder: 딥러닝을 활용한 비선형 차원 축소
  2. 국소 구조 보존 실패
    • 한계: 전역적 분산만 고려하여 데이터의 지역적 클러스터 구조를 놓칠 수 있습니다.
    • 극복 방법:
      • t-SNE: 국소적 이웃 관계를 보존하는 비선형 기법 (시각화에 강점)
      • UMAP: t-SNE보다 빠르며 국소+전역 구조를 모두 보존
  3. 해석의 어려움
    • 한계: 주성분이 원래 변수의 선형 조합이라 직관적 의미 파악이 어렵습니다.
    • 극복 방법:
      • Factor Analysis 같은 회전 기법 적용
      • 도메인 전문가와 주성분의 의미 해석
  4. 이상치에 민감함
    • 한계: 극단값(outlier)이 주성분 방향에 큰 영향을 미칠 수 있습니다.
    • 극복 방법:
      • Robust PCA 사용
      • 사전에 이상치 제거 또는 처리
  5. 스케일 의존성
    • 한계: 변수의 단위에 따라 결과가 크게 달라집니다.
    • 극복 방법:
      • 반드시 표준화(standardization) 적용
      • 상황에 따라 정규화(normalization) 사용

[최신 연구 동향 (2024~2025)]

  1. Deep Learning 기반 방법론
    • Variational Autoencoder (VAE)
    • Contrastive Learning을 활용한 차원 축소
  2. 하이브리드 접근법
    • PCA + UMAP 조합: 먼저 PCA로 20,000차원 → 50차원, 그 다음 UMAP으로 2D 시각화
    • PCA + Autoencoder 조합: 이상 탐지(anomaly detection)에서 효과적
  3. 대규모 데이터 처리
    • Incremental PCA: 메모리에 모두 올리지 않고 배치 단위로 처리
    • Sparse PCA: 희소 행렬에 최적화

9. 퀴즈

질문 1: 개념 이해

Q: PCA가 데이터를 축소할 때 가장 중요하게 고려하는 기준은 무엇인가?

A: **분산(variance)**입니다. PCA는 데이터의 분산을 최대로 보존하는 방향을 주성분으로 선택합니다. 분산이 크다는 것은 데이터가 그 방향으로 많이 퍼져 있다는 의미이며, 이는 곧 중요한 정보가 그 방향에 많이 포함되어 있음을 뜻합니다.


질문 2: 실무 적용

Q: 100개의 특성을 가진 고객 데이터에 PCA를 적용하여 차원을 축소하려고 합니다. 몇 개의 주성분을 선택해야 할까요?

A: 누적 설명 분산 비율을 기준으로 결정합니다. 일반적으로:

  • 90~95% 기준: 일반적인 분석/모델링에 사용
  • 99% 기준: 정보 손실을 최소화해야 하는 경우

예를 들어, 처음 15개 주성분이 전체 분산의 90%를 설명한다면, 100차원을 15차원으로 축소할 수 있습니다. Scree Plot을 그려서 "elbow point" (기울기가 크게 꺾이는 지점)을 찾는 것도 좋은 방법입니다.

추가로 고려할 점:

  • 모델 성능: 교차 검증으로 최적 개수 탐색
  • 계산 자원: 더 적은 차원이 학습 시간 단축
  • 비즈니스 목표: 해석 가능성이 중요하면 적은 수 선택

질문 3: 전처리

Q: PCA를 적용하기 전에 반드시 해야 하는 전처리 과정은 무엇이며, 왜 필요한가?

A: **표준화(Standardization)**가 필수입니다.

이유:

  • PCA는 분산이 큰 변수를 더 중요하게 취급합니다
  • 변수의 단위나 스케일이 다르면 (예: 나이 0~100, 소득 0~100,000,000) 큰 스케일의 변수가 결과를 지배하게 됩니다
  • 표준화는 모든 변수를 평균 0, 표준편차 1로 변환하여 공정한 비교를 가능하게 합니다

표준화 공식:

z = (x - μ) / σ
여기서 μ는 평균, σ는 표준편차

예외 상황:

  • 모든 변수가 같은 단위이고 스케일이 비슷한 경우 (예: 픽셀 값 0~255)
  • 변수의 스케일 자체가 의미를 가지는 경우

10. 참고 자료

학술 자료

  1. Pearson, K. (1901). "On Lines and Planes of Closest Fit to Systems of Points in Space"
  2. Hotelling, H. (1933). "Analysis of a complex of statistical variables into principal components"

온라인 리소스

  1. IBM - What Is Principal Component Analysis (PCA)? - 2025년 11월
  2. 데이터 사이언스 스쿨 - PCA
  3. ratsgo's blog - 주성분분석
  4. 위키백과 - 주성분 분석

실습 튜토리얼

  1. Scikit-learn 공식 문서 - PCA
  2. ScienceNewsToday - Dimensionality Reduction: PCA, t-SNE, UMAP Explained - 2025년 8월

비교 연구

  1. "차원 축소 알고리즘 비교 (PCA, T-SNE, UMAP)" - velog
  2. Varma, A. (2024). "Dimensionality Reduction: PCA, t-SNE, and UMAP" - Medium, 2024년 7월
반응형