본문 바로가기
데이터 분석/백화점 데이터 분석

백화점 데이터 분석 (머신러닝)

by AI Sonny 2022. 9. 25.
728x90

국비교육에서 캐글에서 백화점 데이터를 이용하여 팀을 만들어 컴피티션을 하였다.

 

결과는 1등을 했다.!

 

 

운이 좋았던 것 같다. 우리팀의 private score가 다른 팀에 비해 높지 않았다.

 

제출파일을 잘 선택하고, 각자의 모델을 잘 정리해서 1등한 것 같다.

 

그래서 정리하는 것이 중요하다는 것을 알게 되었다.

 

다른팀의 경우 높은 점수를 받은 파일을 찾지못해서 제출하지 못한 경우가 있었다.

 

잠도 제대로 못자고, 열심히 했는데 1등해서 보상받는 기분이 들었다.

 

머신러닝 파일은 하단 깃허브에서 볼 수 있다.

https://github.com/DoItSon/playdata/blob/main/baseline_test_%EC%9A%A9%EC%84%9D.ipynb

 

처음에는 강사님의 베이스 라인을 주셔서 그것을 바탕으로 조금씩 바꾸었다.

 

2일차까지는 어떻게 머신러닝이 돌아가는지에 대해 감이 안잡혔다.

 

그래서 2일차까지 우리팀은 꼴지였다...

 

그러나 계속 코딩하다보니 3일차부터는 전체적인 그림을 이해할 수 있었다.

 

데이터 결측치 처리

 

데이터 결측치 처리를 할 때 상품군미지정과 기타가 수상해 결측치로 가정하여 처리하였다.

 

그러나 결측치를 처리하면 오히려 성능이 떨어졌다.

 

그래서 결측치를 채우는 것이 잘못되었다 판단하여 결측치를 채우는 방식을 바꾸었다.

 

다음 대회 때는 결측치를 KNN으로 채워보고 싶다는 생각이 들었다.

 

Feature Engineering

피처는 처음에 팀원들끼리 피처에 대한 기본 베이스라인을 만들고, 그 이후에 각자 피처를 추가하는 것으로 하였다.

 

그러나 나는 시간이 부족하여 피처를 추가하지 않고, 모델의 성능을 끌어올리는 것을 선택했다.

 

Modeling

나는 모델을 3개 만들어 마지막에 3개의 모델을 앙상블하려고 하였다.

 

1번째 모델은 원핫인코딩과 바이너리인코딩을 하였고, 기존에 0을 채운 결측치를 좀 더 자세히 채워봤다.

 

그 후 피처 셀렉션하고,

 

모델을 XGBClassifier, LogisticRegression, RandomForestClassifier, MLPClassifier, LGBMClassifier 중에서

 

최적의 모델을 찾아 학습을 하였다.

 

2번째 모델은 기존 모델 1에서 베이지안 최적화를 적용시켜 최적의 파라미터를 찾아 2개의 모델에 넣어주었다.

 

처음에 이것을 넣을 때 Public score에서 점수가 떨어졌는데 대회가 끝나고,

 

확인해보니 오히려 Private score에는 올라갔었다.

 

시간만 오래 걸리고, 데이터가 얼마없어서 스코어가 떨어진줄 알았는데 그것이 아니였는 것을 알게 되었다.

 

3번째 모델은 단일모델로 강사님이 요즘 유행하는 방식이라 말씀해주셔서 해보았다.

 

모델은 LGBMClassifier를  사용하였다.

 


마지막에 팀원들끼리 산술평균 앙상블을 하는 과정에서 점수를 쥐어짜내느라 고생을 했다.

 

어떤 것이 잘 조합이 될지에 대해 생각하는 것이 생각보다 쉽지 않았다.

 

다음에는 대회를 나가볼 생각이다.

 

대회에서는 실제로 matplotlib(EDA)을 사용하여 상관분석을 하거나 피처를 걸러내는 것을 하고싶다.

 

그리고 결측치도 KNN을 이용하여 처리해보고 싶고, CatBoost를 제대로 사용해보고 싶다.

 

CatBoost에서 수치형데이터를 범주형으로 바꿔 라벨링하는 과정에서 너무 많은 오류가 발생하여, 포기하였다.

 

다음 대회에는 꼭 CatBoost를 적용시켜볼 예정이다!

728x90

댓글