본문 바로가기
스터디/머신러닝

변수 선택 (Feature Selection)

by ag_zero 2021. 11. 8.
728x90

Feature Selection이란?

모델링 시 모든 feature를 사용하는 것은 매우 비효율적이기 때문에,일부 필요한 feature만 선택해서 사용할 수 있다.

 

필요한 변수만 선택해서 사용하기 위해 아래와 같은 방법이 있다.

- Feature Engineering : 도메인 지식을 사용하여 데이터에서 피쳐를 변형/생성

- Feature Extraction : 차원축소(PCA)등 새로운 중요 피쳐를 추출

- Feature Selection : 기존 피쳐에서 원하는 피쳐만 (변경하지 않고) 선택

 

Feature Engineering은 데이터 피쳐를 어떻게 유용하게 만들것인가 Feature Selection은 데이터에서 유용한 피처를 어떻게 선택할 것인가 라고 생각할 수 있다.

 

Feature Selection의 장점

  • 모델 단순화
  • 훈련 시간 축소
  • 차원의 저주 방지
  • 일반화

Feature Selection 방법

- Wrapper method : 모델을 돌리면서 변수 채택
- Filter Method : 전처리 단계에서 통계기법 사용하여 변수 채택 
- Embedded method : 라쏘, 릿지, 엘라스틱넷 등 내장함수 사용하여 변수 채택 

 

 

1. Wrapper method : 유용성을 측정한 방법

출처 : https://subinium.github.io/feature-selection/

  • 예측 정확도 측면에서 가장 좋은 성능을 보이는 Feature subset(피처 집합)을 뽑아내는 방법이다.
  • 기존 데이터에서 테스트를 진행할 hold-out set을 따로 두어야한다.
  • 시간과 비용이 매우 높게 발생하지만 Best Feature Subset을 찾기 때문에, 모델의 성능을 위해서는 매우 바람직한 방법이다. 

(모델의 파라미터와 알고리즘 자체의 완성도가 높아야 제대로 된 Best Feature Subset을 찾을 수 있다.)

 

Wrapper Method 방법

  • Forward Selection(전진 선택)
    • 변수가 없는 상태로 시작하며, 반복할 때마다 가장 중요한 변수를 추가하여 더 이상 성능의 향상이 없을 때까지 변수를 추가한다.
  • Backward Elimination(후방 제거)
    • 모든 변수를 가지고 시작하며, 가장 덜 중요한 변수를 하나씩 제거하면서 모델의 성능을 향상시킨다.
    • 더 이상 성능의 향상이 없을 때까지 반복한다.
  • Stepwise Selection(단계별 선택)
    • Foward Selection 과 Backward Elimination 을 결합하여 사용하는 방식으로, 모든 변수를 가지고 시작하여 가장 도움이 되지 않는 변수를 삭제하거나, 모델에서 빠져있는 변수 중에서 가장 중요한 변수를 추가하는 방법이다.
    • 이와 같이 변수를 추가 또는 삭제를 반복한다.
    • 반대로 아무것도 없는 모델에서 출발해 변수를 추가, 삭제를 반복할 수도 있다.

 

2. Filter Method : 관련성을 찾는 방법

출처 : https://subinium.github.io/feature-selection/

 

  • Filter Method는 통계적 측정 방법을 사용하여 피처간의 상관관계를 알아낸 뒤, 높은 상관계수(영향력)를 가지는지 피처를 사용하는 방법이다.
  • 상관계수가 높은 피처가 반드시 적합한 피처라고 할 수는 없다.

 

Filter Method는  방법

  • information gain
  • chi-square test
  • fisher score
  • correlation coefficient (heatmap)
  • variance threshold

 

 

3. Embedded method : 유용성을 측정하지만, 내장 metric을 사용하는 방법

출처 : https://subinium.github.io/feature-selection/

  • 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에 함수가 있다.

 

 

'스터디 > 머신러닝' 카테고리의 다른 글

인공지능, 머신러닝, 딥러닝의 관계  (0) 2022.09.16
Catboost란?  (0) 2022.07.21
Pycaret을 사용한 데이터 분석  (0) 2021.11.01