LDA (Linear Discriminant Analysis)

김승혁·2024년 11월 22일

LDA(Linear Discriminant Analysis)는 주로 분류 문제에서 사용되는 차원 축소 기법입니다. LDA는 데이터를 선형적으로 구분하는 평면을 찾는 방법으로, 각 클래스 간의 분산을 최대화하고 클래스 내의 분산을 최소화하는 방향으로 데이터를 변환합니다.

LDA의 수식

LDA는 클래스 간 분산과 클래스 내 분산을 기반으로 최적의 선형 변환을 찾습니다.

1. 클래스 내 분산 행렬 SWS_W

클래스 내 분산 행렬은 각 클래스 내에서의 데이터 분포를 나타냅니다.

SW=i=1kxCi(xμi)(xμi)TS_W = \sum_{i=1}^{k} \sum_{x \in C_i} (x - \mu_i)(x - \mu_i)^T

  • kk : 클래스의 수
  • CiC_i : i번째 클래스
  • μi\mu_i : 클래스 CiC_i의 평균 벡터
  • xx : 클래스 CiC_i에 속한 샘플 벡터

2. 클래스 간 분산 행렬 SBS_B

클래스 간 분산 행렬은 클래스 간의 평균 차이를 나타냅니다.

SB=i=1kNi(μiμ)(μiμ)TS_B = \sum_{i=1}^{k} N_i (\mu_i - \mu)(\mu_i - \mu)^T

  • NiN_i : 클래스 CiC_i에 속한 샘플의 수
  • μi\mu_i : 클래스 CiC_i의 평균 벡터
  • μ\mu : 전체 데이터의 평균 벡터

3. 최적의 선형 변환

LDA는 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 방향으로 데이터를 변환합니다. 이를 위해 다음의 목표 함수를 최대화합니다.

J(W)=WTSBWWTSWWJ(W) = \frac{|W^T S_B W|}{|W^T S_W W|}

  • WW : 선형 변환 벡터

이 목표 함수는 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 방향으로 최적화됩니다. 최적화 문제를 풀기 위해, 이 함수의 고유 벡터를 구하는 방법을 사용하여 최적의 변환 벡터 WW를 찾습니다.

  • 두 클래스 → 보통 11차원으로 변환.
  • 다수 클래스 → 최대 C1C-1차원 변환.

4. 고유값 문제

LDA는 다음의 고유값 문제를 풀어 최적의 WW를 찾습니다.

SW1SBW=λWS_W^{-1} S_B W = \lambda W

  • λ\lambda : 고유값
  • WW : 고유벡터 (최적의 선형 변환 벡터)

요약

LDA는 각 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 선형 변환을 찾아 데이터를 차원 축소하거나 분류에 사용합니다. 이를 위해 클래스 간 분산 행렬과 클래스 내 분산 행렬을 계산하고, 이들의 고유값 문제를 풀어 최적의 선형 변환 벡터를 찾습니다.










고유값 문제 풀기

LDA는 고유값 문제를 풀어 최적의 선형 변환 벡터 WW를 구합니다. 이는 다음의 고유값 문제로 표현됩니다:

SW1SBW=λWS_W^{-1} S_B W = \lambda W

  • SW1S_W^{-1}는 클래스 내 분산 행렬의 역행렬
  • SBS_B는 클래스 간 분산 행렬
  • WW는 고유벡터 (최적의 선형 변환 벡터)
  • λ\lambda는 고유값

데이터

클래스 1과 클래스 2로 나뉜 2차원 데이터가 있다고 가정하겠습니다. 각 클래스의 평균 벡터는 다음과 같습니다:

  • 클래스 1 평균 벡터: μ1=[1,2]\mu_1 = [1, 2]
  • 클래스 2 평균 벡터: μ2=[3,4]\mu_2 = [3, 4]

그리고 클래스 내 분산 행렬 SWS_W와 클래스 간 분산 행렬 SBS_B는 다음과 같이 주어졌다고 가정합시다:

  • SW=[2112]S_W = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}
  • SB=[4224]S_B = \begin{bmatrix} 4 & 2 \\ 2 & 4 \end{bmatrix}

고유값 문제 풀기

이제 고유값 문제 SW1SBW=λWS_W^{-1} S_B W = \lambda W를 풀면, WWSW1SBS_W^{-1} S_B의 고유벡터로 나옵니다.

  1. 먼저 SW1S_W^{-1}을 계산합니다.

    SW1=1(2)(2)(1)(1)[2112]=13[2112]S_W^{-1} = \frac{1}{(2)(2) - (1)(1)} \begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix} = \frac{1}{3} \begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix}

  2. 그런 다음 SW1SBS_W^{-1} S_B를 계산합니다.

    SW1SB=13[2112][4224]S_W^{-1} S_B = \frac{1}{3} \begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix} \begin{bmatrix} 4 & 2 \\ 2 & 4 \end{bmatrix}

이 연산을 통해 SW1SBS_W^{-1} S_B를 구하고, 그에 대한 고유값과 고유벡터를 계산하면 최적의 선형 변환 벡터 WW를 얻을 수 있습니다.


※ 역행렬 공식

2x2 행렬의 역행렬 구하는 공식

A1=1det(A)(dbca)A^{-1} = \frac{1}{\text{det}(A)} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}


곱셈을 수행하면:

SW1SB=13[(2)(4)+(1)(2)(2)(2)+(1)(4)(1)(4)+(2)(2)(1)(2)+(2)(4)]S_W^{-1} S_B = \frac{1}{3} \begin{bmatrix} (2)(4) + (-1)(2) & (2)(2) + (-1)(4) \\ (-1)(4) + (2)(2) & (-1)(2) + (2)(4) \end{bmatrix}

SW1SB=13[82444+42+8]=13[6006]S_W^{-1} S_B = \frac{1}{3} \begin{bmatrix} 8 - 2 & 4 - 4 \\ -4 + 4 & -2 + 8 \end{bmatrix} = \frac{1}{3} \begin{bmatrix} 6 & 0 \\ 0 & 6 \end{bmatrix}

따라서:
SW1SB=[2002]S_W^{-1} S_B = \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}

2. 고유값 식 설정

행렬 SW1SBS_W^{-1} S_B의 고유값 λ\lambda는 다음 특성 방정식을 만족합니다:

det(SW1SBλI)=0\text{det}(S_W^{-1} S_B - \lambda I) = 0

여기서 II는 항등 행렬입니다.

SW1SBλI=[2λ002λ]S_W^{-1} S_B - \lambda I = \begin{bmatrix} 2 - \lambda & 0 \\ 0 & 2 - \lambda \end{bmatrix}

특성 방정식은 행렬의 행렬식을 계산한 결과입니다:

det(SW1SBλI)=(2λ)(2λ)(0)(0)=(2λ)2\text{det}(S_W^{-1} S_B - \lambda I) = (2 - \lambda)(2 - \lambda) - (0)(0) = (2 - \lambda)^2

3. 고유값 계산

(2λ)2=0(2 - \lambda)^2 = 0

λ=2\lambda = 2

4. 고유벡터 계산

고유값 λ=2\lambda = 2에 대한 고유벡터 WW는 다음 식을 만족합니다:

(SW1SB2I)W=0(S_W^{-1} S_B - 2I)W = 0

([2002][2002])W=0\left(\begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix} - \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}\right) W = 0

[0000]W=0\begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix} W = 0

따라서, WW는 임의의 비영벡터일 수 있습니다. 영벡터(Zero Vector)가 아닌 벡터

profile
열심히 사는 척

0개의 댓글