Principal Component Analysis (PCA)

‍이세현·2024년 5월 8일
1

Motivation

  1. Clustering
    • 복잡한 real-valued data point를 하나의 categorical variable로 요약하는 것
  2. Dimensionality reduction
    • 고차원 data를 단순화하는 방법
      • 고차원 data로 학습을 진행하면 overfitting 되기 쉽다.
    • Real valued vector를 낮은 차원의 data로 요약, 단순화하는 것

Data points의 차원이 dd 일 때

y=θTx then, x=[x1x2xd]y = \theta^Tx \text{ then, } x= \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_d \end{bmatrix}
  • dd 보다 작은 rr 차원으로 바꾼다.
  • 차원을 낮출 때 정보의 손실을 최소화 해야 한다.

Data Compression

Parameter θ\theta의 복잡도를 낮추는 정규화와 달리 데이터에 초점을 두고 xx의 차원을 줄인다.

  • 이때 Data의 분포가 넓은 방향으로 축소해야 한다.
  • 정보 손실이 적은 쪽으로 축소해야 한다.
  • 따라서 분산이 큰 축을 찾아야 한다. \rightarrow PCA
  • 이때 dd 차원의 Data를 가장 잘 설명하는 축 상위 rr개를 찾기만 하면 된다.

Principal Component Analysis problem formulation

  • Reduce from 2-dim to 1-dim: Projection error를 최소화하는 projection 할 방향 벡터 u(1)Rnu^{(1)} \in \mathbb{R}^n을 찾는다.
    • 방향 벡터: 낮은 차원의 축
  • Reduct from d-dim to r-dim: Proejction error를 최소화하는 projection 할 방향 벡터 u(1),u(2),,u(r)u^{(1)}, u^{(2)}, \cdots, u^{(r)}를 찾는다.

PCA의 Goal

  1. Points의 mean vector μ\mu와 공분산 행렬 \sum을 계산한다.
  2. \sum의 고유벡터와 고유값을 계산한다.
  3. 최상위 rr 개의 고유벡터를 선택한다.
  4. Points를 subspace로 투영한다.

Covariance

  • Variance and Covariance: 중심으로부터 points가 퍼진(spread) 정도
  • Variance: 1 차원에서 평균값으로부터 편차
  • Covariance: 2 차원에서 points 분포의 경향성
    • Covariance는 두 차원에서의 관계를 나타낸다.
    • 1 차원에서 Covariance는 variance와 같다.
    • 2 차원에서 points의 분포를 variance로 계산한다면 서로 정반대의 분포이더라도 동일한 값이 나오는 문제가 있다.
    • 고차원 데이터가 있을 때 차원 간의 관계를 찾기 위해 공분산을 사용한다.
    • jj 차원과 kk 차원의 Covariance qjkq_{jk}
      qjk=1Ni=1N(XijE(Xj))(XikE(Xk))q_{jk}=\frac{1}{N}\sum_{i=1}^{N}(X_{ij}-E(X_j))(X_{ik}-E(X_k))
    • 다차원 확장
    • Covariance matrix
      • x=[x1,,xn]Tx=[x_1, \cdots, x_n]^T: sample data, nn차원 column 벡터
      • C=E[(xmx)(xmx)T]C=E[(x-m_x)(x-m_x)^T]: n×nn \times n 행렬
      • <C>ij=E[(ximxi)(xjmxjT)]<C>_{ij}=E[(x_i-m_{xi})(x_j-m_{xj}^T)]: ii번째 성분과 jj번째 성분의 공분산
    • CC는 대칭 행렬이다.
      C=[C11C1nCn1Cnn]C=\begin{bmatrix} C_{11} & \cdots & C_{1n} \\ \vdots & \ddots & \vdots \\ C_{n1} & \cdots & C_{nn} \end{bmatrix}
      • 대각 원소는 분산이다.

고유값과 고유벡터

Mv=[m11m12m21m22][v1v2]=λvˉMv = \begin{bmatrix} m_{11} & m_{12} \\ m_{21} & m_{22} \\ \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \lambda \bar{v}
  • Eigenvector: 정방 행렬 MM을 곱하여 선형변환 했을 때 길이만 변하는 벡터 vˉ\bar{v}

    • 고유벡터는 크기만 달라지며 방향의 변화는 없다.
    • Mv=λvMv=\lambda v를 만족하는 0이 아닌 벡터여야 한다.
    • 행렬 MMλ\lambda에 대한 고유벡터
  • Eigenvalue: 정방 행렬 MM을 곱했을 때 벡터 vˉ\bar{v}의 길이 변화 λ\lambda

    • 행렬 MM의 고유값
    • 고유값으로 분산을 계산하여 PCA 계산에 활용한다.
    • 가장 큰 고유값은 분산이 가장 크다.
  • 고유값과 고유벡터는 없을 수도 있고 행렬의 차원(nn)에 따라 nn개까지 있을 수도 있다.

  • Example: M=[4235]M = \begin{bmatrix} 4 & 2 \\ 3 & 5 \end{bmatrix}

    • Mv=λvMv = \lambda v

    • (MλI)v=0(M-\lambda I)v = 0

    • (MλI)v(M-\lambda I)v의 역행렬이 존재한다면 v=(MλI)10v = (M-\lambda I)^{-1}0, v=0v=0으로 모순이다.

    • Eigenvector vv는 0이 될 수 없으므로 (MλI)=0(M-\lambda I) = 0이고 역행렬이 존재하지 않아야 한다.

    • det(MλI)=0\det(M-\lambda I)=0

      Mv=[4235][x1x2]=λvMv = \begin{bmatrix} 4 & 2 \\ 3 & 5 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \lambda v4x1+2x2=λx14x_1+2x_2=\lambda x_1
      3x1+5x2=λx23x_1+5x_2=\lambda x_2
      (MλI)v=0(M-\lambda I)v = 0(4λ)x1+2x2=0(4-\lambda)x_1+2x_2=0
      3x1+(5λ)x2=03x_1+(5-\lambda)x_2=0
      det(MλI)=0\det(M-\lambda I)=0
      4λ235λ=0\begin{vmatrix}4-\lambda & 2 \\ 3 & 5-\lambda\end{vmatrix}=0(λ7)(λ2)=0(\lambda-7)(\lambda-2)=0
    1. λ=2\lambda=2
      [3232][x1x2]=[00]\begin{bmatrix} -3 & 2 \\ 3 & -2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}
      • λ\lambda는 고유한 값이지만 고유값에 대응하는 고유벡터는 여러 개일 수 있다.
      • x1=23x2x_1=\frac{2}{3}x_2로, 방향은 정해져 있지만 크기는 달라질 수 있다.
    2. λ=7\lambda=7
      [2233][x1x2]=[00]\begin{bmatrix} -2 & 2 \\ 3 & -3 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}
      • x1=x2x_1=-x_2

Principal Component Analysis

데이터가 넓게 퍼진 분산값이 높은 축을 찾아 그 방향으로 projection하는 것
공분산 행렬 CC를 구하고, 고유값이 큰 것에 해당하는 고유벡터로 projection한다.

  • Input: xRD:D=x1,,xN\mathbf{x} \in \mathbb{R}^{\mathcal{D}}:\mathcal{D}={x_1,\dots,x_N}
    • 차원이 축소된 uxT=z=z1,,zK\mathbf{ux}^T = \mathbf{z} = z_1, \dots, z_K의 분산이 최대여야 한다.
    • 즉, Var(uxT)=uTVar(x)u=uTCuVar(\mathbf{ux}^T) = \mathbf{u}^TVar(\mathbf{x})\mathbf{u} = \mathbf{u}^TC\mathbf{u}를 최대로 하는 u\mathbf{u}를 찾아야 한다.
      • projection 된 ziz_i의 분산
        1ni(xiu)2\frac{1}{n}\sum_{i}(x_i\cdot \mathbf{u})^2
        =1n(xu)T(xu)=\frac{1}{n}(\mathbf{x}\mathbf{u})^T(\mathbf{x}\mathbf{u})
        =1nuTxTxu=\frac{1}{n}\mathbf{u}^T\mathbf{x}^T\mathbf{x}\mathbf{u}
        =uTCu=\mathbf{u}^TC\mathbf{u}
    • 위 식을 만족하는 u\mathbf{u}는 많을 수 있으므로 u=1|\mathbf{u}|=1 제약 조건을 걸어 라그랑지안 문제(조건부 최적화)로 해결한다.
  • Basis vector: U=[u1,,uk]\mathbf{U}=[\mathbf{u}_1, \dots, \mathbf{u}_k]
    • 벡터 공간을 형성하는데 사용되는 기초적인 벡터
    • Symmetirc matrix의 고유벡터는 직교하므로 ujTuj=0\mathbf{u}_j^T\mathbf{u}_j=0이 성립한다.
  • New Data representation: zj=ujxz_j=\mathbf{u}_j\cdot\mathbf{x}
    • h(x)=[z1,,zK]Th(\mathbf{x})=[z_1,\dots,z_K]^T
    • h(x)=UTxh(\mathbf{x})=\mathbf{U}^T\mathbf{x}

PCA 과정

  1. 데이터 x\mathbf{x}의 공분산 행렬 CC를 구한다.
  2. Cu=λuC\mathbf{u}=\lambda \mathbf{u}
    • 공분산 행렬의 λ\lambda에 대한 고유벡터 u\mathbf{u}를 찾는다.
    • u\mathbf{u}는 데이터를 나타낼 새로운 축으로 x\mathbf{x}NN차원이라면 u\mathbf{u}NN 차원이다.
  3. λ\lambda가 큰 순서대로 u\mathbf{u}를 정렬한다.
    • λ\lambda는 해당 축 ui\mathbf{u}_i이 데이터를 얼마나 잘 나타내는지 의미한다.
profile
Hi, there 👋

0개의 댓글

관련 채용 정보