소품집

[ML/DL] PCA, SVD, Linear Discriminant Analysis 본문

AI

[ML/DL] PCA, SVD, Linear Discriminant Analysis

sodayeong 2020. 5. 1. 02:18

기저, 좌표계


  • 기저(Basis), 좌표계
    • 벡터공간 V에 대하여 임의의 벡터집합 S가 서로 1차독립이면서 V를 생성하면 S를 V의 기저라고 함
    • 1차 독립 (선형 독립)
      • 즉, 서로가 선형곱으로 표현되면 안 되겠다! → v1으로 v2를 생성할 수 있게 되니까
    • ex) 2-dimensional 좌표계 (x축, y축)
      • V1=(1,0), V2 =(0,1) V1과 V2는 서로 1차 독립이면서, 좌표계의 모든 벡터를 1차 결합(선형 결합)을 통해 표현가능
      • 벡터의 '길이'는 0이 아니면 괜찮음!!

  •  행렬 A에 대하여 Ax=λx를 만족할 때, 위 정의에 대해 '기학적 의미해석'을 해보자
  • 행렬 A가 x에 대한 '확대/축소'를 가하는 연산자
    • 선형변환에는 확대/축소. 회전 등이 가능한데, 확대/축소만 가하는경우 x는 고유벡터가 됨
  • 확대/축소하는 '비율'이 고유값이 됨

- 고유값, 고유벡터를 사용함으로써, 해당 기저의 고유공간에서 확대/축소 변환만으로 이해하고 응용가능

 

고유값 구하는 법

 

 

행렬 계수 (Rank)


  • Column Rank (열 개수)
    • 선형독립인 열 벡터의 최대 개수
  • Row Rank (행 계수)
    • 선형독립인 행 벡터의 최대 개수
  • 행렬의 Rank 예시

 

 

 

EigenValue Decomposition


    • Matrix Factorization 기법 (조건: n개의 1차독립인 고유벡터)
    • N X N 크기의 정방행렬 (Square Matrix) A에 대하여, 3개의 행렬(및 벡터)의 내적으로 나타낼 수 있음

 

 

SVD


Singular Value Decomposition (SVD)

  • M x N 크기의 행렬 A에 대하여, 3개 행렬의 내적으로 나타낼 수 있음

 A = UΣVT에서 U, V는 직교행렬, Σ는 대각행렬이므로 Ax는 x를 먼저 VT에 의해 회전시킨 후 Σ로 스케일을 변화시키고 다시 U로 회전시키는 것임을 알 수 있다.

 

  • SVD 계산 예시 
    • 목표: 우변의 각 행렬 계산

(공부중)

 

 

 

 

SVD 종류


실제로는 Full SVD 보단, 축약된 버전(reduced SVD)이 많이 사용 됨

thin SVD

thin SVD는 Σ 행렬의 아랫부분(비대각 파트, 모두 0)과 U에서 여기에 해당하는 부분을 모두 제거합니다. 이렇게 U와 Σ를 줄여도 UsΣsVT로 A를 원복할 수 있습니다.

compact SVD

compact SVD는 ΣΣ 행렬에서 비대각파트뿐 아니라 대각원소(특이값)가 0인 부분도 모두 제거한 형태입니다. 여기에 대응하는 UU와 VV의 요소 또한 제거합니다. 다시 말해 특이값이 양수인 부분만 골라낸다는 뜻입니다. 이렇게 UU와 ΣΣ, VV를 줄여도 UrΣrVTrUrΣrVrT로 AA를 원복할 수 있습니다.

 

truncated SVD

truncated SVD는 ΣΣ 행렬의 대각원소(특이값) 가운데 상위 tt개만 골라낸 형태입니다. 이렇게 하면 행렬 AA를 원복할 수 없게 되지만, 데이터 정보를 상당히 압축했음에도 행렬 AA를 근사할 수 있게 됩니다.

source : https://ratsgo.github.io/from frequency to semantics/2017/04/06/pcasvdlsa/

 

 

 

 

SVD 활용


  • Truncated SVD를 활용하여 이미지 압축 (화질 내리기 및 메모리 절약)   
    • 가로:세로 길이를 반전시키기 위해 90도 회전 후 적용
    • 또한 Truncated SVD를 하기전에 PCA(주성분 분석) 가능

 

 

PCA (주성분분석)


Principal Component Analysis (주성분 분석)

  • 즉, 데이터의 패턴을 잘 표현해주는 '최적의 feature 조합'을 찾는 것
  • 그래서, Feature selection 혹은 Feature dimension reduction을 위해 쓰임

 

 

 

PCA는 최소한의 loss를 가지고 정보를 압축합니다.

덫 붙혀 설명하자면 데이터의 분산(variance)을 최대한 보존하면서 서로 직교하는 축을 찾아 고차원 공간의 표본들을 선형 연관성이 없는 저차원 공간으로 변환하는 기법입니다.

 

 

 

 

 

PCA 구하는 방법


  1. 데이터들의 '평균'(중심)으로 원점을 가정
  2. 데이터들에 대한 공분산 행렬, 고유값, 고유벡터 구함
  3. 고유벡터 기반(관점)으로 데이터를 보면, 가장 큰 분산을 가지게 됨

Feature가 m개일 경우, 공분산 행렬은 m by m 행렬이 되어 서로 연관있는 feature pair들을 파악할 수 있게 됨.

이에 대한 고유값, 고유벡터를 얻는 것은, 결국 correlation이 존재하는 feature들에 대해 기저를 확보하는 작업

고유벡터를 기저라고 가정하고, 데이터를 보게되면 correlation이 컷던 feature pair들의 관점으로 보게 되어 분산이 커짐

 

 

 

PCA 정리


  • PCA도 이미지 압축 등의 분야에서 쓰일 수 있음
  • '공분산'을 매우 중요한 척도로 여기므로, 분산이 작은 것을 중요하게 여겨야 하는 데이터/어플리케이션에는 적합하지 않음
  • 데이터들의 분산이 직교하지 않는 경우에는 적합하지 않음 → 서로 직교하는 축을 찾아 저차원으로 만드는 PCA의 특성 때문

  • 데이터 feature dimension(차원)이 큰 경우, 사람이 판단할 경우 직관적으로 판단하기 어려운데, PCA등을 사용하면 feature selection에 도움을 받을 수 있음
  • PCA와 SVD 모두Classifier 가 아니다.
    • PCA와 SVD의 용도, 활용범위가 무엇인지 조사해보자.
    • (수정중)

 

 

 

 

 

Linear Discriminant Analysis


선형판별 분석

  • 클래스 간 분산(Inter-class scatter)과 클래스 내 분산(Intra-class scatter)의 비율을 최대화하는 방식으로 Feature dimension (차원의 저주)축소
  • 임의의 vector(LDA에 의해 생성)에 projection 했을 때 클래스들의 판별을 더 잘 할 수 있게 해줌

 

위의 사진 두 장의 차원 축소 이미지를 보고, 어떤 것이 클래스의 구별성이 더 좋을지 판단해 볼건데요.

먼저 1번 이미지의 답은 2번, 2번 이미지의 답은 1번 입니다.

 

 

위와 같은 더 좋은 차원 축소를 할 수 있는 기본 개념으로는

  • 분리될 class간의 각각의 평균의 거리가 멀수록
  • 각 class안에서의 분산은 작을수록

즉!! 클래스 간의 중심거리는 크게, 같은 클래스 내에서는 응집도를 크게해주는 것이 LDA의 목표입니다.

 

 

 

class A와 B가 있습니다. 두 벡터 1,2 가 각각 있구요.

두 클래스를 더 잘 설명해주는 벡터가 무엇인지 생각해 봐야하는데, 사실 이것만 보고 판단하기는 어렵습니다. 왜냐, test set에서 데이터가 클래스 A,B에 속한다는 보장은 없고, 성능평가는 train set이 아닌 test set으로 판단하게 되기 때문입니다.

따라서 train set만 주어져있는 상황에서 판단할 때에는 두 클래스의 중심 사이를 최대화 해주는 벡터가 클래스를 더 잘 설명해준다는 벡터라 할 수 있습니다. 

 

수식 (두 개의 클래스 c0, c1이 있다 가정)

Test set에 대해 더 잘 맞출 수 있도록 해야하기 때문에 클래스 중심 간 거리를 최대화 함

 

 

 

Linear Discriminant Analysis 정리


  • 지금까지 설명한 LDA는 2개의 클래스를 가정하고 있지만, 3개 이상 클래스에 대한 버전도 있음
  • LDA 용도
    • 클래스들 간의 분류가 용이한 다른 feature 축으로 변환/축소
    • 당연히, 분류(classifier)에 적용 가느
  • LDA의 한계
    • 각 클래스의 '중심'에 데이터가 몰려있다는 가정을 두고 있으므로, 비선형으로 분포된 데이터에는 적합하지 않음
  • PCA와 LDA 비교
  •  

LDA : 구분짓는 축을 찾아 분류기에 적용할 수 있음. 가로, 세로 축 말고 새로운 축을 찾는 게 목표

PCA: 클래스를 구분하지 않고 클래스를 잘 나타내는 축을 찾음

공통으로는 둘 다 feature selection을 할 수 있음.

728x90
Comments