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 : 유용성을 측정한 방법
- 예측 정확도 측면에서 가장 좋은 성능을 보이는 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 : 관련성을 찾는 방법
- Filter Method는 통계적 측정 방법을 사용하여 피처간의 상관관계를 알아낸 뒤, 높은 상관계수(영향력)를 가지는지 피처를 사용하는 방법이다.
- 상관계수가 높은 피처가 반드시 적합한 피처라고 할 수는 없다.
Filter Method는 방법
- information gain
- chi-square test
- fisher score
- correlation coefficient (heatmap)
- variance threshold
3. Embedded method : 유용성을 측정하지만, 내장 metric을 사용하는 방법
- 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 |