LDA (Linear Discriminate Analysis) - 선형판별분석
LDA는 클래스가 레이블링된 데이터 세트에 대해, 데이터 세트를 구분하는 영역을 가르는 방법에 대한 것이다. 이 점은 Neural Network과도 유사한데, 차이점이 있다면 Neural Network는 결정평면에 대한 최적 파라미터를 Gradient Descent(경사하강)을 통해 에러를 업데이팅 시키며 최적값을 찾아나간다는 것이고, LDA는 결정 평면(또는 직선)을 찾는게 아닌, 최적의 사영 행렬(projection matrix) 을 찾는 것이 목적이다. 그러니까, LDA에서는 데이터가 클래스에 따라 잘 쪼개지도록 하는 원점을 지나는 방향 벡터를 찾는 것이 목적이다. LDA에서는 원점을 지나는 방향벡터를 구하는 것이므로 bias가 없다.
보통의 Projection Matrix와 다른 점은, 보통의 Projection Matrix는 정보 손실을 최소화하며 차원을 축소하는 것이 목표이므로, 데이터의 분산이 최대화되는 사영 벡터를 찾는다. 하지만, LDA에서는 두 클래스의 구별성을 최대한으로 높여야 하므로, 두 집단 내부의 분산은 최소가 되면서, 집단간의 거리는 최대가 되는 직선 상에 사영되도록 하는 사영 벡터를 찾는 것이 목표이다.
목적함수 정의
간단하게 두 데이터가 잘 쪼개지는 직선을 구한다고 생각하자. 기본적으로, 우리가 두 집단의 특성이 상이하다고 하면, 두 집단의 평균이 뭔가 아예 다른 (즉, 평균 값이 엄청 차이가 나는) 상황을 생각할 것이다. 초등학생과 고등학생의 키 분포를 생각하면 그렇다. 둘의 평균값의 거리는 매우 크다.
하지만 이 방법이 항상 들어맞는 것은 아니다. 유아의 남/녀 키 분포를 생각해보자. 사실상 영유아 시기에는 신체적 특성으로 남녀를 구분짓는 것이 거의 의미 없다. 따라서, 유아 시기의 키 데이터 분포를 보면, 남자 아이와 여자 아이들의 키 집단이 명확하게 구분된다기 보다는 혼재되어 있는 양상을 보일 것이다.
이 경우에 두 데이터의 사영된 평균 차이가 큰 것이 의미 있을까? 아마 의미 없을 것이다. 이런 상황에서 의미 있는 방법은 아마 그나마 데이터가 뭉쳐있도록 사영시키는 것이 그나마 합리적일 것이다.
따라서 LDA에서는 1) 두 클래스의 평균값 차이가 가장 크고 동시에 2)두 집단 각각의 분산이 최소 가 되도록 하는 사영벡터를 최적의 사영벡터로 본다.
수식적으로 나타내면 다음과 같다. 클래스
간단하게 나타내면 아래와 같다. 사영벡터
여기서 평균의 제곱을 inter class, 분모의 두 클래스 각각의 내부 분산을 intra class라고 한다. 분자값이 최대, 분모값이 최소가 되었을 때 해당 분수 값의 크기가 최대가 된다. 즉, 해당 식으로 자연스럽게 평균값 차이가 최대가 되면서 내부분산은 최소가 되는 지점의 사영벡터를 찾을 수 있다.
수식풀이
수식변환
여기서
이에 따라
벡터의 제곱은
이번에는
최종적으로
미분 (TBD)
💡몫의 미분법이란
수식의 의미 : Sw역행렬은 두 식의 분산이 최소가 되는 방향으로 방향을 틀어준다. 그리고 기본적으로는 m1 - m2 벡터의 방향을 향하도록 한다