[2-4] KFDA & KPCA

KFDA

좌측의 기저에 사영하였을 때는 데이터의 분포가 겹치어 오분류가 많이 발생하게 됩니다. 우측의 기저는 확실하게 분류가 되는데, 우측의 기저를 찾는 것이 LDA 의 목적입니다. PCA 와 LDA 가 둘 다 기저를 찾는 것은 공통적이지만, PCA 는 최대의 분산을 보존하는 기저를 찾는 것이고 LDA 가 잘 분류하는 기저를 찾는 것입니다.

LDA

두 범주를 잘 분류하기 위해선 Between Distance 는 최대화 하며, Within-Class 는 최소화합니다. 즉 이를 만족하는 기저를 찾는 것입니다. PCA 에서는 파랑색 선, LDA 에서는 노란 선을 찾는 것이 목적입니다.

m1 은 첫번째 범주의 중심점이고, m2 는 두번째 범주의 중심점 입니다.

k 번째 범주의 분산은 다음과 같습니다. 분자는 Between Class 를 측정하니깐 크며, 분모는 Within Class 를 측정하니깐 작아야, 분류를 할 수 있습니다.

위 최적화 문제를 풀면

KFDA

이를 x 를 훨씬 더 큰 차원으로 매핑하면서 확장하면 KFDA 가 됩니다.

최적화 하고자 하는 목적함수는 LDA 와 동일합니다.

KPCA

회귀분석과 대부분의 분류 알고리즘에서는 데이터를 선형분리 가능하다는 가정이 필요했습니다. 회귀분석과 대부분의 분류 알고리즘에서는 데이터를 선형분리 가능하다는 가정이 필요했다. 심지어 인공신경망의 기초격인 퍼셉트론에서조차 선형분리 가능을 전제로 알고리즘이 동작했다. 이러한 문제점들을 PCA, LDA같은 차원 축소 기법으로 해결했으나 데이터의 모양이 비선형인 경우는 문제가 달라집니다.

PCA, LDA 같은 알고리즘은 차원축소를 위한 선형 변환 기법을 이용하기 때문에, 선형으로 분리 불가능한 데이터에 대해서는 적당하지 않습니다.

이러 문제를 극복하기 위해 커널 PCA를 사용할 수 있습니다.

SVM에서의 커널 기법을 떠올려보면, 원래의 d차원 데이터를 k차원으로 (더 큰 차원으로) 매핑하는 하나의 함수를 생각할 수 있습니다. 이 때, 커널을 활용하여 데이터를 고차원으로 변환하는 비선형 매핑을 수행한 뒤, 일반적인 PCA를 통해 데이터들이 선형 분리가 가능한 저차원 공간으로 다시 투영하는 아이디어를 생각해보자. 이 아이디어가 커널 PCA의 기본적인 생각입니다.

하지만 이런 방법은 굉장히 비효율적이다.

이 문제를 효율적으로 해결하기에 앞서 잠시 앞으로 돌아가 볼 필요가 있다. 우리는 앞서 PCA에서 피처간의 관계를 공분산 행렬로 표현하였다. 공분산은 피처간의 내적을 통해 표현이 되기도 한다. 즉, 두 피처간의 벡터의 내적이란 두 데이터의 유사도를 의미하기도 한다는 것이다.

그렇다면 두 벡터 사이를 내적하는 부분의 함수를, 데이터를 고차원으로 mapping하는 커널 함수로 대체하는 것은 어떨까? 아마도 두 데이터의 상관관계를 우리가 정한 kernel function으로써 나타내는 것이 가능해질 것이고, 유사도라는 개념을 더욱 범용적이고 고차원적인 방법으로 사용이 가능해진다.

벡터의 내적을 이용하여 상관관계를 구하게 되면, 그 관계의 모양은 linear한 선형적 의미를 가진다. 하지만 커널을 사용한다면, 그 커널과 맞는 선형적 의미를 가지게 된다. 당연히 가우시안 커널을 사용한다면 방사형의 관계를 가지게 될 것이다.

다시 kernel PCA로 돌아와보자. PCA는 주어진 데이터셋을 linear 벡터 형식의 주성분 분석을 통해 새로운 basis에 projection 시키는 과정이라고 할 수 있다. 하지만 만약 여기서 데이터의 주성분 분석이 kernel의 형태라면, 기존의 linear projection이 nonlinear한 projection으로 바뀌게 될 것이다. 그 결과, 우리가 분류하고자 하는 데이터셋은 커널의 성질을 띤 채로 non-linear하게 구분이 된다.

Last updated