Prophet에서 인스턴트 기계 학습
소개
이 기사는 MicroAd Advent Calendar 2017의 23일째 기사입니다.
현재 마이크로 애드에서 내정자로 아르바이트를하고 있습니다.
최근 Prophet을 알았으므로, 그에 대해 조금만 써 드리겠습니다.
Prophet이란?
슈퍼 간단하게 쓸 수 있는 시계열 데이터 전용의 페이스북이 만든 기계 학습 라이브러리입니다.
현시점에서는 python과 R에 대응하고 있는 것 같습니다.
이번에는 파이썬으로 버전
fbprophet==0.2.1
을 사용해 보겠습니다.이번 시도해 볼 데이터
최근 난고하의 격렬한 BTC를 주제로 향후 1년간 어떤 가치 움직임을 할지 적당히 예측합니다.
이번에는 다음 사이트에서 데이터를 얻었습니다. CSV로 저장할 수 있기 때문에 pandas 등에서 사용하기 편리합니다.
"日付け","終値","始値","高値","安値","前日比%"
"2017年12月23日","1,709,670","1,593,787","1,839,993","1,278,313","7.27"
"2017年12月22日","1,593,787","1,830,241","1,993,563","1,260,284","-12.92"
"2017年12月21日","1,830,241","1,875,889","2,105,416","1,768,900","-2.43"
...
"2014-09-19","43,370","45,779","52,882","41,302","-5.26"
"2014-09-18","45,779","48,559","52,882","45,020","-5.73"
"2014-09-17","48,559","49,299","50,653","47,561","-1.50"
지난 2~3년분 정도의 BTC/JPY 데이터를 입수할 수 있습니다.
Prophet을 이용할 때는 date나 datetime의 컬럼명을
ds
로 하고, 분석 대상의 수치를 y
로 하지 않으면 안됩니다.그래서 이번에는 「yyyy년 mm월 dd일」을 「yyyy-mm-dd」로 변환, 종가를 수치로 변환해 각각 컬럼명을
ds
와 y
로 합니다.ds,y
2014-09-17,48559
2014-09-18,45779
2014-09-19,43370
...
2017-12-21,1830241
2017-12-22,1593787
2017-12-23,1709670
프로그램
필요한 라이브러리는 pandas와 fbprophet뿐입니다.
pip3 install pandas
pip3 install fbprophet
그리고 코드는 이것뿐입니다!
import pandas as pd
from fbprophet import Prophet
data = pd.read_csv("BTC_JPY.csv")
model = Prophet()
model.fit(data)
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)
model.plot(forecast)
model.plot_components(forecast)
세세하고 번거로운 것은 전부 Prophet가 해 줍니다만,
어느 정도의 파라미터를 설정할 수도 있습니다.
예:
model = Prophet(growth='logistic')
다음은 설정할 수 있는 파라미터와 그 초기값입니다.growth='linear',
changepoints=None,
n_changepoints=25,
yearly_seasonality='auto',
weekly_seasonality='auto',
daily_seasonality='auto',
holidays=None,
seasonality_prior_scale=10.0,
holidays_prior_scale=10.0,
changepoint_prior_scale=0.05,
mcmc_samples=0,
interval_width=0.80,
uncertainty_samples=1000
실행 결과
-고찰-
앞으로도 올라갈 것 (적당)
요약
통계나 수학이나 프로그래밍을 전혀 할 수 없는 나라도, 어쩐지 그럴듯한 결과를 출력한 척을 할 수 있었습니다.
사용해 보았던 장점은 다음 3가지입니다.
· 세세한 설정없이 우선 실행할 수 있습니다.
· 학습이 빠르다.
· 결과 그래프의 출력도 간단
비교적 간단하다고 하는 scikit-learn이나 Keras에서도, 이번과 같은 것을 하려고 하면 나름대로 지식이 필요합니다.
물론, 이러한 라이브러리는 시계열 데이터에 한하지 않고 학습할 수 있어 모델의 설계나 튜닝을 할 수 있는 유연성이 있습니다.
Prophet은 우선 일단 바삭바삭하게 예측해 보는 것 같은 사용법을 할 수 있는 것이 매우 매력적입니다.
P.S.
VisualStudioCode에 확장 "Jupyter"를 넣으면 Python의 개발 환경으로 매우 훌륭하게되었습니다.
Reference
이 문제에 관하여(Prophet에서 인스턴트 기계 학습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/somasomaso-ma/items/bc626255744c3969dc9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)