Untitled

ARIMA

지난 시간에 이상치 전처리한 데이터로 ARIMA 모델 진행

파이썬의 auto_arima를 이용해서 적절한 p, d, q를 찾고 2023-04-04부터 2023-04-25까지의 일별 평균 판매량 값을 예측

Untitled

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

Untitled

Untitled

Untitled

Untitled

Memory Optimization Techniques

  1. Data Stacking

Untitled

Untitled

※ 개당판매금액 = 판매금액 / 판매개수

⇒ 직전 값과 직후 값으로 개당판매금액 결측치를 대체(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)

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

Untitled

Untitled

  1. Memory Optimizaion Techniques

Prophet

-Facebook (현 Meta) 에서 만든 시계열 예측 라이브러리

-날짜 정보와 예측할 y만 있으면 되기에 간편하면서 성능이 좋음.

Untitled

Untitled

g(t) : Growth, 반복적이지 않은 트렌드

s(t) : Seasonality, 주기를 가지고 있는 계절성

h(t) : Holiday, 규칙적이지 않은 영향이 있는 이벤트 (휴일/휴가, 비정기적인 사건과 같은 변화)

-유연성 : 계절성과 여러 기간들에 대한 예측을 쉽게 모델이 적용할수 있음.

-ARIMA모델과 다르게, 모델을 차분해서 정규화 시킬필요도 없고 결측치들을 굳이 넣을 이유 없음.

  1. Prophet으로 2/23~3/28 데이터 보간

Untitled

Untitled

-holiday 패키지를 이용해서 한국의 공휴일 추가

-반복문으로 MAPE 구하고 이를 Parameter로 활용함.

Untitled

{'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 : 계절성 추정 민감도로 높을수록 민감

Untitled