본문 바로가기
Machine Learning/Terms

Fisher's linear discriminant

by 임은천 2020. 12. 24.

Fisher's linear discriminant (FLD) 는 차원 축소 기법 중 하나로 클래스 분류 문제에서 적용 가능하다. 두 개의 클래스를 가진 문제로 생각했을 때, 다음의 조건을 만족하는 각 클래스의 대표 직선을 찾는 문제를 해결한다.

  1. 두 그룹 간 중심의 거리가 멀어야 함.
  2. 개별 그룹 내의 분산이 작아야 함.

수식 앞 부분에 대한 설명은 여기를 참조하자. adnoctum.tistory.com/442

 

Fisher's linear discriminant 원리

  Fisher's linear discriminant (FLD) 는 데이터를 여러 변수들의 선형결합으로 표현하였을 때 서로 다른 그룹을 잘 구분할 수 있게 해 주는 coefficient 를 찾는 방법이다. 그림으로 보자면 다음과 같다. 위

adnoctum.tistory.com

다만, 여기 수식 중 (27)번에 대한 설명에 대한 보완과 빠진 부분을 추가하려고 한다.

$S_B$는 두 그룹 간(Between-class) covariance이고, $S_W$는 개별 그룹 내(Within-class) covariance이다.

J(w)는 FLD의 직선을 최적화 하는데 이용되는 Object function으로 이 값을 최소화(최대화가 아니라)하기 위해서는 J(w)를 0으로 두고, 오른쪽 식을 w에 대해서 편미분 한다. 분수 형태로 되어 있으므로, 미분은 다음의 형태를 따른다.

 

$${f(x) \over g(x)}' = {f'(x)g(x)-f(x)g'(x) \over g(x)^2} \tag{1} $$

 

이를 이용해서 J(w)를 단순화 시키면 다음과 같이 된다.

 

$$ 0 = \frac{{( \frac{d}{d w} w^TS_Bw )} w^TS_Ww - {w^TS_Bw ( \frac{d}{d w} w^TS_Ww )}}{(w^TS_W w)^2} \tag{2} $$

 

이는 벡터 미분에 의해서 다음과 같이 된다.

$$ 0 = ( 2S_Bw)w^TS_Ww - w^TS_Bw ( 2S_Ww) \tag{3} $$

$$ w^TS_Bw ( 2S_Ww) = ( 2S_Bw)w^TS_Ww \tag{4} $$

$$ w^TS_Bw (S_Ww) = w^TS_Ww (S_Bw) \tag{5} $$

 

이 상태에서 괄호로 된 부분을 제외하고 정리하여 고윳값 λ로 표기하면 다음과 같이 generalized 고윳값 문제로 표현된다.

$$ S_Bw = λ S_Ww \tag{6} $$

 

만약 $S_W $ 의 역행렬이 존재하면, 표준 고윳값 문제로 변환할 수 있다. 즉,

$$ S_W^{-1} S_Bw = λw \tag{7} $$

 

$S_B = (M_2-M_1)(M_2-M_1)^T $ 로 정의했으므로, $(M_2-M_1)$ 벡터와 같은 방향을 가리키는 어떠한 벡터 x에 대해서 생각해보면,

$$S_Bx =(M_2-M_1)(M_2-M_1)^Tx=a(M_2-M_1)\tag{8} $$

, where $a = (M_2-M_1)^Tx$

로 단순화 할 수 있다. 즉, $(M_2-M_1)$ 벡터와 같은 방향을 가리키는 벡터에 대해서는

 

$$S_W^{-1}[a(M_2-M_1)]=a[S_W^{-1}(M_2-M_1)]\tag{9} $$

 

형태가 되어서, 고윳값 λ는 a(scalar 이므로)로 나타내지고, 고유벡터 w는 ${w=S_W^{-1}(M_2-M_1)}$ 가 된다.

 

Main image is taken from: sthalles.github.io/fisher-linear-discriminant/

댓글