
지난 시간에 이상치 전처리한 데이터로 ARIMA 모델 진행
파이썬의 auto_arima를 이용해서 적절한 p, d, q를 찾고 2023-04-04부터 2023-04-25까지의 일별 평균 판매량 값을 예측

총 제품이 15890개인데, 이 모든 제품을 예측하는데에 시간이 굉장히 오래 걸려서 10개의 제품으로 예측을 진행해봄




Dataset



필요한 정보가 여러 데이터셋에 분산되어 나타나 있음.
시간의 흐름이 일반적으로 row에 따라 진행되는 것이 아닌, column에 따라 진행됨.
⇒ 필요한 정보를 하나의 데이터셋에 취합하고 Feature engineering이 수월하도록 각 dataset을 transpose하여 stacking!

※ 개당판매금액 = 판매금액 / 판매개수
⇒ 직전 값과 직후 값으로 개당판매금액 결측치를 대체(ffill, bfill)
def fill_missing_values(group):
return group.fillna(method='ffill').fillna(method='bfill')
cat_df['개당판매금액'] = cat_df.groupby('ID')['개당판매금액'].transform(fill_missing_values)
ex) ID = 1인 상품의 해당 기간 판매 단가 추이


⇒ 하나의 상품 안에서도 해당 기간 동안 단가가 변화함을 알 수 있음.


-Facebook (현 Meta) 에서 만든 시계열 예측 라이브러리
-날짜 정보와 예측할 y만 있으면 되기에 간편하면서 성능이 좋음.


g(t) : Growth, 반복적이지 않은 트렌드
s(t) : Seasonality, 주기를 가지고 있는 계절성
h(t) : Holiday, 규칙적이지 않은 영향이 있는 이벤트 (휴일/휴가, 비정기적인 사건과 같은 변화)
-유연성 : 계절성과 여러 기간들에 대한 예측을 쉽게 모델이 적용할수 있음.
-ARIMA모델과 다르게, 모델을 차분해서 정규화 시킬필요도 없고 결측치들을 굳이 넣을 이유 없음.


-holiday 패키지를 이용해서 한국의 공휴일 추가
-반복문으로 MAPE 구하고 이를 Parameter로 활용함.

{'changepoint_prior_scale': 1.0,
'holidays_prior_scale': 0.01,
'n_changepoints': 25,
'seasonality_mode': 'multiplicative',
'seasonality_prior_scale': 0.6}
changepoint_prior_scale : CP (Change Point : Trend가 변화하는 시점) 추정 민감도로 높을수록 민감
holidays_prior_scale : 휴일 추정 민감도로 높을수록 민감
n_changepoint : CP의 수 (최대치)
seasonailty_mode : 계절성 모델 (additive: 데이터 진폭이 일정, multiplicative :데이터의 진폭이 점점 증가하거나 감소)
seasonality_prior_scale : 계절성 추정 민감도로 높을수록 민감
