데이터 분석/확률 통계

PCA in a nutshell

yessen 2023. 1. 4. 13:25
728x90

# 본 내용은 "피쳐 엔지니어링 제대로 시작하기" 및 "공돌이의 수학 노트"를 참고하여 작성되었습니다

 

6장 차원 축소: PCA로 데이터 팬케이크 납작하게 만들기

  • 6장 내용: 모델 기반 피처 엔지니어링
  • 직관:
    • 데이터 행렬의 열 - 모든 피처 벡터의 생성 범위
      (열 공간이 전체 피처 수보다 작다면, 몇 피처는 다른 피처의 선형 조합이 됨)
    • 선형 종속 피처의 연산/저장 공간 낭비를 막기 위해 주성분 분석은 데이터를 저차원화 함

    • 피처 중 일부가 다른 피처와 중복값을 가지면, 즉 선형 조합이면 (b)의 모양처럼 보일 것
    • 모델에 전달할 피처의 수를 줄이길 원하면 피처 1과 피처 2 사이에 대각선을 놓아
      새로운 피처 1.5를 만들 수 있음
    • 핵심 아이디어는 원시 피처 공간에 포함된 정보를 적절하게 요약해 중복된 피처를 적은 수의 피처로 대치하는 것
    • 수학적으로 '정보의 적절한 요약'은 새로운 데이터 덩어리가 가능한 원래의 볼륨을 유지해야 하므로, 볼륨을 측정할 방법이 필요한데, 그 도구로 '분산'이 최대가 되게 하는 방법을 찾음



<일반적인 PCA 구하는 과정>

  • 데이터 행렬에서 공분산 행렬의 의미
  1. 각 피쳐(열)의 변동이 얼마나 닮았나?
  2. sample(row)과 column(feature, 평균 0)으로 이루어진 데이터 행렬의 내적이 공분산 행렬(XTX)
  3. 즉, XTXij는 i번째 feature와 j번째 feature의 변동이 닮은 정도
  4. sample 수가 많아지면 수가 커지는 것을 방지하기 위해 n(표본은 n-1)으로 나눠줌 → 공분산 행렬
  5. 이 임의의 feature 쌍을 선형 변환(shearing)한 것으로 아래와 같은 산점도를 얻을 수 있음
  6. 위와 같은 2차원의 산점도에서 1차원에 정사영(projection)시켜 차원을 감소 시킬 때
    고유 벡터(eigen vector)에 정사영하는 것이 분산이 가장 크게 됨 → principal axis
  7. 그 다음 이 벡터에 직교하는 새로운 벡터를 추가하며 계속 찾을 수 있음
  8. N 차원의 데이터는 N개의 eigen vector가 나옴 → k 차원으로 데이터를 감소시키고자 한다면, eigen value가 큰 k개의 eigen vector가 이루는 평편에 데이터를 정사영

* 과정 정리

PCA 과정, 출처: Victor Lavrenk

 

  1. correlated hi-d data (데이터 행렬, feature = 0)
  2. 분산이 가장 높은 차원을 구하기 위한 지점을 찾음
  3. 공분산 행렬 구하고 고유값 분해(eigen decomposition)
  4. eigen vectors + eigem values
  5. 가장 큰 eigen value를 가진 eigen vector 고르기
  6. 고른 eigen vector에 data 정사영하기
  7. 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 (특이값 분해)

* 과정 설명

  1. 데이터 행렬의 중심점 이동
    C = X - 1μT
    (1은 모든 값이 1인 열벡터, μ는 X의 행들의 평균을 포함하는 열벡터)
  2. SVD 계산
    C = UΣVT
  3. 주성분 찾기. 처음 k개의 주성분은 V의 처음 k개 칼럼. (오른쪽 특이 벡터)
  4. 데이터 변환. 변환된 데이터는 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 고려 사항과 한계

  1. 하이퍼 파라미터 k 선택 (경험적 선택 또는 계산)
  2. 변환이 복잡하고 결과 해석 어려움
  3. 계산 비용이 많이듦 (SVD에 의존)
  4. 배치 업데이트나 데이터 샘플 스트리밍 방식에서는 수행하기 어려움
  5. 원시 카운트(단어 수, 음악 재생 횟수, 영화 감상 횟수)에는 적용하지 않는 것이 좋음 (outlier에 민감)


사용 예

  1. 데이터에서 정보 제거 - 계산 비용이 적지만 정확도는 떨어질 수 있음
  2. 시계열 데이터에서 이상 탐지 - 볼륨이나 이상 트래픽의 진단 탐지
  3. 재무 모델링 - 요인 분석(Factor Analysis)의 한 유형 - 상관관계를 패턴, 설명 가능 요소 찾기 (주식)
  4. ZCA는 이미지 학습 전처리