Prophet 이란? 🤔
Prophet은 시계열의 깊은 이해가 없어도 다양한 Parameter를 통해서 시계열을 활용할수 있도록 만들어진 모듈입니다.
Prophet 은 트렌드와 휴일과 데이터의 추세를 반영할수 있고,계절성을 추가해서 데이터를 다양한 방면으로 학습할수 있습니다.
월드컵,올림픽 과 같은 데이터로 보여지지 않은 주변 영향력까지 반영해서 더욱 강력한 예측 결과를 나타낼수 있습니다.
Prophet parameter 정리
👍(중요도는 엄지 수로 표시)
changepoint_prior_scale : 0.05 [default] 👍👍👍👍👍
추세에 따라 데이터를 유연하게 반영할 건지 추세에 유연하지 않게 반영할 건지 결정하는 parameter
추세에 덜 유연하게 반영하려면 default 값인 0.05 보다 작게 설정
추세에 유연하게 반영하려면 0.05 보다 크게 설정
추가적으로 기준일에 전날까지 반영할 거면 lower_window = -1, upper_window = 0
기준일에 다음날까지 반영하면 lower_window = 0, upper_window = 1
seasonality_prior_scale : 10 [default] 👍👍👍👍👍
계절의 유연성을 제어하는 parameter 값이 크면 계절성의 영향이 커지고 값이 작아지면 계절성의 영향이 줄어듦
합리적인 조정 범위는 [0.01,10] 사이
holidays_prior_scale : 10.0 [default] 👍👍👍👍👍
휴일의 영향에 따라 유연성을 조절하는 parameter
조절 범위는 [0.01,10]
seasonality_mode : 'additive' [default] 👍👍👍
옵션에는 ['addtive','multiflicative']
'addtive' : 시계열 데이터가 진폭이 일정할 때 사용
'multiflicative' : 시계열 데이터의 진폭이 점점 증가하거나 감소할 때 사용
changepoint_range : 0.8 [default]
change point의 설정 가능 범위를 의미
0.8 이면 데이터의 80% 중 changepoint를 자동으로 설정함
조절 범위 [0.8,0.95]
growth : linear [default] 👍👍👍
옵션 [liner, logistic] 존재
prophet logistic을 사용한다고 할 때는 cap, floor이라는 값을 설정
정해진 기준은 없고 모델을 돌리고 확인한 후에 설정하는 것을 추천
changepoints : auto[default]
변경점을 수동으로 설정하기 위한 parameter
n_changepoints : 25 [default]
자동으로 배치된 변경점의 수, 일반적인 시계열의 추세 변화를 파악하기 위해서 충분한 수로 설정해야 함.
변경점의 수를 늘리거나 줄이는 것보다 추세 변화에서 유연성을 변경하는 것이 더 효과적일 수 있음
yearly_seasonality : auto [default] 👍👍👍👍
데이터와 연간 계절성을 가지면 True 아니면 False로 설정 이와 같이 weekly_seasonality,daily_seasonality 존재
각각의 계절성이 보인다면 키고 seasonality_prior_scale을 조절하는 게 효과적
holidays
지정된 공휴일의 데이터 프레임을 전달하기 위해서 사용
휴일 효과는 holidays_prior_scale을 통해서 조정
mcmc_samples : 0 [default]
계절성의 불확실성을 확인할 때 사용됨 기본적으로 Prophet은 추세 및 관찰 노이즈의 불확실성만을 반환함
계절성에 대한 불확실성을 얻으려면 전체 베이지안 샘플링을 수행해야 함
interval_width : 0.8 [default]
Prophet의 predict은 yhat_upper, yhat_lower 와 같은 불확실성 구간을 반환함
이것은 불확실성 구간에만 영향을 미치고 예측 yhat을 전혀 변경하지 않으므로 조정할 필요 없음
uncertainty_samples : 1000 [default]
위와 같이 불확실성의 구간을 조정함
Prophet 중요한 Parameter 👏
--내가 사용한 경험기준!
changepoint_prior_scale
: Prophet 데이터에서 자동으로 changepoint를 80% 지점에서 자동으로 잡아서 추세를 설정하는데 그 때의 추세를 강하게 반영할건지 작게 반영할건지 선택하는 parameter
seasonality_prior_scale
: yearly_seasonality,weekly_seasonality,daily_seasonality 와 관련이 깊은 Parameter
위와 같은 seasonality를 True하고 seasonality_prior_scale로 영향력을 줄이는게 효과적이다.
+추가로 add_seasonality(name='monthly',period=30.5,fourier_order=5) 와 같이 add_seasonality를 추가해서 계절성을 임의로 줄수있다.
3 .holidays_prior_scale
: 휴일의 영향력을 반영하는 Parameter , add_country_holidays(country_name='KR') 으로 한국의 휴일을 반영시킬수있다.
😆 다음에는 Prophet 예를 통해서 사용방법을 기술하도록 하겠습니다.