쇼핑몰 지점별 매출액 예측 AI 해커톤

GTSEO | 최종 2위(33675.98) | CatBoost | RandomizedSearchCV

2022.08.07 15:48 1,494 조회 language

모두 고생많으셨습니다.
많이 부족하지만 너그럽게 봐주시면 감사하겠습니다~!

개인적으로는 최대 성능보단 최소 코드 길이와 시간을 가진 최적의 코드를 제작하고자 했습니다. 하지만 수행 과정에서 45개의 지점을 한꺼번에 돌리니 RAM이 터지는 하드웨어 문제가 발생했습니다. 그리고 GridSearchCV를 통한 최적화 과정에서는 시간 초과 문제가 생겨 저의 목표 달성을 어렵게 했습니다. 이를 해결하고자 카카오톡 데이터분석 오픈채팅방의 조언과 관련 대회 코드를 추가 공부했습니다. 이런 노력으로 램 문제는 Pycaret을 통한 CatBoost 모델 선정으로, 시간문제는 RandomizedSearchCV로 해결할 수 있었습니다. 더욱이, 성능 향상을 위해 변수 파트는 휴일여부 등 날짜 관련 변수를 제작했습니다. 데이터 파트는 저는 두 연도 모두 비슷하지 않은 지점은 10년과 11년의 평균값을 구해 선택폭을 넓혔습니다. 그 결과, RMSE가 38764.40에서 33675.98로 향상해 기대 이상의 결과인 최종 2위(상위 0.29%)로 대회를 마감했습니다.

코드
로그인이 필요합니다
0 / 1000
이메진
2022.08.07 18:28

도움 많이 되었습니다, 공유해주셔서 감사합니다!

리자몽2
2022.08.08 17:00

고생많으셨습니다~

ㅈㅇ
2022.08.22 17:51

안녕하세요!   
#3가지(2010+2012,2011+2012,2010+2011+2012) 데이터 프레임 생성. 
  train0=pd.concat([train2010,train2012])
  train1=pd.concat([train2011,train2012])
  train2=pd.concat([train2010,train2011,train2012])

이 부분에서 왜 이렇게 년도 별로 데이터를 합쳐서 세 가지의 데이터 셋을 새로 만드셨는지 궁금합니다. 

리자몽2
2022.08.22 18:22

아 결국 2010년, 2011년 데이터를 이용해 2012년을 예측하는게 요구사항인데
그래프를 그려보면 지점별로 어떤 곳은 2010년이 2012년과 상당히 비슷하고 어떤곳은 2011년과 2012년이 상당히 비슷했습니다.
또 2010년,2011년 둘 다 2012년과 차이가 없어 보이는 경우는 2010년과 2011년을 모두 데이터프레임에 넣었습니다.
그래서 총 3가지 데이터프레임을 만들었습니다.
그래도 모르겠으면 다시 말씀해주세요~

ㅈㅇ
2022.08.22 19:51

아아!! 이해됐습니다!! 놀랍네요... 코드 잘 봤습니다 ㅎㅎ 감사합니다~~

셀렌디스
2022.08.29 20:29

잘 봤습니다, 좋은 코드 공유 감사합니다!

리자몽2
2022.08.30 01:09

보시느라 고생많으셨습니다!

월요일은대흉근
2023.02.18 10:38

test = null(test) 이 부분이 data leakage에 걸리지 않나요??

리자몽2
2023.02.18 13:55

지적 감사합니다!
결과적으로 모델 자체엔 안 써서 상관없었지만 time series에 잘못된 결측치 처리를 했네요..
당시 data leakage의 기준이 현재와 동일한지 모르겠지만 다음에 저라도 이렇게 결측치 처리 안 할거 같아요!