반응형
Prophet는 Facebook에서 개발한 오픈 소스 시계열 데이터 예측 도구이다. 비정상적이고 결측치가 있는 데이터에 강하며, 주기적 패턴과 추세를 감지하는 데 효과적이다. Python과 R에서 사용할 수 있으며, 가장 큰 장점은 사용하기가 매우 쉽다.
머신러닝, 딥러닝과 같은 인공지능 모델보다는 ARIMA와 같은 확률적 모형에 가깝다고 할 수 있고,
다만 ARIMA 보다는 좀 더 도메인 지식(가정) 을 모델에 유연하게 입힐 수 있다.
- Prophet 모델의 생성과 학습은 아래 코드 3줄이 전부다.
- 주의할 점은, Prophet의 입력 데이터는 칼럼명을 ds (= 날짜), y (= 값)으로 설정해줘야 한다.
- Prophet 에는 사용가능한 다양한 옵션들이 있는데, 이들 각각에 대해서는 나중에 정리하겠다.. 여러가지 옵션을 통해서 연간 계절성이 있는지, 값이 급격히 바뀌는 특정 분기점(change point) 이 있는지 등.. 도메인 가정을 입힐 수 있다.
from prophet import Prophet
ts.index=pd.date_range(start = '2013-01-01',end='2015-10-01', freq = 'MS') # Month Start
ts.columns=['ds','y'] # prophet 패키지를 이용할때는 컬럼명을 이렇게 바꿔줘야함 : ds = 날짜컬럼 , y = 값 컬럼 // ds 컬럼의 형식은 무조건 datetime 이어야한다.
# model = Prophet(model_params)
model = Prophet(yearly_seasonality=True) # Instantiate the model : 프로펫 모델은 처음에 instantiate 를 먼저 한번 해줘야함. instantiate 한번에 피팅 한번밖에 못함
# Prophet params : 프로펫의 다양한 사용가능 옵션들
# Example
# growth(values = c("linear", "logistic"))
# changepoint_num(range = c(10L, 50L), trans = NULL)
# changepoint_range(range = c(0.6, 0.9), trans = NULL)
# seasonality_yearly(values = c(TRUE, FALSE))
# seasonality_weekly(values = c(TRUE, FALSE))
# seasonality_daily(values = c(TRUE, FALSE))
# prior_scale_changepoints(range = c(-3, 2), trans = log10_trans())
# prior_scale_seasonality(range = c(-3, 2), trans = log10_trans())
# prior_scale_holidays(range = c(-3, 2), trans = log10_trans())
model.fit(ts) # fit the model
- 학습된 모델을 통한 예측
- future 데이터프레임은 기존에 ds 로 정의한 칼럼에, 예측하고자 하는 구간인 period 기간만큼을 연장해서 만들어줌
# Predict for five months in the furure
future = model.make_future_dataframe(periods = 5, freq = 'MS') # 모델이 피팅한 데이터 (ts) 에 5개 주기만큼을 더한 시점데이터를 만듬
forecast = model.predict(future)
- 예측 결과에 대한 시각화. 예측값(점추정 + 구간추정) 과 실제값을 비교해서 시각화할 수 있고, 추세와 계절성에 대한 요소분해 결과도 볼 수 있다.
model.plot(forecast)
# plot the model forecast chart with component charts in trend and seasonality
model.plot_components(forecast)
반응형
'Study > 시계열' 카테고리의 다른 글
6. 시계열 데이터 클러스터링 (DTW, TimeSeriesKMeans) (0) | 2024.07.09 |
---|---|
5. Seq2Seq 모델을 이용한 다변량 다중시점 시계열 예측 (0) | 2024.07.08 |
3. 딥러닝을 이용한 시계열 예측 (TensorFlow, LSTM) (1) | 2024.07.08 |
2. 시계열 분석을 위한 확률모형 (0) | 2024.06.26 |
1. 시계열 데이터와 시계열 분석 (0) | 2024.06.24 |
댓글