본문 바로가기

시계열분석

prophet

model = Prophet()
model.fit(df)

prophet은 페이스북에서 공개한 시계열 예측 라이브러리로, 훨씬 쉽고 빠르게 시계열 분석을 이용할 수 있습니다.

 

prophet model은 holiday라는 식이 하나 추가된 모습을 볼 수 있습니다.

g(t)는 추세, 즉 주기적이지 않은 변화를, s(t)는 주기적 패턴을 보이는 계절성, h(t)는 휴일, 마지막 항은 정규분포를 띄는 오차를 나타내는 식입니다.

 

휴일의 경우, 비행기 판매량이 늘어난다던가, 거래가 중지 된다던가 등 다양한 평소와는 다른 변수들이 있기 때문에 일상과 다른 휴일의 변수를 더해주어야합니다.

 

prophet을 import 하기 위해서는

from fbprophet import Prophet

을 통해 라이브러리를 예측해주면 됩니다.

 

그 다음

model = Prophet()
model.fit(df)

를 사용해 가장 간단하게 피팅을 할 수 있습니다.

 

그러나, 더 정교한 모델을 만들기 위해서는  파라미터 조정을 해줘야하는데요,

prophet은 이 파라미터의 조정이 아주 편리합니다.

 

먼저, trend 부분을 보면

changepoint, changepoint_prior_scale, n_changepoints 등을 이용해 파라미터의 조절을 할 수 있습니다.

 

각각 추세가 변화한 시점, 그 changepoint의 유연성 조절, changepoint의 개수를 나타내는 파라미터들입니다.

 changepoint_prior_scale 이 부분을 높이면, 모델이 트렌드를 더욱 유연하게 감지할 수 있으나, 너무 높아지면 과적합의 문제가 있기 때문에 적당한 지점을 찾아야 합니다..

 

seasonality의 부분은

year_seasonality, weekly_seasonality, daily_seasonality, seasonal_prior_scale, seasonality_mode 등을 이용해 파라미터 조정을 할 수 있습니다. 나머지는 직관적으로 이해할 수 있으니, 

seasonality_mode 부분만 보면, 이 부분에는  additive와 multiplicative  두 가지 값 중 하나를 넣어줍니다.

additive는 데이터의 진폭이 일정한 경우, multuplicative는 데이터의 진폭이 점점 증가, 감소 하는 경우에 사용해 줄 수 있습니다. 식으로 나타내면 아래와 같이 나타낼 수 있습니다.

 

additive => timeseries = trend +seasonality + error

multiplicative => timeseries = trend*seasonality*error

 

holiday는 자신이 직접 holiday를 지정해서 dataframe으로 만들어 넣어 줄 수도 있지만 이미 제공된 holiday를 받아와 쓸 수 있습니다.

 

model.add_country_holidays(국가코드) 를 사용하면 간단하게 국가 공휴일이 반환됩니다.

 

 

'시계열분석' 카테고리의 다른 글

ARIMA&SARIMA  (0) 2021.11.07
Fitting the ARMA model  (0) 2021.10.10
시계열분석 _ ARMA모델 개념정리  (0) 2021.10.03
시계열분석 _ 자기상관과 ACF  (0) 2021.09.25
시계열분석 기초(1)  (1) 2021.09.24