AI/Prophet

[Prophet] Prophet Tutorial #1 - Installation & Quick Start

zamezzz 2018. 6. 10. 15:09

 [Ai] Prophet Tutorial #1 - Installation & Quick Start



오늘은 지난포스팅에 이어 Prophet을 좀 더 자세히 살펴보도록 하겠습니다.


https://facebook.github.io/prophet/docs/installation.html


여기 있는 문서를 참고로 한 번 tutorial을 진행해보려고 합니다.


Jupyter notebook을 사용하여 Python언어를 사용할 예정입니다.

Jupyter notebook은 아래 링크를 참고하셔서 설치하시면 됩니다.

http://jupyter.org/install


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)


방문자 예측을 직접 해보니 흥미를 가지고 더욱 공부할 수 있을 것 같습니다.


그럼 이만 포스팅을 마치겠습니다. 감사합니다.

반응형