Store Sales - Time Series Forecasting

min:D·2024년 12월 28일
0

kaggle

목록 보기
4/4

Use machine learning to predict grocery sales

Description

Goal of the Competition

큰 에콰도르인 식료품 리테일러인 Corporacion Favorita의 데이터로 가게 판매량을 예측하는 시계열 예측
특히, 각 Favorita 점포에서 팔리는 수천개의 아이템별 판매량을 더 정확하게 예측하는 모델을 생성할 것. -> 학습 데이터의 날짜, 점포, 물품 정보, 프로모션, 판매량으로 머신러닝 스킬을 연습하세용~

Context

예측을 기상학자만을 위한 것이 아니에요. 정부는 경제 성장을 예측하고, 과학자는 미래 인구를 예상하기 위한 시도를 멈추지 않습니다. 사업쪽에서는 상품 수요를 예측합니다. 이건 보통 데이터 사이언티스트 전문가의 직무이기도 하죠. 예측은 특히 소매(오프라인)의 식료품점과 연관이 있는데, 발주를 얼마나 해야 하는지가 중요하기 때문입니다. 만약 예측을 조금 더 크게 하면 안 팔린 채로 쌓여있거나 잘 상하는 물품이 그대로 있을 수 있어요. 적은 예측을 한다면 잘 팔리는 상품은 빨리 팔리고 매출이 안 좋아지고 고객에게도 좋지 못한 평가를 받겠죠. 머신러닝을 통한 더 정확한 예측은 고객에게 점포가 그 물건을 사고자할 때 충분한 물건을 가지고 있다는 긍정적인 생각을 가질 수 있게 만들 수 있어요.

현재 소매업 관련 주관적 예측 방법들은 근거 데이터가 거의 없고 자동화될 가능성이 낮아요. 문제는 소매점들이 새로운 위치에 독특한 수요, 새로운 물건, 계속 변화하는 사계절 취향, 예측 불가능한 상품 마케팅이 더해져서 훨씬 더 복잡해진다는 거에요.

Potential Impact

성공하려면 실제 데이터에 새로운 기술을 적용시켜야 할 겁니다. 식료품 가게의 경우, 더 정확한 예측은 재고 쌓임으로 인한 음식 낭비를 줄일 수 있고 고객의 만족도를 높일 수 있겠죠. 시간에 지남에 따라 지금 진행중인 competition의 결과는 지역 매장에 다음에 쇼핑할 때 필요한 것을 지역 매장에 정확하게 제공할 수 있을 겁니다~


Evaluation

평가 metric은 Root Mean Squared Logarithmic Error입니다.
RMSLE 계산 방법:

1nσi=1n(log(1+yi^)log(1+yi))2\sqrt{\frac{1}{n}\sigma_{i=1}^{n}(log(1+\hat{y_i})-log(1+y_i))^2}

정의:

  • nn 총 객체 개수,
  • yi^\hat{y_i} 객체(i)의 결과 예측값,
  • yiy_i 객체(i)의 실제 결과값,
  • loglog 자연 로그.

Datasets Description

에콰도르에 있는 Favorita 매장에서 판매하는 물품 수천 개의 판매량을 예측할겁니다. 학습 데이터는 날짜, 매장, 물품 정보, 물품 홍보 여부, 판매 번호를 포함하고 있습니다. 추가 파일들은 모델 구성하는데 유용한 보충 정보입니다.

File Descriptions and Data Field Information

train.csv

  • 학습 데이터는 시계열 features인 store_nbr, family, onpromotion와 결과값으로 sales로 구성
  • store_nbr 물품을 판매하는 매장 정보
  • family 물품 유형
  • sales 각 매장에서의 일일 총 판매량. 분수 값도 가능(물품이 분수 단위로 팔렸으면, 칩 1박스 이런게 아니라 치즈 1.5kg)
  • onpromotion 하루에 매장에서 홍보한 총 물품 개수

test.csv

  • 테스트 데이터는 학습 데이터와 같은 features를 가집니다. 이 데이터로 해당 날짜의 sales을 예측하면 됩니다.
  • 테스트 데이터에 있는 날짜는 학습 데이터의 마지막 날짜의 다음 날부터 15일 이후까지입니다.

sample_submission.csv

  • A sample submission file in the correct format.

stores.csv

  • Store metadata에 있는 내용: city, statet, type, cluster.
  • cluster는 비슷한 점포들의 그룹

oil.csv

  • 일일 유가. 학습과 테스트 데이터의 시간 동안의 데이터. (에콰도르는 석유 의존 국가이기 때문에 경제 상황이 유가에 치명적인 영향을 미칩니다.)

hoildays_events.csv

  • 또 다른 메타데이터로 휴일이나 어떤 사건들
  • 주의: transfferd column에 특히 신경 쓰기. transfferd holiday는 달력에 공식적으로 calendar day에 해당하지만 정부에 의해서 다른 날로 옮겨진 날입니다. transfferd day는 그냥 holiday보다는 그냥 평범한 날에 비슷합니다. (----> 임시공휴일?...) 실제로 기념일을 찾으려면 type이 Transfer인 행을 찾으면 됩니다. 예를 들어, Independencia de Guayaquil 휴일이 2012-10-09에서 2012-10-12로 바꼈습니다. 이는 실제 휴일이 2012-10-12이었다는 것입니다. Bridge 유형의 날은 휴일에 추가된 날입니다. (e.g., 긴 주말까지해서 연장된 휴일) These are frequently made up the type Work Day which is a day not normally scheduledd for work(e.g., Saturday) that is meant to payback the Bridge.
  • Additional holidays are days added a regular calender holiday, for example, as typically happens around Christmas (making Christmas Eve a holiday).

transaction.csv

  • 학습 데이터의 sales 칼럼이랑 높은 연관성을 가지는 데이터
  • 매장의 판매 패턴을 이해할 수 있어요.

Additional Notes

  • 보통 임금은 2주에 한 번(15일, 월 마지막 날) 지급됩니다. 슈퍼마켓 임금도 이를 따를 수 있습니다.
  • 에콰도르에서 2016.04.16에 강도 7.8의 지진 발생했었습니다. 사람들이 지진 이후에 몇 주동안 물과 생필품을 기부하기 위해서 구호활동을 했었습니다. 이는 슈퍼마켓의 매출에 큰 영향을 미쳤습니다.

Code

  • Interpolation for Oil Prices
  • Detailed Data Manipulation for Holiday and Events Data
  • Exploratory Data Analysis
  • Hypothesis Testing
  • Modeling

This competitions is about time series forecasting for stor sales.

import numpy as np
import pandas as pd
import os
import gc
import warnings

# PACF - ACF
import statsmodels.api as sm

# DATA VISUALIZATION
import matplotlib.pyplot as plt
import seaborn as sns
improt plotly.express as px

# CONFIGURATIONS
pd.set_options('display.max_columns', None)
pd.options.display.float_format = '{:.2f}'.format
warnings.filterwarnings('ignore')

0개의 댓글