■ [Ai] Prophet Tutorial #1 - Installation & Quick Start
오늘은 지난포스팅에 이어 Prophet을 좀 더 자세히 살펴보도록 하겠습니다.
https://facebook.github.io/prophet/docs/installation.html
여기 있는 문서를 참고로 한 번 tutorial을 진행해보려고 합니다.
Jupyter notebook을 사용하여 Python언어를 사용할 예정입니다.
Jupyter notebook은 아래 링크를 참고하셔서 설치하시면 됩니다.
Jupyter notebook, Python이 설치가 완료되었다면 이제 Prophet을 정말로
시작해보도록 하겠습니다.
● Install
Prophet을 설치하는 방법은 매우 간단합니다.
pip에서 제공을 해주기 때문이죠. 아래 명령어 한줄이면 설치가 완료입니다.
[root@localhost ~]# pip install fbprophet |
● Start
Prophet 설치가 완료되었다면 간단한 예제를 통해 예측을 한번 해보겠습니다.
저한테 어떤 시계열 데이터가 있을까? 라고 생각을 해보았는데요.
저의 블로그 방문자수를 이용하면 좋을 것 같다고 생각되어 이를 사용하기로 했습니다.
먼저 코드는 튜토리얼과 같이 아래와 같이 작성했습니다.
● #1. 라이브러리 설정 및 csv파일 읽기
여기서 사용한 pandas 라이브러리는 데이터 처리 등을 쉽게 하기 위해 만들어진
python패키지로써 csv파일을 읽어와 데이터를 처리하기 위해 사용되었습니다.
앞으로도 많이 사용될 것으로 예상됩니다. 공식 사이트는 아래와 같습니다.
좀 더 자세한 정보를 원하시는 분은 여기로 ... (https://pandas.pydata.org/)
tubee.csv에는 제 블로그 1년 방문자 수가 저장되어 있는 파일입니다.
(2017.05.01 ~ 2018.05.31)
● #2. Prophet 오브젝트 생성 및 예측 기간 설정
다음으로는 m이라는 Prophet 오브젝트를 생성해줍니다.
생성 후에 1년간의 과거 방문자 데이터 df를 fit시켜줍니다.
그리고 우리가 예측할 dataframe을 만들어줍니다. 여기서는 이후 30일로 설정했습니다.
즉 6월 1일 ~ 6월 30일까지의 방문자를 예측해보는 것이죠.
● #3. Prophet으로 실제 예측 및 결과값 확인
이제 준비가 끝났으니 실제 예측을 해보도록 하겠습니다.
방법은 매우 간단합니다. Prophet 오브젝트의 predict 메소드를 사용하면 끝납니다.
그리고 실제 예측 데이터는 다음과 같은 결과를 알려주었습니다.
yhat이 예측 결과이며, yhat_lower는 예측 최소 값 yhat_upper은 예측 최대 값로
보시면 될 것 같습니다. 즉 lower와 upper 사이의 값을 예측한다고 보면 될 것 같아요.
이미 6월이 조금 지났으니... 실제 데이터와 예측 데이터를 비교해보면 얼마나 정확한지
알겠죠. 6월 1일 ~ 6월 9일의 예측 데이터와 실제 데이터 비교 결과입니다.
Date | 실제 |
예측 |
정확도 |
2018-06-01 | 138 |
106.92 |
78% |
2018-06-02 | 91 |
71.83 |
79% |
2018-06-03 | 89 |
79.18 |
89% |
2018-06-04 | 239 |
96.25 |
41% |
2018-06-05 | 165 |
90.53 |
55% |
2018-06-06 | 128 |
101.84 |
80% |
2018-06-07 | 188 |
86.60 |
46% |
2018-06-08 | 173 |
80.90 |
47% |
2018-06-09 | 114 | 46.92 | 42% |
평균 정확도는 약 62%정도 입니다. 간단한 구현으로 이 정도 정확도가 나왔군요.
막 높지는 않지만 간단히 구현한 결과로 이정도면 괜찮은 것 같습니다.
여기서 끝은 아닙니다. 이를 그래프로 볼 수도 있습니다. plot()메소드를 사용했습니다.
검정색 점이 실제 데이터 값이며, 파란색 실선이 예측 값입니다.
그리고 그 위 아래 하늘색 범위가 lower와 upper 영역입니다.
전체적으로 비슷한 방문자 추이를 예측하고 있네요. 그리고 outlier에 대해서는 크게
영향을 받는 것 같지는 않습니다.
Trend 또한 분석이 가능합니다.
지난 여름 이후 방문자 trend가 점점 감소하고 있네요... 더 열심히 해야겠습니다
그리고 weekly trend는 거의 정확한 것 같습니다.
방문자가 주말에는 적고 평일(특히 수요일)에는 많은 것은 매우 비슷하네요.
신기합니다 ㅎㅎ
여기서 앞으로 Prophet의 여러 피쳐들을 더한다면 더욱 정확한 결과를 얻을 수 있을 것
같다고 생각됩니다. 매우 흥미로운 것 같네요.
이번 포스팅은 Prophet Docs의 Quick Start부분 까지를 참고하여 구현해보았습니다.
(https://facebook.github.io/prophet/docs/quick_start.html)
방문자 예측을 직접 해보니 흥미를 가지고 더욱 공부할 수 있을 것 같습니다.
그럼 이만 포스팅을 마치겠습니다. 감사합니다.
'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 #3 - Trend ChangePoints (0) | 2018.06.17 |
[Prophet] Prophet Tutorial #2 - Saturating Forecasts (0) | 2018.06.15 |
[Prophet] Facebook의 Prophet Tool (0) | 2018.06.09 |