인프런 커뮤니티 질문&답변

nya님의 프로필 이미지
nya

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

feature importance 와 correlation 질문입니다.

작성

·

407

0

안녕하세요? 강의 잘 듣고있습니다.

교재와 캐글커널을 같이 공부하고 있는데 feature importance와 correlation에 대해 궁금한게 생겼습니다.

만약 데이터의 피처들이 너무 많아서 중요하지 않은 피처를 제거하려고 하는 경우:

a와b / a와c 라는 피쳐가 서로 correlation이 높아서 두 피처중 하나를 제거 하고자 하는데,

만약 a, b, c 피쳐들을 랜덤포레스트를 통해 확인한 결과 feature importance 모두 높게 나온다면 어떤 식으로 처리를 해주는 것이 좋을지 궁금합니다.

그래도 피처를 없애는지, 그냥 그대로 두는지, 아니면 다른 식의 접근방법이 있는지 궁금합니다.

답변 2

0

nya님의 프로필 이미지
nya
질문자

답변 감사합니다!

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

잘 듣고 계시다니 저도 기쁩니다.

 피처 셀렉션을 하는 여러가지 기법이 있지만, 제 경험상 가장 좋은 방법은 (무식한 방법입니다만) 대상 피처들을 하나씩 빼보면서 테스트 데이터에서 성능이 어느정도 떨어지는지를 직접 눈으로 확인하는 방법이 제일 나은것 같습니다.

두번째 권장하는 방법은 a,b/ a,c  모두 correlation이 높다면 업무적으로 판단하는 것입니다. 업무적으로 하나의 속성이 다른 하나에 종속되는 정도가 상대적으로 높다면 이를 제거하는 것이 더 나을 수 있습니다.

하지만 최종적으로 권장하고 싶은 것은 a,b,c 모두 제거하지 않았으면 하는 것입니다. 왜냐하면 모두 feature importance가 높게 나오기 때문입니다. 가급적이면 feature importance가 낮은 feature들 중에 상호간 correlation이 높은 feature들을 먼저 제거해 주는것이 좋습니다.

권장해 드린 세가지 방법을 조합해서 결정을 하시면 될 것 같습니다. 그리고 사이킷런을 이용한다면, SelectFromModel을 이용하는 것도 좋습니다. 그나마 사이킷런의 Feature Selection기능 API중에서는 괜찮은 결과를 뽑아줄 가능성이 있습니다.  하지만 위 경우는 큰 도움이 되지 못할 수 있습니다. SelectFromModel을 feature importance가 낮은 feature들을 위주로 제거 대상을 뽑습니다.

감사합니다.

nya님의 프로필 이미지
nya

작성한 질문수

질문하기