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 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 을 결합하여 사용하는 방식으로,
- 모든 변수를 가지고 시작하여 가장 도움이 되지 않는 변수를 삭제하거나,
- 모델에서 빠져있는 변수 중에서 가장 중요한 변수를 추가하는 방법이다.
- 이와 같이 변수를 추가 또는 삭제를 반복한다.
- 반대로 아무것도 없는 모델에서 출발해 변수를 추가, 삭제를 반복할 수도 있다.
- Forward Selection(전진 선택)
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에 함수가 있습니다.
- decision tree 기반 알고리즘에서 피처를 뽑아오는 방법입니다.