오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-17 10:18
관리 메뉴

우노

[ML] 주성분 분석(PCA, Principal Component Analysis)이란? 본문

AI/Machine Learning

[ML] 주성분 분석(PCA, Principal Component Analysis)이란?

운호(Noah) 2020. 11. 16. 17:20

주성분 분석(PCA, Principal Component Analysis)

  • 데이터의 차원이 커지면 커질수록 계산 복잡도와 정확도가 떨어진다.
  • 다차원 데이터를 설명할 수 있는 핵심 축을 찾는다면, 작은 차원으로 모든 데이터를 설명할 수 있다.
  • 데이터를 작은 차원으로 줄이는 방법 중 한 가지가 PCA이다.

차원 축소

  • 차원 축소 방법

    • 데이터가 아래와 같이 구성되어 있을 때, 어떤 차원으로 축소할 수 있을까?

  • 방법 1) 아무 차원이나 지운다.

    • 차원을 지운 후, 나머지 데이터를 사영시켰을 때, 분산을 최대화 하는 축을 사용한다.

  • 방법 2) 기존의 축이 아닌 새로운 축을 찾는다 ⇒ 주 성분 찾기

    • 기존의 축이 아닌 새로운 축에 사영해, 분산을 최대로 하는 축을 구한다.
    • 축은 어떻게 구하는가?
      • 아무 축이나 찾고, 분산을 계산해
      • 축, 분산 loss function에서 Garadient Descent를 계산한 뒤
      • 분산이 커지는 쪽으로 축을 움직인다.

주성분 찾기

  • 분산 구하기

    • 기존 방식

      • 점들을 구한 축에 사영한 뒤
      • 사영된 점과 점들의 평균 간 거리를 통해 분산을 구했다.
      • 하지만, 사영 된 점과 평균 간 거리를 어떻게 구할 수 있을까?
    • 새로운 방식

      • 주성분 축 방향 벡터를 b 라고 하고, b를 단위벡터라고 한다.
      • 평균에서 사영 되기 전의 점까지의 벡터를 a 라고 한다면
      • a 벡터와 b 벡터의 내적 = |a|cosΘ * |b| = 거리
      • 이렇게 구할려면, 계속 점들의 평균으로부터 벡터를 구한 뒤 내적을 계산해야하므로 귀찮다.
    • 더 쉬운 방식

      • 점들의 평균으로부터 벡터를 구한 뒤 내적을 계산하는 작업을 줄이고자
      • 점들의 평균을 원점으로 옮겨서 계산한다.
      • 이렇게 되면, 벡터 내적을 통해 원점에서 평균 간 거리를 바로 구할 수 있다.
  • 두 번째 주성분 찾기

    • 첫 번째 주성분 벡터를 찾았다면
    • 기존 데이터에서 첫 번째 주성분을 제거한다.
      • 첫 번째 주성분을 제거하면 점들은 해당 벡터와 수직인 축에 사영된다.
    • 이후, 해당 벡터와 수직인 축에 사영된 점들의 분산을 계산한다.
      • 이 때, x를 계산해야한다.
      • x = a - c
      • c = b x a ⋅ b

3차원 예시

  • 순서
    • 1) PC1 찾기
    • 2) PC1의 직교평면에서 PC2 찾기
    • 3) PC1과 PC2에 모두 직교하는 벡터 = PC3
    • 각 주성분 축에서 분산값을 기록한 뒤, 일정한 분산 값 이상을 가지는 축만 선택한다.
Comments