728x90

 데이터 분석에 드는 노력의 80%, 어쩌면 그 이상은 모델링이 아닌 데이터의 특성을 파악하는 EDA, missing value를 처리하는 등의 정제 작업을 진행하는 데이터 전처리, 좋은 모델링을 위해 적절한 feature를 선택하는 feature selection의 데이터 그 자체의 특성을 파악하고 이를 정제하는 데에 소요된다. 이번 포스팅에서는 feature selection의 한 방법인 RFE (Recursive Feature Elimination)와 RFECV(Recursive Feature Elimination with Cross Validation)에 대해 알아볼 것이다.

Feature Selection

 먼저, feature selection이 무엇인지에 대해 간략하게 설명하겠다. 우리는 데이터를 분석할 때 많은 경우에 아래와 같은 형태의 데이터와 마주한다.

  고기의 양 국물의 진하기 서비스 ... 종합 평점
장ㅇ식당 5 4 3.5 ... 5
ㅇ남식당 4.5 5 3.5 ... 4.5
안ㅇ소머리곰탕 5 4.5 3.5 ... 4.5

 보통의 데이터들의 행(row)은 하나의 sample을 의미하고, 열(column)은 하나의 feature을 의미한다. 즉, 장ㅇ식당이라는 sample은 은 고기의 양 feature에 대해 5라는 점수를 갖고, 국물의 진하기 feature에 대해 4라는 점수를 갖는 것이다. 이러한 데이터를 바탕으로 우리가 어떤 새로운 식당 sample이 있으면 종합 평점을 맞히는 모델을 만들고 싶다고 하자. 그렇다면 우리는 모델의 정확도 혹은 속도 등을 위해 모든 feature를 사용하는 것이 아닌 학습에 필요한 적절한 feature만을 선택해야 할 것이다. 이렇게 적절한 feature를 선택하는 과정을 feature selection이라고 한다. 

RFE

 RFE(Recursive Feature Elimination)는 어떤 관점에서 바라 보면 feature selection의 가장 단순한 방법이다. 모든 feature들로부터 feature를 하나하나 제거하면서 원하는 개수의 feature가 남을 때까지 이를 반복한다. 즉, 학습하고 싶은 모델을 정하고, 이 모델로 모든 feature를 활용하여 데이터를 학습했을 때(full model)의 각 feature의 feature importance를 도출한다. 그리고 feature importance가 낮은 feature부터 하나씩 제거해가면서 원하는 feature 개수가 될 때까지 이를 반복하는 것이다. 이렇게 원하는 feature 개수에 해당하는 상위 feature importance를 가지는 feature들이 최종 feature selection 결과가 된다.

RFECV

 RFE를 사용할 때에 가장 큰 단점은 몇 개의 feature를 남겨야 할 지를 사용자가 직접 정의해야 한다는 점이다. 이러한 단점을 극복하기 위해 등장한 것이 RFECV이다. RFECV(Recursive Feature Elimination with Cross Validation)는 위의 RFE가 사용하던 방법과 똑같이 가장 feature importance가 낮은 feature들을 제거해가면서 각 feature 개수마다 모델의 성능을 계산한다. 이 때, 각 feature 개수마다 K-fole validation 등의 cross validation을 활용하여 각기 다른 성능을 도출한다. 

RFECV의 score 결과. 가장 높은 결과를 가지는 feature 개수가 3이다.

 이렇게 도출된 각 feature 개수별 성능을 평균내어 가장 높은 성능을 가지는 feature 개수에 해당하는 feature들을 최종 feature selection 결과로 사용한다.

 이번 포스팅에서는 Feature selection method 중 RFE와 RFECV가 무엇인지에 대해 알아보았다. 뭔가 복잡한 알고리즘이 있다거나 하는 내용이 아니라 글이 비교적 짧은데, 쉬운 내용인데도 불구하고 한글 글이 잘 없는 것 같아서 작성해 보았다. 앞으로 다양한 feature selection 글도 추가해 나가야겠다. 

References

1. scikit-learn.org/stable/auto_examples/feature_selection/plot_rfe_with_cross_validation.html#sphx-glr-auto-examples-feature-selection-plot-rfe-with-cross-validation-py

 

Recursive feature elimination with cross-validation — scikit-learn 0.24.1 documentation

Note Click here to download the full example code or to run this example in your browser via Binder Recursive feature elimination with cross-validation A recursive feature elimination example with automatic tuning of the number of features selected with cr

scikit-learn.org

2. scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFE.html

 

sklearn.feature_selection.RFE — scikit-learn 0.24.1 documentation

 

scikit-learn.org

 

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기