본문 바로가기
AI SCHOOL/TIL

[DAY 68] 미드프로젝트2 데이터 준비, EDA

2023. 4. 3.

지난주 금요일인 DAY 67 강의 이후 밤, 주말을 활용해서 으쌰으쌰팀4와 함께 미드프로젝트2의 전체적 타임라인 설정, 파생변수 생성, 데이터셋 분할, 데이터 전처리 및 EDA를 완료했다.

우리 팀은 데이콘의 구내식당 식수 인원 예측 AI 경진대회로 주제를 선정했다. 앞으로 다양한 머신러닝 모델을 사용하여 식수 인원을 예측해 볼 계획이다.

데이터 준비

최초 train set와 test set의 형태를 보면 아래와 같다.

init

파생변수는 크게 3가지 관점에서 만든다.
1. 일자에서 연, 월, 일, 연월을 추출
2. 총 정원수에서 출장, 시간외근무, 재택근무자 수를 제외한 실근무자수 계산
3. 중식메뉴와 석식메뉴를 밥, 국, 메인, 반찬1, 반찬2로 split하며 New 메뉴가 있으면 신메뉴유무 1, 없으면 0

그리고 중식계와 석식계는 각각 중식메뉴, 석식메뉴를 사용하여 학습, 예측하고 조식메뉴는 두 경우 모두 사용하지 않는다.

train_l.head()

중식계 학습에 사용할 train_l

trainl

 

train_d

석식계 학습에 사용할 train_l

traind

파생변수가 잘 만들어졌다. test set는 종속변수만 제거한 같은 형태다.

EDA

jt

코로나가 확산된 2020-03 이전에는 재택근무가 없었다. 예측해야 하는 test data가 2021년 1월 이후 데이터이므로, 재택근무가 있던 날만 추출하여 train 해야 할까? 그렇다면 데이터 양이 너무 적지 않을까?

lunchdinner

전반적으로 비슷한 추이를 보이지만 2020년 중반부터 다른 추이를 보인다. 코로나와 관련이 있을까?

corr

중식계와 석식계의 강한 양의 상관을 확인할 수 있다. 중식계를 예측하고, 예측한 중식계를 독립변수로 활용하여 석식계를 예측해 보는 방법은 어떨까?

머신러닝 결과

팀원들끼리 각자 다른 모델을 사용하여 예측해 보기로 했다. 글쓴이는 RandomForestRegressor를 사용했다.
랜덤포레스트 모델과 수치형 데이터를 사용하여 예측한 결과 public score 103.7, private score 127을 얻었다. 위에서 언급한 중식계 예측 -> 중식계 활용 석식계 예측도 실제 해본 후 점수를 확인한 결과 public score가 0.5 더 좋아졌지만, private score는 오히려 6점이 안 좋아졌다.
팀원 모두 500등 정도의 점수에서 머물고 있는 현 상황이다. 앞으로 하이퍼파라미터 튜닝이나, 다른 방법을 더 시도해봐야겠다.

반응형

댓글