파이썬을 이용하여 커널법 배우기/커널 주성분 분석 이론

testwiki
둘러보기로 이동 검색으로 이동

커널 주성분 분석은 선형 주성분 분석과 마찬가지로 특징 공간상에서 목적함수 J1 를 최소화하는 단위 벡터를 찾는 문제이다. 사상 함수 ϕ() 를 통해 임의의 고차원 (F) 으로 확장된 샘플 집합을 𝐗F=[ϕ(𝐱1,,ϕ(𝐱l)]F×l 라 하면, 특징 공간상의 공분산 행렬은 다음과 같이 계산 가능하다.

𝐂F=k=1l(ϕ(𝐱k)𝐦F)(ϕ(𝐱k)𝐦F)

여기서 𝐦F는 특징 공간상에서의 샘플 평균이다.

𝐦F=1lk=1lϕ(𝐱k)

Matlab 및 Numpy를 비롯한 다양한 행렬관련 언어로 쉽게 구현하기위해 행렬표현법을 이용하여 식 ()를 나타내면 다음과 같다.

𝐂F=𝐗F𝐇𝐇𝐗F

여기서 𝐇=𝐈1l𝟏l,l, 𝐇=𝐇 이고,

𝐈𝟏n,n 는 각각 크기가 n×n 인 단위 행렬, 모든 원소가 1인 행렬이다. 이제 선형 주성분 분석과 마찬가지로 위 식의 고유값으로 주성분을 구할 수 있다.

그러나 식 ()은 임의의 고차원 특징 공간상에 존재하기 때문에 고유값을 직접 구할 수 없다.

   Kernel method 설명!!!!!!!!!

특징 공간상의 고유벡터 𝐯F 는 샘플들의 선형 결합으로 나타낼 수 있다는 가정을 통해 문제를 해결할 수 있다.

𝐯F=𝐗F𝐇α

식 ()의 고유값 문제는 다음과 같이 표현 가능하다.

𝐂F𝐯F=λ𝐯F

이제 각 항에 𝐇𝐗F 을 곱하고, 식 ()을 대입하면 다음을 얻을 수 있다.

𝐇𝐗F𝐗F𝐇𝐇𝐗F𝐗F𝐇α=λ𝐇𝐗F𝐗F𝐇α𝐇𝐗F𝐗F𝐇α=λα𝐇𝐊𝐇α=λα

여기서 𝐊 는 커널 행렬(kernel matrix)이며, 이 행렬의 i 열, j 행 값 Kij 는 다음과 같이 구할 수 있다.

Ki,j=ϕ(𝐱i)ϕ(𝐱j)=k(𝐱i,𝐱j)

위 식에서 k(,) 는 커널 함수(kernel function)을 의미하며 Mercer's Theorem을 만족하는 커널 함수를 이용할 수 있다.

이제 식 ()에서 고유값 문제로 α 를 구할 수 있다. 추가적으로 𝐯F𝐯𝐅=1 을 만족시키기 위해 다음과 같은 정규화가 필요하다.

𝐯F𝐯F=α𝐇𝐊𝐇α=λαα=1α=αλ

이제 𝐂F 의 고유값 𝐯F𝐯F=𝐗F𝐇α 로 나타낼 수 있다.

선형 주성분 분석과 같이 커널 주성분(kernel principal components)은 q 개의 선택된 고유값을 𝐕F=[𝐯1F,,𝐯qF] 라 하면, 이 주성분으로 특징 샘플 ϕ(𝐲) 를 사상하면 PVF(ϕ(𝐲)) 를 얻을 수 있다.

PVF(ϕ(𝐲))=𝐕F(ϕ(𝐲)𝐦F)=𝐀T𝐇𝐗F(ϕ(𝐲)1l𝐗F𝟏l,1)=𝐀T𝐇(𝐊𝐲1l𝐊𝟏l,1)

여기서 𝐀=[α1,,αq] 는 식 :eq:`eq-kpca-norm` 에서 고유값이 큰 순에 대응하는 q 개의 선택된 고유벡터이다. 𝐊𝐲𝐗Fϕ(𝐲) 를 나타내며 커널 함수를 이용하여 구할 수 있다. 원래 샘플 복원은 다음과 같이 수행하는데,

ϕ(𝐲)=𝐕F𝐕F(ϕ(𝐲)𝐦F)+𝐦F

복원 결과는 여전히 특징 공간상에 존재하게 된다. 이 복원된 샘플의 입력 공간상의 값 𝐲 는 pre-image 문제로 해결 가능하다.