[2주차 (2)] 피쳐 엔지니어링 - 2
1. 피처 중요도 (Feature Importance)
- 피처 중요도 정의 : 타겟 변수를 예측하는 데 얼마나 유용한 지에 따라 피처에 점수를 할당해서 중요도를 측정하는 방법
-Model specific vs Model agnostic
: 머신러닝 모델 자체에서 피처 중요도 계산이 가능하다면 Model Specific
: 모델에서 제공하는 기능에 의존하지 않고 모델을 학습한 후에 적용되는 피처 중요도 계산 방법은 Model agnostic
2. Boosting Tree 피처 중요도 (Model specific 방법론)
- LightGBM 피처 중요도 함수
:훈련된 LightGBM 모델 클래스에 feature_importance(importance_type) 함수로 피처 중요도 계산 기능 제공
:인자의 importance_type 값에 split 또는 gain 사용 가능, 디폴트는 split
:split -> 모델에서 사용된 피처의 횟수 측정, 많이 사용될 수록 해당 피처가 중요하다고 판단
:gain -> 피처의 split의 total gain 측정
- XGBoost 피처 중요도 함수
:훈련된 XGBoost 모델 클래스에 get_score(importance_type) 함수로 피처 중요도 계산 기능 제공
:인자의 importance_type은 다음과 같고, 이 중 디폴트 값은 weight로 설정된다
:weight -> tree내의 모든 데이터를 split 하는 데에 사용된 피처의 횟수 측정 (=LightGBM 의 split)
:gain -> 피처 split을 하는 것에 있어서 사용된 모든 gain의 평균치 측정 (=LightGBM 의 gain)
:cover -> coverage 측정
:total_gain -> gain의 총합
:total_cover-> coverage의 총합
-CatBoost 피처 중요도
:훈련된 CatBoost 모델 클래스에 get_feature_importance(type) 함수로 피처 중요도 계산 기능 제공
:인자의 type은 다음과 같고, 이 중 디폴트 값은 FeatureImportance
: FeatureImportance ,ShapValues , Interaction , PredictionDiff
3. Permutation 피처 중요도 (Model-Agnostic 방법론)
- 피처의 데이터 값들을 셔플링한 다음 에러를 측정하여 만약 피처가 중요하다면 피처 내의 데이터를 섞게 된다면 에러값이 커지고, 중요하지 않다면 에러값이 크지 않다는 점을 이용함
-따라서 피처를 모두 순차적으로 순회하며 셔플링 후 기존의 값과 셔플링 이후의 값을 비교한 값인 에러의 크기 정도를 측정해 이를 피처 중요도로 치환하는 방식
-따라서 어떤 모델에도 적용할 수 있는 Model-Agnostic 한 방법론이라고 할 수 있다.
** 현업에서도 꽤나 신뢰도가 높은 피처 중요도 측정 방법으로 간주되어 자주 쓰이는 방법론이다.
-Permutation 피처 중요도 측정 방법 psuedo코드
-Permutation 피처 중요도 측정은 sklearn.inspection에 permutation_importance 라이브러리에 내장되어 편하게 사용이 가능하다.
4. 피처 선택 (Feature Selection)
-피처 선택 정의 : 머신 러닝 모델에서 사용할 피처를 선택하는 과정, 머신 러닝 모델이 타겟 변수를 예측하는 데에 유용한 피처와 유용하지 않은 피처를구분하여 유용한 피처를 선택하는 과정
-피처 선택을 통해 모델의 복잡도를 낮춤으로써 오버피팅 방지 및 모델의 속도 향상이 가능하다
-피처 선택 방법 : Filter Method, Wrapper Method, Embedded Method
- Filter method
: 통계적인 측정방법을 사용하여 피처들의 상관관계를 알아내는 방식
: 피처 간의 상관계수가 반드시 모델에 적합한 피처라고는 할 수 없어서, 가장 좋은 방법이라고는 할 수 없으나 가장 간단한 방식 중 하나
:계산 방식이 빠르고 피처 간의 상관관계를 알아내는 것에 적합함
:따라서 Wrapper 방식을 사용하기 전에 데이터를 전처리하기 위해 주로 사용된다
:대표적인 방법 두 가지
:(1) 피처들 간의 Correlation을 계산하여 Correlation이 높은 피처들이 같은 피처라고 볼 수 있으므로 둘 중 하나를 제거
:(2) Variance threshold, 피처의 데이터의 분산을 계산하여 분산이 작다면 같은 피처라고 판단
-Wrapper method
:예측 모델을 사용하여 피처의 subset을 계속해서 test
: 기존의 데이터에서 성능을 측정할 수 있는 holdout 데이터셋을 따로 두어서 validation 성능을 측정할 수 있는 방법이 필요, 이렇게 subset을 계속 체크해서 어떤 피처가 중요한 지 알아내는 방법
-Embedded method
:Filter method와 Wrapper method의 장점을 결합하여 만든 방식
: 학습 알고리즘 자체에서 feature selection의 과정이 들어가있는 것을 이야기한다
본 포스트의 학습 내용은 부스트클래스 <AI 엔지니어 기초 다지기 : 부스트캠프 AI Tech 준비과정> 강의 내용을 바탕으로 작성되었습니다.