■ [Ai] Prophet Tutorial #3 - Trend ChangePoints
오늘은 Prophet 튜토리얼 세 번째 포스팅입니다.
오늘의 주제는 Trend Changepoints 입니다.
https://facebook.github.io/prophet/docs/trend_changepoints.html
● Trend ChangePoints
앞서 Prophet으로 예측한 결과의 그래프를 보면 그 트렌드가 변경하는 지점이 있었습니다
Prophet은 기본적으로 이러한 트렌드가 변경하는 지점을 자동으로 감지하여 트렌드를
예측한다고 합니다. 하지만 이를 사용자가 직접 세밀하게 제어할 수 있는데요.
이러한 Trend ChangePoints에 대해서 알아보고 이를 어떻게 제어할 수 있는지
튜토리얼을 진행하며 살펴보겠습니다.
● #1. Automatic changepoint detection in Prophet
첫 번째는 Prophet이 자동으로 Trend Changepoint를 찾는 모습을 보겠습니다
기본적으로 Prophet은 예측하고자 하는 시계열 데이터의 80%의 크기만큼에서 잠재적으로
ChangePoint를 지정합니다. 물론 이 크기는 변경시킬 수 있습니다.
아래 코드는 90%만큼 ChangePoint를 지정하도록 합니다.
m = Prophet(changepoint_range=0.9) |
물론 50%만큼을 설정하고 싶다면 값을 0.5로 해주면 됩니다.
그리고 이 ChangePoint를 시각화 시키는 코드는 다음과 같습니다.
from fbprophet.plot import add_changepoints_to_plot fig = m.plot(forecast) a = add.changepoints_to_plot(fig.gca(), m, forecast) |
이렇게 하여 fig를 출력해 주면 저의 코드에서는 아래와 같은 그래프가 나옵니다.
빨간 점선이 ChangePoint를 뜻하며, 빨간 실선은 Trend를 뜻합니다.
● #2. Adjusting trend flexibility
두 번째로는 이 ChangePoint의 유연성을 조정하는 방법을 확인해보겠습니다.
각 데이터의 트렌드에 따라 유연성을 조정할 수 있습니다.
너무 유연성이 심하거나 (Overfit) 유연성이 충분하지 않은 경우 (Underfit)
이를 활용할 수 있습니다. 기본적으로 이 값은 0.05가 Default값입니다.
이를 변화시키기 위해서는 아래 코드를 사용합니다.
m = Prophet(changepoint_prior_scale=0.05) |
이 값을 늘린다면 더욱 트렌드가 유연해지며 Underfit 문제를 해결할 수 있습니다.
반대로 이 값을 줄인다면 Overfit의 문제를 어느정도 해결할 수 있겠습니다.
위의 그래프를 보시면 제 데이터는 Underfit한 문제를 가지고 있습니다.
이를 위해 changepoint_prior_scale의 값을 0.5로 수정하여 조정해보겠습니다.
결과는 아래와 같습니다. 적절한 트렌드가 나타나는 것 같습니다.
● #3. Specifying the locations of the changepoints
세 번째로는 특정 point를 changepoint로 설정하는 방법입니다.
필요할 경우에 사용된다고 하지만, Prophet이 자체적으로도 잘 잡아주기는 합니다.
방법은 간단합니다.
m = Prophet(changepoints=['2018-05-01']) |
Trend ChangePoints에 대한 Tutorial을 마치겠습니다.
포스팅을 마치기 전에 지난 Saturating Forecasts의 피쳐와 함께 적용한 정확도를
비교해보겠습니다. 비교 데이터는 기존과 동일한 6월1일 ~ 6월9일 데이터입니다.
지난 Saturating Forecasts 피쳐를 적용하여 정확도는 약 72%로 상승했었습니다.
나머지 설정은 동일하며 changepoint에 대한 프로퍼티 값은 위에서와 같습니다.
Date | 실제 | 예측 | 정확도 |
2018-06-01 | 138 | 148.21 | 93% |
2018-06-02 | 91 | 116.94 | 78% |
2018-06-03 | 89 | 128.11 | 69% |
2018-06-04 | 239 | 148.65 | 62% |
2018-06-05 | 165 | 146.50 | 89% |
2018-06-06 | 128 | 161.08 | 79% |
2018-06-07 | 188 | 148.89 | 79% |
2018-06-08 | 173 | 146.95 | 85% |
2018-06-09 | 114 | 115.69 | 99% |
합계 | 81.4% |
이번 피쳐를 적용한 결과는 81.4%의 정확도입니다.
또 다시 약 10%가량 정확도가 상승했습니다. 신기하네요
ChangePoint의 유연성을 조정하여 UnderFit의 문제를 해결하였더니 더욱 높은 정확도가
되었습니다. 아직까지는 여러 피쳐들을 조합하여 사용하는 것이 의미가 있는 것 같습니다
우선은 이렇게 정하고 계속해서 tutorial을 진행하도록 하겠습니다.
그럼 포스팅을 마치겠습니다. 감사합니다
'AI > Prophet' 카테고리의 다른 글
[Prophet] Prophet Tutorial #5 - Multiplicative Seasonality (0) | 2018.06.30 |
---|---|
[Prophet] Prophet Tutorial #4 - Holiday Effects (444) | 2018.06.22 |
[Prophet] Prophet Tutorial #2 - Saturating Forecasts (0) | 2018.06.15 |
[Prophet] Prophet Tutorial #1 - Installation & Quick Start (2) | 2018.06.10 |
[Prophet] Facebook의 Prophet Tool (0) | 2018.06.09 |