데이터 분석/확률 통계
PCA in a nutshell
yessen
2023. 1. 4. 13:25
728x90
# 본 내용은 "피쳐 엔지니어링 제대로 시작하기" 및 "공돌이의 수학 노트"를 참고하여 작성되었습니다
6장 차원 축소: PCA로 데이터 팬케이크 납작하게 만들기
- 6장 내용: 모델 기반 피처 엔지니어링
- 직관:
- 데이터 행렬의 열 - 모든 피처 벡터의 생성 범위
(열 공간이 전체 피처 수보다 작다면, 몇 피처는 다른 피처의 선형 조합이 됨) - 선형 종속 피처의 연산/저장 공간 낭비를 막기 위해 주성분 분석은 데이터를 저차원화 함
- 피처 중 일부가 다른 피처와 중복값을 가지면, 즉 선형 조합이면 (b)의 모양처럼 보일 것
- 모델에 전달할 피처의 수를 줄이길 원하면 피처 1과 피처 2 사이에 대각선을 놓아
새로운 피처 1.5를 만들 수 있음
- 핵심 아이디어는 원시 피처 공간에 포함된 정보를 적절하게 요약해 중복된 피처를 적은 수의 피처로 대치하는 것
- 수학적으로 '정보의 적절한 요약'은 새로운 데이터 덩어리가 가능한 원래의 볼륨을 유지해야 하므로, 볼륨을 측정할 방법이 필요한데, 그 도구로 '분산'이 최대가 되게 하는 방법을 찾음
- 데이터 행렬의 열 - 모든 피처 벡터의 생성 범위
<일반적인 PCA 구하는 과정>
- 데이터 행렬에서 공분산 행렬의 의미
- 각 피쳐(열)의 변동이 얼마나 닮았나?
- sample(row)과 column(feature, 평균 0)으로 이루어진 데이터 행렬의 내적이 공분산 행렬(XTX)
- 즉, XTXij는 i번째 feature와 j번째 feature의 변동이 닮은 정도
- sample 수가 많아지면 수가 커지는 것을 방지하기 위해 n(표본은 n-1)으로 나눠줌 → 공분산 행렬
- 이 임의의 feature 쌍을 선형 변환(shearing)한 것으로 아래와 같은 산점도를 얻을 수 있음
- 위와 같은 2차원의 산점도에서 1차원에 정사영(projection)시켜 차원을 감소 시킬 때
고유 벡터(eigen vector)에 정사영하는 것이 분산이 가장 크게 됨 → principal axis - 그 다음 이 벡터에 직교하는 새로운 벡터를 추가하며 계속 찾을 수 있음
- N 차원의 데이터는 N개의 eigen vector가 나옴 → k 차원으로 데이터를 감소시키고자 한다면, eigen value가 큰 k개의 eigen vector가 이루는 평편에 데이터를 정사영
* 과정 정리
- correlated hi-d data (데이터 행렬, feature = 0)
- 분산이 가장 높은 차원을 구하기 위한 지점을 찾음
- 공분산 행렬 구하고 고유값 분해(eigen decomposition)
- eigen vectors + eigem values
- 가장 큰 eigen value를 가진 eigen vector 고르기
- 고른 eigen vector에 data 정사영하기
- uncorrelated(projected) low-d data 얻음
<특이값 분해를 통한 PCA 구현 과정>
- 그러나 교재에서 PCA의 가장 쉬운 구현은 특이값 분해라고 설명, 즉 데이터 행렬의 SVD
- n X d 차원의 데이터 행렬 X의 특이값 분해(SVD)를 통해 PCA를 구하면
Z = XW = XVk = UΣVTVk = UkΣk
W: X의 왼쪽 특이벡터, XTX의 고유벡터, Vk = d x k 차원 → W = Vk
X = UΣVT (특이값 분해)
* 과정 설명
- 데이터 행렬의 중심점 이동
C = X - 1μT
(1은 모든 값이 1인 열벡터, μ는 X의 행들의 평균을 포함하는 열벡터) - SVD 계산
C = UΣVT - 주성분 찾기. 처음 k개의 주성분은 V의 처음 k개 칼럼. (오른쪽 특이 벡터)
- 데이터 변환. 변환된 데이터는 U의 처음 k개 칼럼
PCA 활약 (예시. MNIST data)
- 8x8 이미지 데이터를 로드하여,
- 각 이미지가 나타내는 레이블을 확인한 다음
- PCA 변환기를 데이터셋에 피팅
- 주성분의 수(k)는 분산을 80% 설명하는 수준에서 자동 선택
- 그 결과를 시각화 하면 위 그림과 같음
- 처음 100개 projection images에서, 첫 3개의 주성분이 전체 분산의 약 40% 정도,
- 비슷한 숫자가 가깝게 위치한 것을 확인. 0-4-6 / 1-7 / 3-9
- 겹친 부분이 상당히 있어 선형 분류기로 분류하는 것은 어려울 수 있고, 3개의 주성분이 충분하지 않을 수 있음
- 그럼에도 64차원이 3차원으로 캡쳐되는 것은 확인 가능
< 화이트닝과 ZCA >
- PCA의 주축은 서로 직교하는ㄴ 성질이 있어, 변환된 피쳐들 사이에는 상관관계가 없어짐
- 즉 피쳐 쌍 서로 간 내적은 0이며, 그 결과는 특이값의 제곱을 포함하는 대각행렬 → ℓ2norm
- 피쳐 스케일을 1로 정규화하는 것을 신호 처리 분야에서 '화이트닝'이라고 함
- 화이트닝의 결과는 자기 자신과 단위 상관관계를 가지며, 서로는 0의 상관관계를 가지는 피처의 집합
- 수학적으로 화이트닝은 PCA 변환 x 역특이값
- 즉, PCA + whitening은 Wwhite = VkΣk-1
- Zwhite = XVkΣk-1 = UΣVTVkΣk-1 = Uk
- 화이트닝은 PCA와 독립적 (차원 감소 없이 진행 가능)
- 단순 PCA projection은 주성분 기저의 새로운 피처 공간을 생성하므로 길이만 표현하며,
- 주성분 간 곱은 방향과 길이를 제공
- 별도를 곱을 통해 회전 가능 (원래의 피처 공간으로)
- ZCA는 가능한 원시데이터에 가깝게 화이트닝된 데이터를 생성함
PCA 고려 사항과 한계
- 하이퍼 파라미터 k 선택 (경험적 선택 또는 계산)
- 변환이 복잡하고 결과 해석 어려움
- 계산 비용이 많이듦 (SVD에 의존)
- 배치 업데이트나 데이터 샘플 스트리밍 방식에서는 수행하기 어려움
- 원시 카운트(단어 수, 음악 재생 횟수, 영화 감상 횟수)에는 적용하지 않는 것이 좋음 (outlier에 민감)
사용 예
- 데이터에서 정보 제거 - 계산 비용이 적지만 정확도는 떨어질 수 있음
- 시계열 데이터에서 이상 탐지 - 볼륨이나 이상 트래픽의 진단 탐지
- 재무 모델링 - 요인 분석(Factor Analysis)의 한 유형 - 상관관계를 패턴, 설명 가능 요소 찾기 (주식)
- ZCA는 이미지 학습 전처리