Feature Selection이란
- Feature selection은 모델링 시 raw data의 모든 feature를 사용하는 것은 computing power와 memory 측면에서 매우 비효율적이기 때문에
- 일부 필요한 feature만 선택하는 방법ㅣ다.
- 유사하지만 다른 표현의 3가지 feature 처리
- Feature Engineering : 도메인 지식을 사용하여 데이터에서 피쳐를 변형/생성
- "feature를 어떻게 유용하게 만들 것인가"
- Feature Extraction : 차원축소 등 새로운 중요 피쳐를 추출
- Feature Selection : 기존 피쳐에서 원하는 피쳐만 (변경하지 않고) 선택
- "유용한 feature를 어떻게 선택할 것인가"
- Feature Selection의 장점
- 사용자가 해석하기 쉽게 모델을 단순화
- 훈련 시간의 축소
- 차원의 저주 방지
- 일반화
어떤 방법론을 사용할 것인가?
- 시간과 자원이 충분하다면 모든 방법을 테스트하여 구하고자 하는 score가 높은 feature subset을 사용하면 된다.
- 현실적 한계 때문에, 평가 메트릭에 따라 적합한 방법을 사용하는 것이 좋다.
[Feature Selection의 방법론 3가지]
- Filter Method : Feature 간 관련성을 측정하는 방법
- Wrapper Method : Feature Subset의 유용성을 측정하는 방법
- Embedded Method : Feature Subset의 유용성을 측정하지만, 내장 metric을 사용하는 방법
1. Filter Method : 높은 상관관계 이용
- 통계적 측정 방법으로 피처 간 상관관계를 알아내, 높은 상관계수(영향력)를 가지는 피처를 사용하는 방법
- 하지만 상관계수가 높다고 모델에 적합하다 판단은 금물
[Filter Method 방법들]
- information gain
- chi-square test (카이제곱)
- fisher score
- correlation coefficient
- 흔히 correlation heatmap으로 시각화
- variance threshold
2. Wrapper Method : 예측 정확도 이용
- 예측 정확도 측면 가장 좋은 성능을 보이는 Feature subset(피처 집합)을 뽑아내는 방법
- 이 경우, 기존 데이터에서 테스트 진행할 hold-out set을 따로 두어야 하며
- 여러번 실험을 통해 시간과 비용이 높게 발생하지만
- 최종적 Best Feature Subset을 찾기 때문에 모델 성능에는 아주 도움이 됨.
[Wrapper Method 방법들]
1. Forward Selection(전진 선택)
- 변수가 없는 상태로 시작
- 반복 마다 가장 중요한 변수를 추가하여 더이상 성능 향상이 없을 때까지 반복
2. Backward Selection(후방 제거)
- 모든 변수를 갖고 시작
- 가장 덜 중요한 변수를 하나씩 제거하며 더 이상 성능 향상 없을 때까지 반복
3. Stepwise Selection(단계별 선택)
- Forward Selection + Backward Selection 결합
- 모든 변수를 갖고 시작
- 도움 안되는 변수 삭제 하거나, 모델에서 빠져있는 변수 중 가장 중요한 변수 추가
- 반대로 변수 없이 시작하여 변수 추가 삭제 반복할 수도 있음.
3. Embedded Method
- Filtering + Wrapper의 장점 결합
- 각각 Feature 직접 학습하며, 모델의 정확도에 기여하는 Feature를 선택
- 계수가 0이 아닌 Feature가 선택되어, 더 낮은 복잡성으로 모델을 훈련하며, 학습 절차 최적화
[Embedded Method 방법들]
- LASSO : L1-norm을 통해 제약 주는 방법
- Ridge : L2-norm을 통해 제약 주는 방법
- Elastic Net : 위 둘을 선형 결합한 방법
- SelectFromModel
- decision tree 기반 알고리즘에서 피처를 뽑아오는 방법
- RandomForest, LightGBM 등
Reference
https://wooono.tistory.com/249
https://subinium.github.io/feature-selection/
https://firework-ham.tistory.com/48