귀퉁이 서재

캐글 필사 - 2. Predict Future Sales 본문

캐글 (Kaggle)

캐글 필사 - 2. Predict Future Sales

Baek Kyun Shin 2019. 10. 6. 11:55

과거 판매량 데이터를 기반으로 향후 판매량을 예측하는 컴피티션입니다. (Data 링크) Coursera의 Data Science 강의 최종 과제이기도 한 문제랍니다. 훈련데이터는 2013년 1월부터 2015년 10월까지의 물품 정보 및 판매량이며, 테스트 데이터는 2015년 11월 물품 정보입니다. 이를 기반으로 11월 물품의 판매량을 예측하는 것입니다. Top 랭크가 되어 있는 notebook중 하나인 Feature engineering, xgboost를 참고했습니다.

사실 다른 기법보다도 Feature Engineering에 집중했습니다. 기본적인 중복 처리, Null 체크, Outlier 처리 등을 한 뒤, 카테고리 데이터를 인코딩 했습니다. 그리고 나서 바로 Feature Engineering을 했습니다. Top 랭크 되어 있는 위 노트북을 보며 느낀 게 있습니다. 몇 개 안 되는 Feature만으로도 의미 있는 다양한 Feature를 만들어 낼 수 있다는 것을 말입니다. Feature Engineering을 자유 자재로 하기 위해서는 많은 연습이 필요하겠지요. 

본 프로젝트의 Feature Engineering에서 주로 다뤘던 부분은 Lag 판매량입니다. Lag 판매량이란 이전 판매량을 뜻합니다. 어떤 가게의 어떤 물품이 이번달에는 몇개가 팔렸는데, 1달 전, 2달 전, 6달 전..등엔 몇개가 팔렸는지에 대한 수치입니다. 당장 이번달만의 데이터가 아니라 그 이전의 데이터까지 종합적으로 고려해 현재 상태를 파악한다는 개념입니다. 1월엔 10개 팔리고, 2월엔 15개 팔리고, 3월에 14개 팔렸다면 그 달의 판매량만을 볼 수도 있지만, 그 이전 달까지 종합해서 생각해볼 수 있습니다. 즉,

판매량
1월 10개
2월 15개
3월 14개

이런 데이터를

판매량 1개월 전
판매량
2개월 전
판매량
1월 10개 9개 11개
2월 15개 10개 9개
3월 14개 15개 10개

이렇게 바꾸어준다는 뜻입니다. 이렇게 하면 4월 판매량을 예측할 때 1개월 전 판매량, 2개월 전 판매량이 있어서 (즉, 활용할 수 있는 유의미한 Feature가 생겨서) 더 효과적입니다.

이런 Lag기법을 활용하여 판매량 예측에 도움되는 Feature를 많이 만들어 주었습니다. 모델은 XGBoost를 활용했습니다.

자세한 코드 및 설명은 제 깃헙을 참고해주시기 바랍니다.

Comments