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

그랜드바이퍼님의 프로필 이미지

작성한 질문수

캐글 Advanced 머신러닝 실전 박치기

주요 피처 선정 및 피처 엔지니어링 관련 질문

21.07.10 20:32 작성

·

590

0

안녕하세요 권철민님. 좋은 강의 감사드립니다.

1. displot이나 heatmap를 수행할 때 모든 피처가 아닌 '주요 피처'를 따로 뽑아서 수행하셨습니다.  여기서 주요 피처를 선정하는 기준이 어떤 것인가요? plot_importance를 기준으로 하신 것인지요? 만약 아니라면, 어떠한 '정량적'인 기준이 있는지요? 아니면 처음에 강조하셨던 해당 비즈니스 도메인 knowledge에서 비롯된 정성적 기준/직관적 기준으로 선정한 것인지요?

2. 주요 피처로 선택되지 않은 피처들이 사후 scaling / outlier 제거 등을 통해 주요 피처가 될 수도 있지 않는지요? 혹시라도 나중에 약간의 가공으로 주요피처가 될 수도 있는데, 처음에 주요피처를 선정해버리면 이들이 분석의 scope에서 제외되어 버리지는 않을까 걱정됩니다.

3. 가공된 피처와 원본 피처는 상관관계가 매우 높을텐데, 원본피처는 drop하지 않아도 되는지요? 저의 짧은 지식으로는 높은 상관관계는 다중공선성 문제를 유발한다는데, Regression 계열만 문제되고 Tree 기반한 GBM계열은 신경쓰지 않아도 될까요? 

답변 1

1

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

2021. 07. 11. 17:31

안녕하십니까, 

1. displot이나 heatmap를 수행할 때 모든 피처가 아닌 '주요 피처'를 따로 뽑아서 수행하셨습니다.  여기서 주요 피처를 선정하는 기준이 어떤 것인가요? plot_importance를 기준으로 하신 것인지요? 만약 아니라면, 어떠한 '정량적'인 기준이 있는지요? 아니면 처음에 강조하셨던 해당 비즈니스 도메인 knowledge에서 비롯된 정성적 기준/직관적 기준으로 선정한 것인지요?

=> 기계적인 피처 선정 방식은 적용하지 않았습니다. feature importance는 tree를 split하는데 얼마나 중요한 역할을 했는가를 나타내는 지표이지, 모델 성능에 기여한 feature의 성능과 반드시 일치하지는 않습니다. 비교적 feature selection에서 인정받는 기법이 Permutation importance이고 이를 구현한 패키지가 대표적으로 Eli5가 있는데, 이걸 Home Credit에 적용해 봤을 때 feature selection에 너무 오랜 시간이 걸렸습니다. 그리고 그렇게 뽑아낸 feature 들이 크게 성능 향상에 기여했다고 보기 어려웠습니다. 

때문에 정성적/직관적 기준을 따라서 feature 들을 선정했습니다. 예를 들어 대출 신청과 관련한 문서 제출 여부라든가, 연관성 여부를 떠나서 좀 더 실험적(?)으로 수집된 특성들(관련이 있을거라 상상력(?)을 발휘한 피처들)은 상당부분 제외하여 feature들을 설정했습니다. 

개인적으로도 이 방식을 선호하는 이유는 처음에 baseline으로 어떤 설명 가능한 feature 들 위주로 모델을 만든 다음,  나중에 튜닝할 때 추가적인 feature들을 조금씩 집어 놓으면서 모델을 만들어 나가는 것이 모델과 feature 사이의 관련성을 좀 더 명확하게 해주기 때문입니다.

2. 주요 피처로 선택되지 않은 피처들이 사후 scaling / outlier 제거 등을 통해 주요 피처가 될 수도 있지 않는지요? 혹시라도 나중에 약간의 가공으로 주요피처가 될 수도 있는데, 처음에 주요피처를 선정해버리면 이들이 분석의 scope에서 제외되어 버리지는 않을까 걱정됩니다.

=> 충분히 그럴수 있습니다. 실제로 본 강의에서 제외된 feature들을 포함시키고, 별도로 가공을 하면 아주 조금 성능향상이 됩니다. 제가 이들 feature를 제외한 이유는 이들 feature들을 다시 재 가공하는 노력에 비해서 성능 향상이 조금밖에 안되기 때문입니다. (물론 조금의 성능 향상도 kaggle competition 등수에는 큰 차이를 만듭니다). 

처음에 주요 피처를 선정한 이유는 모델과 피처(또는 피처 그룹/도메인)간의 관계성을 좀 더 명확히 하기 위해서 입니다. 너무 많은 피처들을 대상으로 하면, 이들 전체 feature들에 대해서 재가공하는 로직들을 더 생각해야 하고, 이러면서 상대적으로 생산성이 떨어지는(즉 시간이 더 많이 걸리는) feature engineering 작업을 수행하기 때문입니다. 

그렇다고 처음에 주요 피처를 너무 tight하게 선정하면 말씀하신되로 주요 피처가 될 수 있는 가능성을 배제해 버리므로 예측 모델 성능이 저하될 수 있기에 넉넉한(?) 수준에서, 그리고 논리적으로 무리되지 않은 피처들을 최초 주요 피처로 선정했습니다. 

3. 가공된 피처와 원본 피처는 상관관계가 매우 높을텐데, 원본피처는 drop하지 않아도 되는지요? 저의 짧은 지식으로는 높은 상관관계는 다중공선성 문제를 유발한다는데, Regression 계열만 문제되고 Tree 기반한 GBM계열은 신경쓰지 않아도 될까요? 

=> 일반적으로 linear 계열 보다는 Tree계열이 다중 공선성 문제가 덜 한것 같습니다. 그리고 이론적으로 저희가 배웠던 linear 계열의 다중 공선성 문제(특히 feature 갯수가 매우 많고, 상관 관계가 매우 높은 feature들이 많은 경우)가 실제 적용시에 생각보다 심각한것 같지는 않습니다. 

그렇다라도 일반적으로 feature 갯수가 많고, 상호간 연관성이 높을 경우에는 linear보다는 tree계열을 적용하는게 약간의 성능적인 우위가 있는 것 같습니다. 

감사합니다.  

그랜드바이퍼님의 프로필 이미지

2021. 07. 11. 17:36

깊이 있는 답변 감사드립니다.