Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

AI

Fisher Discriminant Analysis

FDA는 linear classifier의 종류로 데이터를 project 시켜 그 분산을 사용하여 적절한 boundary를 찾아내는 방법이다

 

먼저 데이터를 boundary에 project 시킨 것을 어떻게 나타내는지 알아보자

 

 

이렇게 두 벡터가 있을 때 w 벡터에 x 벡터를 투영시킨 위치는 wTx로 나타낼 수 있다 

두 벡터를 inner product 시킨다면 wx=||w||||x||cosθ이고 이 때 ||w|| 는 1이고 벡터 x를 w에 투영시킨 길이는  ||w||cosθ이기 때문이다

 

이 방법을 사용하여 모든 N개의 데이터를 w 벡터에 투영시켰다고 생각한다면 그 위치들의 평균은 ˆm=1NNi=1wTxi이다

모든 데이터의 평균을 ˆμ라고 한다면 ˆm=wTˆμ라고 표현할 수 있다

 

var(W)=1NNi=1(wTxiˆm)2=1NNi=1(wTxiwTˆμ)2=1NNi=1(wT(xiˆμ)(xiˆμ)Tw=wT[1NNi=1(xiˆμ)(xiˆμ)T]w=wTw

 

이처럼 분산을 표현할 수 있고 이 때 은 convariance matrix를 나타낸다

중간에 wTxiwTˆμ 가 (xiˆμ)Tw 로 바뀔 수 있는 것은 두 값이 모두 스칼라 값이기 때문이다 

 

그렇다면 어떻게 분산을 이용하여 linearly seperable한 데이터의 boundary를 찾을 수 있는지 살펴보자

 

 

이렇게 두 w벡터에 대해 데이터들을 투영시켰을 때 w1벡터가 더 적절하다는 것을 알 수 있다

 

분산을 사용할 때 고려해본 점이 두가지가 있다

먼저 한 class 내에서 분산이 크고 작은 경우가 있다

 

 

이렇게 분산이 작은 경우는 overlap 될 확률이 적어진다고 볼 수 있다

하지만 class 별 분산의 크기만 고려한다면 평균이 비슷한 경우 분산이 작더라도 많이 겹칠수도 있다

따라서 전체 데이터의 분산은 크게, class 별 분산의 크기는 작게 한다면 효율적으로 classifer를 만들어 볼 수 있다

 

 

이런 개념을 사용해서 objective function을 L(w)=wTwN1NwT1w+N2NwT2w으로 만들어 볼 수 있다

이때 N1은 class 1 원소의 개수, N2는 class 2 원소의 개수, N은 전체 원소의 개수이다

이를 이용해서 data 개수의 가중치를 적용시켜 줄 수 있다

전체 분산은 크게, class 별 분산은 작게 만들어야 하므로 위 objective function을 작게 maximize 시키는 값이 최적의 값이라고 볼 수 있다

 

식을 간단하게 만들기 위해 분모를 wT12w라고 쓰고 dL(w)dw를 0으로 만들어주는 최적의 w 값을 찾아보자

 

dL(w)dw=1(wT12w)2d(wTw)dwwT12wd(wT12w)dwwTw 

이 때 공분산행렬인 은 전치행렬이 원래 행렬과 같기 때문에 d(wTw)dw=2w라고 생각할 수 있다

 

따라서 최종 derivative는 1(wT12w)2[2wwT12w212wwTw] 이다

 

CSE 4007 : Artifical Intelligence  ( Hanyang University )