-
[LG AiMERS] Part 2-3 Principal Component Analysis(PCA)카테고리 없음 2024. 2. 13. 13:55
본 강의는 LgAimers 신진우 교수님의 강의 내용을 바탕으로 작성된 것임을 밝힙니다
Principle component analysis, 주성분 분석은 차원축소를 위한 방법 중 가장 널리 알려진 방법이다. 해당 방법에 관해 matrix decomposition과 eigien value, vector 등에 내용을 기반으로 알아보자.
Problem: Curse of Dimension
High dimensional data은 Curse of Dimension이라는 용어도 있듯이, Machine Learning모델이 잘 작동하지 않는 문제가 있기에 차원 축소에 관한 문제는 매우 주요한 문제 중 하나이다.
특히 여러 종류의 데이터와 feature를 이용할 수록 주요한 factor들을 뽑아 더 작은 차원에서 학습을 하는 것이 용이하다.
이렇게 더 적은 차원(subspace)으로 차원을 축소시켜주는 알고리즘 중 하나가 PCA이다.
Background
Data Variance
위의 그림에서, x와 y feature에 관한 variance(분산)을 보자.
우선 분산은 데이터가 얼마나 넓게 퍼져있는지에 관한 척도로, 편차의 제곱합의 평균으로 정의된다.
정의를 굳이 적용하지 않더라도, x의 분산이 y보다 클 것임을 알 수 있다. 이는 데이터를 구분하는데 x가 y가 보다 주요함을 의미한다.
즉, variance는 해당 지표가 얼마나 유의미한 지표인지를 알려주는 척도이다.
Covariance
Covariance, 공분산은 두 데이터 간의 관계를 나타는 것이다. 다시 말해 두 확률 변수의 선형관계를 나타는 것으로, 두 편차의 곱의 평균으로 정의된다.
이렇게 분산과 공분산을 정의하게 되면 아래의 data matrix가 있을때(N개의 sample, D개의 feature)
우리는 단순히 해당행렬을 전치시킨 것과의 행렬곱을 통해 covaraince matrix를 만들 수 있다.
해당 행렬은 var를 대각성분으로, covariance를 남은 원소로 가진다.
PCA Algorithm
pca 알고리즘을 살펴보면 아래와 같다.
보면, 1,2를 통해 데이터를 standardization 시키고, 이후 s3를 통해 가장 큰 eigen value를 가지는 vector를 구하고(이는 variance를 가장 크게 만드는 vector일 것이다), 해당 spcae에 projection 시킨후 원상복귀시키는 과정이다. 이 때 D는 원래의 dimension, M은 목표하는 dimension이다.
이 과정을 그림으로 살펴보면 아래와 같다.
Proof: maximize variance == taking largest eigen value?
우리가 PCA를 통해 얻고자하는 목표는 바로 variance를 maximize하는 M차원의(목표차원) subspace를 구하는 것이다.
그렇다면 위에서처럼 largest eigen value를 가지는 vector를 취하는 것이 maximize var와 동치일까?
동치이며 이는 증명가능하다.
귀납증명을 이용가능한데, 증명은 아래와 같다.
우선 base에 관한 증명은 아래와 같다.
1D일때, 우리는 variance over n date에 관한 정의를 V1이라고 하자.
이후 이는 라그랑지안 mulplier를 이용한 최적화 문제로 바뀌고, 이는 Eigen value를 구하는 식과 같아짐을 볼 수 있다.
비슷한 방법으로 k에 관해서도 아래와 같이 증명가능하다.
How to compute eigen vector?
그럼 eigen vector는 어떻게 구할것인가?
Eigen value decompositon, 즉 대각화를 구하는 과정을 사용해도 괜찮고, SVD를 사용해도 된다.
각각의 과정에 관한 자세한 설명은 아래와 같다.
In High dimension?
매우 큰 차원에 관해서, 즉, 데이터의 수보다 feature의 수가 매우 많은 이미지 같은 데이터셋에서는 어떻게 PCA를 적용하는 것이 좋을까 이때는 covariance matrix를 D*D로 만드는 것이 아닌 N*N, 즉, 데이터의 수의 차원으로 만들어서 계산한다.