본문 바로가기

Programming/Data mining

머신러닝 알고리즘 정리 (PCA, LDA)

1. PCA (Principal Component Analysis)

Unsupervised learning의 일종으로, independent variable들 사이에 correlation을 없애고, 숨은 latent variable을 찾아내거나, 노이즈(noise)를 줄일 때 사용한다.

PCA를 돌린 후 나오는 값들은 다음의 의미를 가진다.
PC(eigenvector) : 기존 변수들로 이루어진 선형 벡터이며, 기존의 변수들을 설명한다.
PC loadings: 기존 변수들과 PC사이의 correlation 값으로, 해당 PC로 기존의 변수들을 얼마나 잘 설명하는 지 percentage로 보여준다.
PC score: 각각의 PC에 대해서 재 생성된 observation data들이다. (latent variable로 활용 가능)

PCA example (https://www.e-sciencecentral.org/articles/pubreader/SC000013731)

Assumption (가정)
Linearity: independent variable들 사이에 관계가 Linear하다고 가정한다.
regression과 달리 분포에 대한 가정은 없다.

Objective Function(목적함수)
X^(T)X : covaraince variance matrix of data.
Solution: Eigenvalue decomposition
데이터의 분산을 eigenvalue decomposition 함으로써, variance를 maximize시키는 principal component를 찾는다.

Parameters (A)
그럼 이때 best fitting 시키는 line의 parameter들은 어떻게 찾을 수 있을까?
X(n*p)가 independent variable들로 이루어진 행렬이고,
T(n*k)가 PC score 즉, 각각의  PC축에 대해 사영된 independent variable들이라고 했을 때, 
T=XA를 만족시키는 A(p*k)를 찾는다.

 

2. LDA (Linear Discriminant Analysis)

LDA는 Classification과 Dimensional Reduction(차원 축소)까지 동시에 사용하는 알고리즘이다. LDA에서의 핵심은 classification을 할 때 클래스 내의 분산은 최소가 되도록 하되, 클래스끼리의 분산은 최대가 되도록 한다는 것이다. 이 말은 즉슨, LDA를 통해 하나의 축으로transformation(변형)된 데이터들이 같은 클래스 내에는 그 값의 차가 최소가 되도록하며, 다른 클래스끼리는 그 값이 차가 크게 하는 축을 찾는 것이다. 이 때, 이러한 한 선으로 사영을 나타내는 함수는 아래와 같다.
Y = XW ~ ( Y~IR(N*1) / X~IR(N*D) / W~IR(D*1) ) or y(j) = W^(T) * x(j) (where j=1...N)

LDA의 원리 (출처: https://slidesplayer.org/slide/16218884)

Assumption (가정)
Conditionally normally distributed, 조건적으로 정규 분포를 따른다.

예를 들면, 각 클래스 내에서의 normaility를 가정한다.
이와 같은 가정은 gaussian distribution이 아니면  fail한다는 limitation을 가지게 한다.

Objective Function (목적 함수)
Objective function은 mean seperability(클래스 간의 차이가 얼만큼 나는가?)에서 scatter within class(클래스 내에 분산이 얼마정도 인가?)를 나눈 값이 된다. 따라서 이를 maximize(최대화)하는 것이 우리의 solution이 되는 것이다.
mean separability = (u1_ - u2_)^(2) = W^(T)S(between)W
scatter within class = S1^(2) + S2^(2) = W^(T)S(within)W
따라서 objective function: J = ( W^(T)S(B)W / W^(T)S(w)W )

Parameter (W)
데이터 x를 y로 사영시키는 projecting vector W를 찾는 방법은 objective function을 maximize하는 값임을 이용하여 w에 대한 J(objective function)의 partial derivative를 구한 다음, generalized eigenvalue decompostion을 이용하여 S(W)^(-1)S(B)W = JW 를 만족시키는 W를 찾는다.
LDA를 이용하면 총 (c-1)개의 projection vector를 찾을 수 있는데 이는 S(B) 계산 과정에서 모든 mean의 합이 0이기 때문에 rank 하나를 잃기 때문이다. ( S(B): at most (c-1) rank, S(W): full rank (invertable 하니까) => S(W)^(-1)S(B): (c-1) rank

3. PCA와 LDA의 비교

LDA: supervised learning
데이터의 클래스의 차이가 분산보다 평균의 차이에 있을 때, LDA는 PCA보다 뛰어난 성능을 보여준다.
3D plot으로 데이터를 표현할 때, LDA는 PCA보다 뛰어난 성능을 보여준다.

PCA: unsupervised learning
데이터의 클래스의 차이가 평균보다 분산의 차이에 있을 때, PCA는 LDA보다 뛰어난 성능을 보여준다.