해당 포스트는 패스트 캠퍼스에 초격차 패키지 : 50개 프로젝트로 완벽하게 끝내는 머신러닝 SIGNATURE를 공부한 뒤 복습을 위해 각색하여 작성하였습니다.
이번 미니 프로젝트에서는 직원들의 profile 데이터를 활용해 퇴사할 지 여부를 예측하는 binary classification 실습을 진행했습니다. 전체적인 과정에서 중점적으로 다루어 볼 부분은 저번 미니 프로젝트에서 feature selection 부분입니다. 바로 직전 미니 프로젝트 실습 글에서 feature selection에 대해 다루어보았는데, 그 부분에 이번 미니 프로젝트에서 배운 내용을 추가적으로 정리해보고자합니다.
최근 미니 프로젝트들에서 Data EDA 과정에서 통계적으로 접근하는 방법을 많이 배웠기에, 이 부분을 확실하게 정리하고 다음 미니 프로젝트로 넘어가고자 합니다!
첫번째로 다루어볼 내용은 카이제곱 검정입니다. 이 검정도 대학교때 수업으로 들었었으나, 이번 미니 프로젝트를 통해 어떻게 활용할지 적용해볼 수 있었습니다.
카이제곱 검정은 위와 같이 3가지 유형이 있습니다. 그 중에서 이번에 카테고리 변수가 유의미한지 확인하기 위해 사용한 유형은 중간 유형입니다. 즉, 카이제곱 검정을 통해서 임의로 정한 p-value 임계값을 통해 그 임계값을 넘으면 귀무가설을 기각할 수 있는 충분한 증거가 있다는 결론과 함께 예측 변수와 타겟 변수의 연관성을 테스트해볼 수 있습니다. 위와 같은 방법으로 이번 실습에서는 약 14개의 categorical 변수가 있었는데, 그 중 10개의 변수가 연관성이 있는 것을 확인할 수 있었습니다. 해당 검정을 하기 위해서 scipy 라이브러리의 stats.chi2_contingency를 사용하여 p-value를 구할 수 있었습니다 (p-value 임계값은 0.05를 사용했습니다).
다음으로는 VIF입니다.
다중공선성 유무를 확인하기 위해 VIF를 사용한 것은 이번 미니 프로젝트가 처음이었습니다. 이전 미니 프로젝트들에서는 단순히 상관계수를 통해 확인했다면, 이번 실습에서 VIF를 사용하여 다중 공선성이 높은 변수는 제거하는 과정을 진행했습니다. 제가 배운 내용으로는 VIF가 5가 넘으면 다중공선성이 있다고 가정을 하는 것이었는데, 이번 실습에서는 10이상인 경우 다중공선성이 있다고 가정했습니다. 그렇게 VIF가 10이 넘는 변수는 제거해주었습니다.
하지만 단순히 VIF만 진행하지는 않았습니다. 이전 미니 프로젝트들에서도 진행한 Kruskal-wallis test를 통해 타겟 변수와 유의미한 관계를 가지는 변수를 뽑아냈습니다. 이 후 VIF 과정과 Kruskal-wallis 검정의 결과로 나온 예측 변수들의 교집합을 모델링을 위한 numeric 변수들로 선정했습니다.
위의 통계적인 접근방법을 활용하여 진행한 Feature Selection으로 XGBoost를 활용한 모델링의 성능을 테스트한 결과, feature selection을 하지 않은 베이스 모델에 비하여 성능이 약 9% 증가했습니다. 그래서 feature selection가 신호와 소음 중 소음을 줄여주는 역할을 했다는 것을 확인할 수 있었습니다.
물론 데이터에 따라서 모델의 성능 증가가 달라질 수 있습니다. 하지만 이전 약 30개 정도의 미니 프로젝트들에서는 시도해보지 않았던 통계적인 접근을 통한 feature selection 과정은 제가 데이터를 보는 시야를 넓혀주는데 도움을 주었습니다. 이번 미니 프로젝트를 보니 앞으로 통계에 대한 집중적인 공부도 더 필요하다는 것을 느낄 수 있었습니다.
부족한 글 읽어주셔서 감사합니다:)