LDA(Linear Discriminant Analysis)는 주로 분류 문제에서 사용되는 차원 축소 기법입니다. LDA는 데이터를 선형적으로 구분하는 평면을 찾는 방법으로, 각 클래스 간의 분산을 최대화하고 클래스 내의 분산을 최소화하는 방향으로 데이터를 변환합니다.
LDA의 수식
LDA는 클래스 간 분산과 클래스 내 분산을 기반으로 최적의 선형 변환을 찾습니다.
1. 클래스 내 분산 행렬 SW
클래스 내 분산 행렬은 각 클래스 내에서의 데이터 분포를 나타냅니다.
SW=∑i=1k∑x∈Ci(x−μi)(x−μi)T
- k : 클래스의 수
- Ci : i번째 클래스
- μi : 클래스 Ci의 평균 벡터
- x : 클래스 Ci에 속한 샘플 벡터
2. 클래스 간 분산 행렬 SB
클래스 간 분산 행렬은 클래스 간의 평균 차이를 나타냅니다.
SB=∑i=1kNi(μi−μ)(μi−μ)T
- Ni : 클래스 Ci에 속한 샘플의 수
- μi : 클래스 Ci의 평균 벡터
- μ : 전체 데이터의 평균 벡터
3. 최적의 선형 변환
LDA는 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 방향으로 데이터를 변환합니다. 이를 위해 다음의 목표 함수를 최대화합니다.
J(W)=∣WTSWW∣∣WTSBW∣
이 목표 함수는 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 방향으로 최적화됩니다. 최적화 문제를 풀기 위해, 이 함수의 고유 벡터를 구하는 방법을 사용하여 최적의 변환 벡터 W를 찾습니다.
- 두 클래스 → 보통 1차원으로 변환.
- 다수 클래스 → 최대 C−1차원 변환.
4. 고유값 문제
LDA는 다음의 고유값 문제를 풀어 최적의 W를 찾습니다.
SW−1SBW=λW
- λ : 고유값
- W : 고유벡터 (최적의 선형 변환 벡터)
요약
LDA는 각 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화하는 선형 변환을 찾아 데이터를 차원 축소하거나 분류에 사용합니다. 이를 위해 클래스 간 분산 행렬과 클래스 내 분산 행렬을 계산하고, 이들의 고유값 문제를 풀어 최적의 선형 변환 벡터를 찾습니다.
고유값 문제 풀기
LDA는 고유값 문제를 풀어 최적의 선형 변환 벡터 W를 구합니다. 이는 다음의 고유값 문제로 표현됩니다:
SW−1SBW=λW
- SW−1는 클래스 내 분산 행렬의 역행렬
- SB는 클래스 간 분산 행렬
- W는 고유벡터 (최적의 선형 변환 벡터)
- λ는 고유값
데이터
클래스 1과 클래스 2로 나뉜 2차원 데이터가 있다고 가정하겠습니다. 각 클래스의 평균 벡터는 다음과 같습니다:
- 클래스 1 평균 벡터: μ1=[1,2]
- 클래스 2 평균 벡터: μ2=[3,4]
그리고 클래스 내 분산 행렬 SW와 클래스 간 분산 행렬 SB는 다음과 같이 주어졌다고 가정합시다:
- SW=[2112]
- SB=[4224]
고유값 문제 풀기
이제 고유값 문제 SW−1SBW=λW를 풀면, W는 SW−1SB의 고유벡터로 나옵니다.
-
먼저 SW−1을 계산합니다.
SW−1=(2)(2)−(1)(1)1[2−1−12]=31[2−1−12]
-
그런 다음 SW−1SB를 계산합니다.
SW−1SB=31[2−1−12][4224]
이 연산을 통해 SW−1SB를 구하고, 그에 대한 고유값과 고유벡터를 계산하면 최적의 선형 변환 벡터 W를 얻을 수 있습니다.
※ 역행렬 공식
2x2 행렬의 역행렬 구하는 공식
A−1=det(A)1(d−c−ba)
곱셈을 수행하면:
SW−1SB=31[(2)(4)+(−1)(2)(−1)(4)+(2)(2)(2)(2)+(−1)(4)(−1)(2)+(2)(4)]
SW−1SB=31[8−2−4+44−4−2+8]=31[6006]
따라서:
SW−1SB=[2002]
2. 고유값 식 설정
행렬 SW−1SB의 고유값 λ는 다음 특성 방정식을 만족합니다:
det(SW−1SB−λI)=0
여기서 I는 항등 행렬입니다.
SW−1SB−λI=[2−λ002−λ]
특성 방정식은 행렬의 행렬식을 계산한 결과입니다:
det(SW−1SB−λI)=(2−λ)(2−λ)−(0)(0)=(2−λ)2
3. 고유값 계산
(2−λ)2=0
λ=2
4. 고유벡터 계산
고유값 λ=2에 대한 고유벡터 W는 다음 식을 만족합니다:
(SW−1SB−2I)W=0
([2002]−[2002])W=0
[0000]W=0
따라서, W는 임의의 비영벡터일 수 있습니다. 영벡터(Zero Vector)가 아닌 벡터