[ML] Feature Selection

솜솜·2023년 8월 21일
0

Machine Learning

목록 보기
5/6

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가지]

  1. Filter Method : Feature 간 관련성을 측정하는 방법
  2. Wrapper Method : Feature Subset의 유용성을 측정하는 방법
  3. 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

profile
[Data Science] 차근차근 쌓아나가는

0개의 댓글