PCA 밑바닥부터 구현하기: 데이터 압축 및 신호 유지
요약
데이터 차원 축소 기법인 PCA(주성분 분석)의 원리와 구현 과정을 설명합니다. 데이터의 분산이 가장 큰 방향을 찾아 정보를 유지하며 차원을 줄이는 핵심 메커니즘을 다룹니다.
핵심 포인트
- 데이터의 분산이 최대인 주성분 축을 찾아 차원 축소 수행
- 중심화, 공분산 행렬, 고유값/고유벡터 계산을 통한 구현 과정
- 시각화, 데이터 압축, 노이즈 제거 및 학습 속도 향상에 활용
- PCA는 데이터의 선형 구조만을 포착한다는 특징이 있음
100개의 특징(features)이 있는데 시각화가 어렵거나 학습 속도가 느린가요? PCA는 대부분의 정보를 담고 있는 몇 가지 방향을 찾아내고 나머지는 버립니다. 그리고 이를 2D 산점도(scatter)를 통해 직접 확인할 수 있습니다. 여기 브라우저에서 실제로 계산되는 PCA가 있습니다.
📉 주성분 축 확인하기 (상관관계 슬라이더를 드래그하세요): https://dev48v.infy.uk/ml/day14-pca.html
핵심 아이디어: 분산이 큰 방향으로 회전하기
PCA는 데이터가 가장 많이 퍼져 있는 방향을 가리키는 새로운 축인 주성분 (principal components) 을 찾아냅니다. PC1은 가장 긴 확산 방향이며, PC2는 그 다음(PC1에 수직인 방향)이며, 이런 식으로 이어집니다. 상위 몇 개만 유지하면 최소한의 손실로 데이터를 압축할 수 있습니다.
실제 계산 방식
- 데이터를 중심화 (Center) 합니다 (평균을 뺍니다).
- 공분산 행렬 (covariance matrix) 을 구축합니다 (특징들이 함께 어떻게 변하는지 나타냄).
- 행렬의 고유벡터 (eigenvectors) (성분 방향)와 고유값 (eigenvalues) (각 성분이 보유한 분산의 양)을 찾습니다.
- 고유값 순으로 정렬하여 상위 k개를 선택하고, 그 위로 투영 (project) 합니다.
데모에서는 데이터 구름을 관통하는 PC1/PC2를 그리고 "설명된 분산 (variance explained)" 백분율을 보여줍니다. PC1으로 축소했을 때 얼마나 많은 정보가 살아남는지 확인해 보세요.
언제 사용해야 할까
시각화 (고차원 → 2D), 압축, 노이즈 제거 (denoising), 학습 속도 향상. 먼저 특징들의 스케일을 조정(Scale)하세요. PCA는 오직 선형 (linear) 구조만을 포착한다는 점을 기억해야 합니다.
🔨 페이지에서 직접 구현됨 (중심화 → 공분산 → 고유값/고유벡터 → 투영): https://dev48v.infy.uk/ml/day14-pca.html
MachineLearningFromZero의 일부입니다. 🌐 https://dev48v.infy.uk
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기