시계열 해석 라이브러리 Prophet 공식 문서 번역 7 (증가하는 주기성편)

Facebook이 공개하고 있는 시계열 해석용의 라이브러리 Prophet의 공식 문서를 번역해 갑니다.

목차
1.Prophet 공식 문서 번역(개요 및 특징편)
2.Prophet 공식 문서 번역(설치편)
3.Prophet 공식 문서 번역(퀵 스타트편)
4.Prophet 공식 문서 번역(포화 상태의 예측편)
5.Prophet 공식 문서 번역(트렌드의 변화점편)
6.Prophet 공식 문서 번역(주기성·이벤트 효과·설명 변수의 추가편)
7.Prophet 공식 문서 번역(증가하는 주기성편)
8.Prophet 공식 문서 번역(오차의 간격편)
9.Prophet 공식 문서 번역(특이편)
10.Prophet 공식 문서 번역(1일 단위가 아닌 데이터편)
11.Prophet 공식 문서 번역(모델의 진단편)
12.Prophet 공식 문서 번역(도움말편)

2018/10/25 공개. 원문 링크는 이하.
・Prophet 개요 & 특징: htps : // 펑세보오 k. 기주 b. 이오 / p로 p에 t /
・공식 문서: htps : // 펑세보오 k. 기주 b. 이오 / p로 p에 t / 두 cs / 구이 ck_s rt. HTML

이번 기사는 계속 증가하는 주기성편입니다.


계속 증가하는 주기성



기본 설정에서 Prophet은 여러 주기성만 피팅합니다. 이는 예측을 얻기 위해 주기성 효과가 추세에 추가되었음을 의미합니다. 아래에 있는 비행기의 승객수에 대한 시계열 데이터는, 복수의 주기성을 추가해 가는 방법으로는 잘 되지 않는 예입니다.
# R
df <- read.csv('../examples/example_air_passengers.csv')
m <- prophet(df)
future <- make_future_dataframe(m, 50, freq = 'm')
forecast <- predict(m, future)
plot(m, forecast)
# Python
df = pd.read_csv('../examples/example_air_passengers.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(50, freq='MS')
forecast = m.predict(future)
fig = m.plot(forecast)


이 시계열 데이터는 매우 명확한 주기성이 있습니다. 그러나 시계열 데이터를 시작하는 분은 예측한 주기성의 값이 실측치보다 크고 시계열 데이터의 끝에서 예측값이 작다는 문제가 있습니다. 이 시계열 데이터에는 Prophet이 추측한 것처럼 연속적으로 주기성을 추가하는 방법은 적응할 수 없습니다. 오히려 이 데이터는 주기적으로 값이 상승하고 있다고 할 수 있습니다. 이것이 계속 증가하는 주기성입니다.

Prophet은 seasonality_mode='multiplicative'라는 인수를 사용하여 계속 증가하는 주기성을 모델링 할 수 있습니다.
# R
m <- prophet(df, seasonality.mode = 'multiplicative')
forecast <- predict(m, future)
plot(m, forecast)
# Python
m = Prophet(seasonality_mode='multiplicative')
m.fit(df)
forecast = m.predict(future)
fig = m.plot(forecast)


이 주기성에 대한 자세한 내용은 주기성을 백분율로 표시한 추세를 플롯하여 표시합니다.
# R
prophet_plot_components(m, forecast)
# Python
fig = m.plot_components(forecast)

seasonality_mode='multiplicative'라는 인수를 사용하여 계속 증가하는 주기성을 모델링하는 방식으로 이벤트 효과를 모델링 할 수 있습니다. 디폴트 설정에서는, seasonality_mode 라고 하는 인수를 지정하는 것으로, 어떤 추가의 주기성이나 추가의 설명 변수에 대해서도 사용할 수 있습니다. 그러나, mode='additive'mode='multiplicative' 와 같은 형태로 인수를 지정하는 것으로, 추가하는 것이 주기성인가, 설명 변수인지 명확화할 수가 있습니다.

예를 들어, 다음 코드는 주기성을 mode = 'multiplicative'로 지정합니다. 그러나 거기에 분기별 주기성과 설명 변수를 추가하고 있습니다.
# R
m <- prophet(seasonality.mode = 'multiplicative')
m <- add_seasonality(m, 'quarterly', period = 91.25, fourier.order = 8, mode = 'additive')
m <- add_regressor(m, 'regressor', mode = 'additive')
# Python
m = Prophet(seasonality_mode='multiplicative')
m.add_seasonality('quarterly', period=91.25, fourier_order=8, mode='additive')
m.add_regressor('regressor', mode='additive')

이 모델의 예측 결과를 플롯하면 모델에 주기성을 더한 결과와 증가하는 주기성을 모델에 더한 결과를 각각 따로 볼 수 있습니다.

좋은 웹페이지 즐겨찾기