FDA는 linear classifier의 종류로 데이터를 project 시켜 그 분산을 사용하여 적절한 boundary를 찾아내는 방법이다
먼저 데이터를 boundary에 project 시킨 것을 어떻게 나타내는지 알아보자

이렇게 두 벡터가 있을 때 w 벡터에 x 벡터를 투영시킨 위치는 wTx로 나타낼 수 있다
두 벡터를 inner product 시킨다면 w⋅x=||w||||x||cosθ이고 이 때 ||w|| 는 1이고 벡터 x를 w에 투영시킨 길이는 ||w||cosθ이기 때문이다
이 방법을 사용하여 모든 N개의 데이터를 w 벡터에 투영시켰다고 생각한다면 그 위치들의 평균은 ˆm=1N∑Ni=1wTxi이다
모든 데이터의 평균을 ˆμ라고 한다면 ˆm=wTˆμ라고 표현할 수 있다
var(W)=1N∑Ni=1(wTxi−ˆm)2=1N∑Ni=1(wTxi−wTˆμ)2=1N∑Ni=1(wT(xi−ˆμ)(xi−ˆμ)Tw=wT[1N∑Ni=1(xi−ˆμ)(xi−ˆμ)T]w=wT∑w
이처럼 분산을 표현할 수 있고 이 때 ∑은 convariance matrix를 나타낸다
중간에 wTxi−wTˆμ 가 (xi−ˆμ)Tw 로 바뀔 수 있는 것은 두 값이 모두 스칼라 값이기 때문이다
그렇다면 어떻게 분산을 이용하여 linearly seperable한 데이터의 boundary를 찾을 수 있는지 살펴보자

이렇게 두 w벡터에 대해 데이터들을 투영시켰을 때 w1벡터가 더 적절하다는 것을 알 수 있다
분산을 사용할 때 고려해본 점이 두가지가 있다
먼저 한 class 내에서 분산이 크고 작은 경우가 있다

이렇게 분산이 작은 경우는 overlap 될 확률이 적어진다고 볼 수 있다
하지만 class 별 분산의 크기만 고려한다면 평균이 비슷한 경우 분산이 작더라도 많이 겹칠수도 있다
따라서 전체 데이터의 분산은 크게, class 별 분산의 크기는 작게 한다면 효율적으로 classifer를 만들어 볼 수 있다

이런 개념을 사용해서 objective function을 L(w)=wT∑wN1NwT∑1w+N2NwT∑2w으로 만들어 볼 수 있다
이때 N1은 class 1 원소의 개수, N2는 class 2 원소의 개수, N은 전체 원소의 개수이다
이를 이용해서 data 개수의 가중치를 적용시켜 줄 수 있다
전체 분산은 크게, class 별 분산은 작게 만들어야 하므로 위 objective function을 작게 maximize 시키는 값이 최적의 값이라고 볼 수 있다
식을 간단하게 만들기 위해 분모를 wT∑12w라고 쓰고 dL(w)dw를 0으로 만들어주는 최적의 w 값을 찾아보자
dL(w)dw=1(wT∑12w)2d(wT∑w)dwwT∑12w−d(wT∑12w)dwwT∑w
이 때 공분산행렬인 ∑은 전치행렬이 원래 행렬과 같기 때문에 d(wT∑w)dw=2∑w라고 생각할 수 있다
따라서 최종 derivative는 1(wT∑12w)2[2∑wwT∑12w−2∑12wwT∑w] 이다
CSE 4007 : Artifical Intelligence ( Hanyang University )
'AI' 카테고리의 다른 글
[Kaggle] Titanic Competition 타이타닉 생존자 예측하기 (0) | 2021.01.03 |
---|---|
Neural Networks (1) | 2020.10.03 |
Online learning - Perceptron Algorithm (0) | 2020.10.01 |
[Kaggle] Melbourne 집값 예측하기 - 4 Pipelines (0) | 2020.06.15 |
[Kaggle] Melbourne 집값 예측하기 - 3 Categorical Variables (0) | 2020.05.23 |