/*

 http://sosal.kr/
 * made by so_Sal
 */




machine learning을 공부하면 꼭 보는것이 Feature selection 입니다.

상관분석에서 이러한 Feature selection은 All feature에서 subset으로 나누는 것인데, 크게 2가지로 분류됩니다.


Filter approace vs Wrapper approach




1. Machine learning

2. filter approach

3. wrapper approach








1. Machine learning


일단 filter & wrapper function을 알기 전에 machine learning에 대해 알지 못한다면 이 포스팅의 내용을 이해하지 못할것입니다.

machine learning은 supervised learning으로, 미리 training/test set과, training set에 대한 정답을 아는 상태여야합니다.


test set은 행렬로 이루어져 있는데, 행은 feature로서의 역할, 열은 case로서 역할을 합니다.


ex) 환자의 Training data set / 고혈압

/

   Feature1 (나이)

   Feature2 (주량)

   Feature3 (몸무게)

   True / false 

 환자1

 65

 4.5병

 130kg

 True (고혈압)

 환자2

 23

 1병

 73 

 False (정상)

 환자3

 77

 3병

 90

 True (고혈압)


물론 환자수가 3명으로는 machine learning의 성능은 형편 없겠습니다만, input data는 위와 같은 형식으로 구성되어 있습니다.

물론 machine learning의 종류에 따라 input data 형식은 다릅니다.

위의 데이터를 이용하여 machine learning은 model을 생성합니다.


ex) 환자의 Test data set / 고혈압

/

   Feature1 (나이)

   Feature2 (주량)

   Feature3 (몸무게)

   True / false 

 환자1

 63

 5병

 140kg

 ?

 환자2

 23

 0.5병

 75

 ?

 환자3

 76

 3병

 88

 ?

생서된 model을 통해 위의 데이터 (True / False 즉 정답을 모르는 데이터)가 들어 왔을 때, 이 환자가 고혈압인지 저혈압인지 예측을 하는것이 바로 machien learning입니다. 물론 test data set의 정답까지 아는 경우에는, test data set에 대한 model의 예측 accuracy(성능) 도 구할 수 있겠죠?

(아마 training set으로부터 만들어진 model은 test data set에 대해 환자1부터 3까지 true / false / true로 나오겠지요?)




테이블 형식으로 data가 구성되어 있지만, 실제 raw data는 machine learning의 종류에 따라 다릅니다.


ex)  실제 LIBSVM 의 training set 형식 (training set: 앞부분이 정답. true / false)

-1 4:1 6:1 17:1 22:1 36:1 40:1 50:1 63:1 67:1 73:1 74:1 76:1 80:1 83:1 
+1 4:1 6:1 15:1 22:1 36:1 40:1 50:1 63:1 67:1 73:1 74:1 76:1 82:1 83:1 
+1 5:1 6:1 17:1 25:1 38:1 40:1 51:1 63:1 67:1 73:1 74:1 76:1 80:1 88:1 
-1 4:1 6:1 14:1 22:1 36:1 42:1 54:1 64:1 67:1 73:1 74:1 76:1 80:1 83:1 
+1 3:1 6:1 17:1 29:1 39:1 40:1 52:1 63:1 67:1 73:1 74:1 76:1 79:1 83:1 
-1 3:1 6:1 18:1 19:1 39:1 40:1 50:1 61:1 67:1 72:1 74:1 76:1 78:1 83:1 






2. Filter approach



Filter의 경우에는 모든 Feature들 중에 좋은 Feature들의 subset을 구성하는 방법입니다. 이 경우에는 사실 learning algorithm 과는 독립적으로 정의되기 때문에, Feature selection을 한다고 해서 machine learning의 최고 성능을 내는 feature subset을 생성한다고 볼 수 없습니다.




Filter를 이용한 feature selection의 method는 많지만 자세히 다루지는 않겠니다만, 자세한 method는 아래 링크를 참조하세요.

1. mutual information, 

2. pointwise mutual information

3. Pearson product-moment correlation coefficient,

4. inter/intra class distance

5. significance tests


Filtering은 Feature들의 ranking-순위를 줌으로 써 실험자에게 도움을 주는 도구가 됩니다. 따라서 위에서 언급했듯이, learning algorithm과 독립적이라는 뜻은 Filtering의 결과가 machine learning에 있어서 best feature subset을 주는것이 아니라, 실험자에게 feature-rank를 줌으로 써 feature가 얼마만큼의 영향력이 있으며, machien learning에 있어서 좋은 결과(classification 성능?) 를 낼 수 있는 feature인지 프로그래머나 실험자에게 도움을 주는 정도의 역할을 한다고 보시면 됩니다.


굉장히 큰 데이터에 대해서 wrapper approach를 하기엔 너무 오래걸리기 때문에, Filter를 이용한 feature selection이 선행되는 경우가 많습니다.


강의자료 같은데서 간략하게 나와있는 특징이라고 하자면 뭐 속도가 엄청 빠르고 통계적인 방법을 사용한다, 하지만 machine learning의 측면에서 볼 때 subset을 뽑아내진 않는다 정도가 있네요.





3. wrapper approach 

Filter method는 Machine learning의 전처리 과정으로 모델의 성능(learning의 결과)과는 독립적으로 feature들을 뽑아내는 반면, Wrapper approach는 예측의 정확도 (machine learning의 성능)의 측면에서, feature들의 subset이 강력한 녀석들을 뽑아내는 녀석입니다.


Feature의 subset들을 machine learning 해보면서 결과가 좋은것을 뽑아내는 방법이기 때문에 filter보다 시간이 오래걸립니다. 하지만 learning과 직접적인 연관이 있기 떄문에 model의 performance 측면에서는 훨씬 더 효과적인 방법이 될 수 있습니다.

wrapper approach의 parameter와 알고리즘이 최적화 되어있어야 한다는건 당연한 이야기겠지만, 데이터가 커질경우에 잘못된 알고리즘을 선택하면 정말 오래 걸릴 수 있으니, 시스템의 성능과 알고리즘, 그리고 데이터셋의 크기를 잘 고려해서 수행해야 하겠습니다.

 

 



- Reference

1. Comparison between a filter and a wrapper approach to variable subset selection in regression problems

2. http://en.wikipedia.org/wiki/Feature_selection

3. http://clopinet.com/isabelle/Projects/ETH/lecture8.pdf

4. http://www.intechopen.com/books/multivariate-analysis-in-management-engineering-and-the-sciences/variable-selection-and-feature-extraction-through-artificial-intelligence-techniques

Posted by sosal sosal

댓글을 달아 주세요