Loading [MathJax]/jax/output/CommonHTML/jax.js
Go together

If you want to go fast, go alone. If you want to go far, go together.

통계

LDA fisher analysis

NowChan 2022. 1. 1. 13:48

 

벡터 사영:

U로 V를 사영한 벡터:

projUV=VU||U||2U

y=wTx

|w|=1, w의 방향은 x와 곱할 때 정해져 있어서 따로 붙히지 않고, y는 1차원 벡터(스칼라)

 

클레스가 2개일 때

 

클래스 i의 평균 벡터:

mi=1ni xDi x

 

직선에 projection 시킨 클래스 i의 평균 벡터:

~mi=1ni yYi y=1ni xDi wTx=wTmi

 

 

클레스 1, 2 사이의 거리(between-class scatter):

|~m1~m2|=|wT(m1m2)|

 

|~m1~m2|2

={wT(m1m2)}2

=wT(m1m2)wT(m1m2)

=wT(m1m2){wT(m1m2)}T

=wT(m1m2)(m1m2)Tw

=wTSBw

 

4번식의 경우, w^T는 1xd 행렬, m1-m2는 dx1 행렬이므로 결과가 스칼라이기 때문에 transpose하더라도 같은 값이라는 점을 이용한 것이다.

 

클래스 내 분산(within-class scatter):

~s12+~s22 

= yY1(y~m1)2+  yY2(y~m2)2

= 2 i=1  yYi(y~mi)2

= 2 i=1  yYi(wTxwTmi)2

= 2 i=1  yYi(wTxwTmi)(wTxwTmi)

= 2 i=1  yYiwT(xmi)wT(xmi)

= 2 i=1  yYiwT(xmi)(xmi)Tw

=wTSWw

 

목적 함수:

J(w)=|~m1~m2|2~s12+~s22  =wTSBwwTSWw

 

우리가 찾는 것은 목적 함수를 최대로 만드는 w를 찾는 것이다.

 

ddwJ(w)=ddwwTSBwwTSWw=0

=[ddwwTSBw][wTSWw][ddwwTSWw][wTSBw](wTSWw)2

=2SBw[wTSWw]2SWw[wTSBw]wTSww

=2SBw2SWwwTSBwwTSWw=0

SBwSWwJ(w)=0

SBwλSWw=0

 

9번 식에서 J(w)는 하나의 w에 대해 스칼라이므로 λ로 표현 가능하다. ?

 

8번식 과정

ddwwTSBw=wT(SB+STB)

=wT(SB+STB)[wTSWw]

=2wTSB[wTSWw]

S_B의 결과 자체가 스칼라라서 같다고 나오는듯?

 

ddXXTAX=XT(A+AT)

[행렬 X에 대해 미분]

 

고유 벡터 꼴

S1WSBwλw=0

S1WSBw=λw

 

 

클레스가 여러 개일 때

 

multi class fisher LDA

J(w)=|~SB||~SW|

 

클래스 i의 분산의 합 = S_W

SW= ci=1 Si= c i=1  xDi(xmi)(xmi)T

 

전체 데이터 집합에 대한 분산 = 클래스 간 분산 + 각 클래스 내 분산

ST=SB+SW

m=1nci=1nimi

ST=  x(xm)(xm)T

= c i=1  xDi(xmi+mim)(xmi+mim)T

= c i=1  xDi(xmi)(xmi)T + c i=1  xDi(mim)(mim)T

=SW + c i=1  xDi(mim)(mim)T

 

클래스 간 분산

SB= c i=1  xDi(mim)(mim)T

 

10번 식에 각 값을 대입하면 된다.

 

목표 함수

J(w)=|~SB||~SW|=|WTSBW||WTSWW|

 

 

출처:

https://darkpgmr.tistory.com/141

https://lutecevision.tistory.com/1

https://knowable.tistory.com/41

'통계' 카테고리의 다른 글

RMSprop, Adam 알고리즘 해설  (0) 2021.12.26
다중공선성 (multicollinearity)  (0) 2021.12.18