AI/Machine Learning

[ML] Feature Selection (Filter Method & Wrapper Method & Embedded Method)

운호(Noah) 2021. 2. 26. 20:50

Feature Selection이란?

  • Feature Selection은 ML에 있어서 매우 중요한 기술입니다.
  • Feature Selection의 기본적인 아이디어는,
  • 모델링 시 raw data의 모든 feature를 사용하는 것은 computing power와 memory 측면에서 매우 비효율적이기 때문에,
  • 일부 필요한 feature만 선택해서 사용하자는 것입니다.
  • 어떻게 보면, Feature Selection은 여러분의 모델 성능을 높이기 위해서 반드시 필요한 기술 중 하나입니다.
  • Feature Selection은 Feature Engineering, Feature Extraction과 유사하지만,
  • 표현 자체는 구분되며, 간단하게 정리하면 아래와 같습니다.
    • Feature Engineering : 도메인 지식을 사용하여 데이터에서 피쳐를 변형/생성
    • Feature Extraction : 차원축소 등 새로운 중요 피쳐를 추출
    • Feature Selection : 기존 피쳐에서 원하는 피쳐만 (변경하지 않고) 선택
  • 즉, FE는 "데이터의 피쳐를 어떻게 유용하게 만들 것인가"의 문제이며,
  • FS는 "데이터에서 유용한 피처를 어떻게 선택할 것인가"의 문제입니다.
    • Feature Selection은 아래와 같은 장점이 있습니다.
      • 사용자가 해석하기 쉽게 모델을 단순화
      • 훈련 시간의 축소
      • 차원의 저주 방지
      • 일반화
  • 더 구체적으로 알아보겠습니다.

어떤 방법론을 사용할 것인가?

  • Feature Selection을 한다는 것은, feature subset을 만드는 과정이기 때문에
  • 시간과 자원이 충분하다면, 모든 방법을 테스트하여 구하고자하는 score가 높은 subset을 사용하면 됩니다.
  • 하지만, 이 방법은 현실적으로 무리가 있기 때문에, 평가 메트릭에 따라 적합한 방법을 사용하는 것이 좋습니다.
  • Feature Selection의 방법론은 크게 3가지로 분류됩니다.
    • Filter Method : Feature 간 관련성을 측정하는 방법
    • Wrapper Method : Feature Subset의 유용성을 측정하는 방법
    • Embedded Method : Feature Subset의 유용성을 측정하지만, 내장 metric을 사용하는 방법

Filter Method

  • Filter Method는 통계적 측정 방법을 사용하여 피처간의 상관관계를 알아낸 뒤,
  • 높은 상관계수(영향력)를 가지는지 피처를 사용하는 방법입니다.
  • 하지만, 상관계수가 높은 피처가 반드시 모델에 적합한 피처라고 할 수는 없습니다.
  • Filter Method는 아래와 같은 방법이 존재합니다.
    • information gain
    • chi-square test (카이제곱)
    • fisher score
    • correlation coefficient
      • 흔히 correlation을 heatmap으로 표현하여 시각화합니다.
    • variance threshold

Wrapper Method

  • Wrapper method는 예측 정확도 측면에서 가장 좋은 성능을 보이는 Feature subset(피처 집합)을 뽑아내는 방법입니다.
  • 이 경우, 기존 데이터에서 테스트를 진행할 hold-out set을 따로 두어야하며,
  • 여러번 Machine Learning을 진행하기 때문에 시간과 비용이 매우 높게 발생하지만
  • 최종적으로 Best Feature Subset을 찾기 때문에, 모델의 성능을 위해서는 매우 바람직한 방법입니다.
  • 물론, 해당 모델의 파라미터와 알고리즘 자체의 완성도가 높아야 제대로 된 Best Feature Subset을 찾을 수 있습니다.
  • Wrapper Method는 아래와 같은 방법이 존재합니다.
    • Forward Selection(전진 선택)
      • 변수가 없는 상태로 시작하며, 반복할 때마다 가장 중요한 변수를 추가하여 더 이상 성능의 향상이 없을 때까지 변수를 추가한다.
    • Backward Elimination(후방 제거)
      • 모든 변수를 가지고 시작하며, 가장 덜 중요한 변수를 하나씩 제거하면서 모델의 성능을 향상시킨다.
      • 더 이상 성능의 향상이 없을 때까지 반복한다.
    • Stepwise Selection(단계별 선택)
      • Foward Selection 과 Backward Elimination 을 결합하여 사용하는 방식으로,
      • 모든 변수를 가지고 시작하여 가장 도움이 되지 않는 변수를 삭제하거나,
      • 모델에서 빠져있는 변수 중에서 가장 중요한 변수를 추가하는 방법이다.
      • 이와 같이 변수를 추가 또는 삭제를 반복한다.
      • 반대로 아무것도 없는 모델에서 출발해 변수를 추가, 삭제를 반복할 수도 있다.

Embedded Method

  • Embedded method는 Filtering과 Wrapper의 장점을 결함한 방법으로,
  • 각각의 Feature를 직접 학습하며, 모델의 정확도에 기여하는 Feature를 선택합니다.
  • 계수가 0이 아닌 Feature가 선택되어, 더 낮은 복잡성으로 모델을 훈련하며, 학습 절차를 최적화합니다.
  • Embedded Method는 아래와 같은 방법이 존재합니다.
    • LASSO : L1-norm을 통해 제약을 주는 방법
    • Ridge : L2-norm을 통해 제약을 주는 방법
    • Elastic Net : 위 둘을 선형결합한 방법
    • SelectFromModel
      • decision tree 기반 알고리즘에서 피처를 뽑아오는 방법입니다.
        • RandomForest나 LightGBM 등
      • scikit-learn에 함수가 있습니다.

참고