본문 바로가기

개념 정리

PCA 의 적용

손으로 쓴 숫자 글씨 데이터 집합을 바탕으로 PCA를 데이터 압축에 사용하는 사례

공분산 행렬의 각 고유 벡터들은 원래의 D 차원 공간상의 벡터다. 따라서 고유 벡터들을 원래의 데이터 포인트와 같은 크기의 이미지로 표현할 수 있다. 

특정 M 값을 선택하는 것과 연관되어 있는 왜곡도 J 는 M+1 부터 D 까지의 고윳값을 합산하는 것으로 주어진다. 

데이터 벡터 x의 PCA 근삿값을 다음의 형태로 적을 수 있다.

여기서 다음의 관계식을 활용

이는 u 의 완전성에서부터 기인하는 것, 이 결과는 데이터 집합을 압축한 것에 해당한다. 왜냐하면 각 데이터 포인트들에 대해서 D 차원의 벡터 xn 을

를 성분으로 가지는 M 차원 벡터로 치환하였기 때문이다. M 의 값이 작을수록 압축 정도는 커지게 된다. 

PCA 기법을 데이터 전처리 과정에도 적용할 수 있다. 이 경우의 PCA 의 목적은 데이터 집합을 적절하게 변환해서 데이터의 특정 성질들을 표준화하는 것이다. 

뒤따르는 패턴 인식 알고리즘들을 데이터 집합에 성공적으로 적용하기 위해서는 이 과정이 매우 중요할 수 있다. 

일반적으로 원 변수들이 서로 다른 유닛에서 측정되었거나 아니면 매우 다른 변동성을 가지고 있을 때 이러한 전처리 과정을 사용하게 된다.

예를 들어, 오래된 믿음 데이터 집합의 경우 일반적으로 분출 시간 사이의 간격이 분출이 일어난 시간의 길이에 비해 몇 단위가 넘게 더 크다. 앞에서 이 데이터에 K 평균 알고맂므을 적용할 때는 먼저 각각의 변수들에 대해 선형적 재척도화를 시행해서 각각의 변수들이 0 평균과 단위 분산을 가지도록 했다. 이는 데이터의 표준화라고 알려진 전처리 방법이다.

표준호된 데이터의 공분산 행렬은 다음 성분들을 가지게 된다.

시그마는 x의 표준 편차다. 이를 원 데이터의 상관 correlation 행렬이라고 한다. 

하지만 PCA를 사용하면 0 평균과 단위 분산을 가지면서도 각 변수들 간의 상관관계는 더 줄일 수 있는 방식의 정규화를 시행할 수 있다. 먼저 고유 벡터식을 다음 형태로 적는다.

L은 람다 성분들로 가지는 D*D 의 대각 행렬이며, U는 각각의 열이 u 인 직교 행렬이다. 

그 다음으로는 각 데이터 포인트 x 에 다음의 변환을 적용한다.

여기서 x- 는 표본 평균이다. 집합 y는 0 평균을 가지게 될 것이며, 그 공분산은 단위 행렬이 될 것이다. 그 이유는 다음 때문이다.

이 연산을 일컬어 화이트닝 whitening 또는 구체화 sphereing 라고 한다. 

고차원 데이터에 대한 PCA

PCA 를 적용하는 몇몇의 경우 데이터 포인트의 숫자가 차원수보다 작은 경우가 있다.

예를 들어, 수백만 차원(이미지의 각 픽셀에 대해 여러 채널이 존재한다고 할 경우)을 가지는 이미지 데이터 수백 장에 PCA 를 적용할 수 있다. N < D 인 경우에 D 차원 공간상에서 포인트 N 개의 집합에 대해 정의할 수 있는 부분 공간의 차원수는 가장 클 경우에도 N-1 이다. 따라서 N-1 보다 큰 M 값을 이요해서 PCA 를 적용하는 것은 별로 효용이 없다.

실제로 PCA 를 시행하면 최소한 D - N + 1 개의 고윳값들이 0 값을 가진다는 것을 알 수 있다.

이는 고윳값 0에 해당하는 고유 벡터들의 방향에 대해서는 데이터 집합들이 0 분산을 가지게 된다는 의미다. 게다가 D^3 에 비례하는 계산 비용은 PCA 를 직접 적용하는 것은 계산적으로 실행 불가능하다.

이 문제를 다음과 같이 해결할 수 있다.

우선 n 번째 행이 

으로 주어지는 (N*D) 차원의 행렬 X를 정의하자, 이 경우 공분산 행렬을

로 적을 수 있다. 그리고 이에 해당하는 고유 벡터식은 다음이 된다.

양변의 앞에 X를 곱하면 다음을 얻게 된다.

v = Xu 를 정의, 다음을 얻을 수 있다.

이는 N*N 차원 행렬 N^-1XX^T 의 고유 벡터식에 해당한다. 이 행렬이 원래의 공분산 행렬과 같은 N-1 개의 고윳값을 가진다는 것을 알 수 있다. 

따라서 D^3 이 아닌 N^3 의 비용으로 풀 수 있다. 

고유 벡터를 찾아내기 위해서 위 식의 양 변에 X^T 를 곱한다.

이로부터 X^Tv 가 고윳값에 해당하는 S의 고유 벡터임을 알 수 있다. 

하지만 이 고유 벡터들은 정규화되어 있지 않다. 적절한 정규화를 결정하기 위해서는

를 상수로 이용해서 u = 1 이 되도록 재척도화를 시행해야 한다. 이는 v 가 단위 길이로 정규화되었다는 가정 하에 다음과 같다.

요약하자면 이 방법을 적용하기 위해서는 먼저 XX^T 를 계산한 후 이 행렬의 고유 벡터와 고윳값을 찾고 여기에 위 식을 적용해서 원 데이터 공간에서의 고유 벡터를 계산해야 한다.

'개념 정리' 카테고리의 다른 글

K 평균 집단화  (0) 2022.11.17
혼합 모델과 EM  (0) 2022.11.16
PCA 2  (0) 2022.11.16
커널 선형 차원 축소  (0) 2022.11.16
주성분 분석 Principal Component Analysis, PCA  (1) 2022.11.16