본문 바로가기

Machine Learning/변수 선택(Feature Selection)

Feature Selection - Feature_importances + Permutation Importance

반응형

https://steadiness-193.tistory.com/280

 

Feature Selection - Feature_importances

https://steadiness-193.tistory.com/261 Classification - RandomForestClassifier https://steadiness-193.tistory.com/257 Machine Learning - valid와 test를 train으로 전처리 https://steadiness-193.tistor..

steadiness-193.tistory.com

 

https://steadiness-193.tistory.com/281

 

Feature Selection - Permutation Importance

Permutation Importance 모델 fitting이 끝난 뒤에 측정한다. Validation의 한 컬럼만 무작위로 섞은 뒤 정확도를 측정한다. 위 작업을 모든 컬럼에 대해서 진행하며 모델이 예측에 크게 의존하는 열을 섞으�

steadiness-193.tistory.com

 

위 두 포스팅에서 변수를 선택하는 기준을 알아봤다.

 

그렇다면 두 기준을 이용해서 정확도가 잘 나온 컬럼만 뽑아서 해보면 어떨까?

 

 

 

 

 

final columns

final_col은

 

feature importances에서 3사분위 값 이상을 가진 12개의 컬럼과

(이 12개 컬럼으로 예측했을 때 정확도가 가장 높았다.)

 

permutation importance에서 weight를 0 초과로 가진 10개 컬럼을 더해 중복을 제거한 리스트다.

 

 

한 가지 빼고는 다 겹쳤다. 즉, 중요한 컬럼은 대개 정해져 있는걸로 보인다.

 

 

 

 

 

학습

 

 

13개의 컬럼을 이용했다.

 

 

 

정확도는 80.22%가 나왔다.

 

 

feature importances

 

전체 컬럼을 다 이용한 경우와 같은 정확도(80.22%)를 13개 컬럼으로 구현해 냈다.

 

 

 

 

다만, 문제가 한가지 있다.

 

feature importances와 permutation importance를 합친 컬럼 리스트를 만들 때

순서가 매번 바뀌는 것이었다.

 

 

그렇게 되면 앙상블 트리 계열의 정확도도 약간씩 차이가 난다.

 

실제로 여러번 반복해서 실험해본 결과

 

정확도는 79.85%, 79.48%, 80.22%, 80.60%, 80.97%, 81.34%, 82.09% 이렇게 다양하게 나왔다.

 

 

 

 

얻은 인사이트

 

1. 정확도는 약간씩 차이가 날 수 있으나 위 기준으로 변수 선택을 하게 된다면

모든 컬럼을 다 쓰는 것보단 메모리, 시간 대비 효율적이다.

 

 

2. 변수 중요도나 permutation importance를 이용해서

실제로 중요하지만 놓쳤거나, EDA에서 발견하지 못했던 중요한 컬럼을 찾을 수도 있다.

 

 

3. 저 정도 정확도의 오차는 파라미터 튜닝으로 메울 수 있을 것이다.

 

 

반응형