본문 바로가기

Enginius/Machine Learning

내가 만든 LDA in Matlab

최종적으로 하려는 것은 LDA와 다른걸 좀 섞는 것이기 때문에 남이 만든 LDA 함수를 사용하니 내 입맛대로 변경하기가 어려워서..(사실 잘 이해가 안되서 ㅠㅠ..) 결국, 일반적인 fisher criteria를 이용한 LDA를 만들어보았다. 


1. 결과 

 복잡하게(?) 흩어져 있는 data에 LDA를 적용하였다. 그리고 그 결과는 다음과 같다. 분석부터 하자면 LDA는 이름에서 알 수 있듯이 Linear Transform이기 때문에 한계점이 상당히 존재한다. 





2. 매트랩 코드

 이 코드에 보면 projection matrix를 구하는 과정이 있는 데 이 때 eigenvalue의 sum에 몇 %까지에 해당하는 eigenvalue에 해당하는 eigenvector까지 사용하는 routine을 추가할 필요가 있다. 물론 LDA자체가 목적이 아니여서 그런건 안함. 


3. 결론

 d차원의 feature space에서 n개의 카테고리를 갖는 데이터들이 있을 때 이 data들로 LDA를 할 경우 d-1차원의 공간에서 처리를 해도 무관하다. 단순히 projection이므로 1차원을 줄일 수 있다. 물론 1차원까지 줄일 수 있지만 이 경우는 문제가 생길 가능성이 있다. 


 n개의 카테고리를 갖는다면, 각 카테고리 별 n개의 group mean을 구해서 어떤 데이터가 들어왔을 때 LDA로 구한 W로 projection을 시키고, n개의 group mean간의 거리를 통해서 classify를 할 수 있다. 







 

'Enginius > Machine Learning' 카테고리의 다른 글

Gaussian Process  (4) 2012.06.21
[Deep Learning ]RBM trained with Contrastive Divergence  (6) 2012.06.15
LDA로 headPoseEstimate하기  (0) 2012.06.09
Linear Discriminant Analysis Matlab Example  (0) 2012.06.09
Random Forest Description  (0) 2012.06.07