단 변량 시계열을위한 Facebook 예언자

페이스 북의 장점 살펴보기 시계열 데이터를 위해 특별히 개발 된 새로운 Prophet API는 특별한 도메인 지식 없이도 추세가있는 데이터를 능숙하게 예측하기 위해 자동으로 사용하기 쉽고 좋은 하이퍼 매개 변수 세트를 찾을 수 있도록 설계되었습니다.

예의 : Facebook Prophet

그래서 예언자는 무엇입니까?

Prophet 은 분해 (추세 + 계절성 + 휴일) 구성 요소를 기반으로 단 변량 시계열 데이터를 예측하도록 설계된 Facebook에서 게시 한 오픈 소스 라이브러리 입니다. 예언자를 사용하면 특별한 도메인 지식을 요구하지 않고도 추세가있는 데이터에 대한 능숙한 예측을 수행하기 위해 자동으로 좋은 하이퍼 매개 변수 세트를 쉽게 사용할 수 있습니다.

예언자는 또한 비즈니스 시나리오의 다양한 문제에 대해 능숙하게 예측할 수있는 예측 모델에 대한 전문 지식이없는 사람에게도 하이퍼 파라미터를 조정하는 사용자 지정 쉬운 방법을 제공합니다 .

예언자 모델의 작동 :

Prophet은 시간의 선형 및 비선형 함수를 구성 요소로 맞추기 위해 시간을 회귀 자로 사용합니다.

예언자에서 우리는 추세, 계절성 및 휴일의 세 가지 구성 요소를 사용 합니다.

경향:

추세는 데이터 / 추세 또는 시계열의 비 주기적 부분에 선형 곡선을 맞추는 방식으로 모델링됩니다. 선형 접근 방식은 결 측값, 극단 값 또는 기타 이상에 의한 영향을 최소화합니다.

계절성 :

계절성을 맞추고 예측하기 위해, 예언자는 푸리에 급수에 의존하여 유연한 모델을 제공합니다.

P는 기간입니다. 365.25 / 년

매개 변수 [a1, b1,… .., aN, bN]은 계절성을 모델링하기 위해 주어진 N에 대해 추정되어야합니다.

푸리에 차수 N은 고주파수 변경이 모델링 될 수 있는지 여부를 정의합니다.

사용자가 고주파수 / 극단 값 구성 요소가 노이즈 또는 이상일 뿐이라고 느끼면 모델링을 위해 고려해야합니다. 사용자는 N의 값을 낮출 수 있습니다.

휴가:

휴일 및 무작위 이벤트는 시계열 분석의 급증에 중요한 역할을하며 이러한 이벤트를 데이터의 지속적인 쓰나미로 표시하는 것을 잊는 경향이 있습니다. 따라서 이러한 도전을 극복하기 위해 선지자는 공휴일 및 이벤트의 효과를 반영하기 위해 모델에 맞출 수있는 추가 매개 변수를 제공합니다.

변경점 : 시계열이 신제품이나 브랜드 출시와 같은 진행중인 사전 정의 된 전략에서 근본적인 변화가 발생하는지 여부에 대한 답변을 제공하는 Prophet 모델의 또 다른 중요한 용어입니다. 이러한 시점에서 성장률 / 시계열 추세는 다음과 같은 경향이 있습니다. 이것이 우리가 그것을 변화 점이라고 부르는 것입니다.

예언자에서 이러한 변경점 은 자동으로 선택됩니다. 그러나 사용자는 비즈니스 요구 사항에 따라 필요한 경우 수동으로 변경 지점을 변경할 수 있습니다.

예언자 : 점선은 주어진 시계열의 변화 지점을 나타냅니다.

변경점이 극단적으로 높거나 낮은 값을 가질 때 두 가지 문제 가 있습니다.

a.) 과적 합 및 b.) 과소 적합

그러나 과적 합 및 과소 적합 문제를 조정하고 극복하기 위해 매개 변수 'changepoint_prior_scale' 이 제공됩니다.

예언자 매개 변수 목록 :

추세 매개 변수 :

Parameter                        Description
growth                     linear’   or ‘logistic’ to specify a  
                           linear or logistic trend
changepoints               List   of dates at which to include 
                           potential changepoints (automatic 
                           if not specified)
n_changepoints             If   changepoints in not supplied, you 
                           may provide the number of changepoints
                           to be automatically included
changepoint_prior_scale    Parameter for changing flexibility of 
                           automatic changepoint selection

Parameter                          Description
yearly_seasonality            Fit   yearly seasonality
weekly_seasonality            Fit   weekly seasonality
daily_seasonality             Fit   daily seasonality
holidays                      Feed   dataframe containing holiday name and date
seasonality_prior_scale       Parameter   for changing strength of 
                              seasonality model
holiday_prior_scale           Parameter   for changing strength of 
                              holiday model

이제이를 얼마나 빨리 구현할 수 있는지 살펴 보겠습니다.

#check prophet version
Import fbprohet
#print version number
Print(‘Prophet %s % fbprophet.___version__)

Troubleshooting:
On Prompt install Ephem:
 conda install -c anaconda ephem
Install Pystan:
 conda install -c conda-forge pystan
Finally install Fbprophet
 conda install -c conda-forge fbprophet

#load the data set (car sales)
from pandas import read_csv
from matplotlib import pyplot
from pandas import to_datetime
from fbprophet import Prophet
#load data
path = ‘car_dataset.csv’
df = read_csv(path, header=0)
#summarize shape
print(df.shape)
#show first few rows
print(df.head())
#plot the time series
df.plot()
pyplot.show()
Car Sales Times Series Plot

Prophet은 데이터가 'ds'= 날짜 형식 열 & 'y'= 종속 변수에있는 특정 형식 일 것으로 예상합니다.

#Create the expected columns
#rename the columns
df.columns = ['ds','y']
#change the date column in date format
df['ds']=to_datetime(df['ds'])
#define the model
model = Prophet()
#m = Prophet(yearly_seasonality = True, seasonality_prior_scale=0.1)
#fit the model
model.fit(df)

#creating date(ds) column of same length 
future = model.make_future_dataframe(periods=213)
future.tail()
#the predicted value will be labeled as yhat
forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
#we can simple take a look bytearray
model.plot(forecast)
#we can look at its varies components 
model.plot_components(forecast)
forecast[[‘ds’, ‘yhat’, ‘yhat_lower’, ‘yhat_upper’]].tail()
model.plot(forecast)
model.plot_components(forecast)

from fbprophet.plot import plot_plotly, plot_components_plotly
plot_plotly(model, forecast)
plot_components_plotly(m, forecast)

machinelearning mastery.com에 의해

모델의 성능에 액세스하려면 몇 가지 유형의 평가가 필요합니다.이 모델의 경우 지난 12 개월 데이터와 같은 모델의 일부 데이터를 보류 한 다음 데이터의 첫 번째 부분에 모델을 맞추고이를 사용하여 얻을 수 있습니다. 보류 할 데이터를 예측 한 다음 예측 전체에서 평균 절대 오차와 같은 오차 측정 값을 계산합니다.

이 점수는 표본 외 예측을 할 때 모델이 평균적으로 얼마나 잘 수행 될 것으로 예상 할 수 있는지에 대한 추정치를 제공합니다.

이를 위해 제거 된 지난 12 개월 동안 학습을위한 새 데이터 프레임을 만들어야합니다.

#create test dataset, remove last 12 months
train = df.drop(df.index[-12:])
print(train.tail())

그런 다음 원래 데이터 세트에서 예측 값과 예상 값을 검색하고 scikit-learn 라이브러리를 사용하여 평균 절대 오차 메트릭을 계산할 수 있습니다.

from sklearn.metrics import mean_absolute_error
#calculate MAE between expected and predicted values for December 
y_true = df['y'][-12:].values
y_pred = forecast['yhat'].values
mae = mean_absolute_error(y_true, y_pred)
print('MAE: %.3f' % mae)
#output
MAE: 1336.814

이 값을 사용하여 모델의 성능을 관찰하기 위해 예상 값과 예측 값을 플로팅 할 수도 있습니다.

#plot expected vs actual
pyplot.plot(y_true, label='Actual')
pyplot.plot(y_pred, label='Predicted')
pyplot.legend()
pyplot.show()
Prophet: Predicted Vs Actual

시간을 내 주셔서 감사합니다. 저는이 방법을 매일 시계열의 빠른 숙련도 분석에 활용하기 위해 짧고 간단하게 명심하기 위해 최선을 다했습니다.

즐거웠기를 바랍니다.

“호기심이 완벽으로 이어 지므로”부담없이 물어보십시오.

내 대체 인터넷 존재, Facebook , Blogger , Linkedin , Medium, Instagram , ISSUU 및 나만의 D2Academics , Data2Dimensions

Quora @ https://www.quora.com/profile/Bob-Rupak-Roy 에서도 사용 가능

더 많은 업데이트를 기대해주세요.! 좋은 하루 되세요….

https://www.quora.com/profile/Bob-Rupak-Roy

~ 행복하고 즐기십시오!

펙셀

Suggested posts

IBM Watson Studio의 AutoAI 노트북으로 마술사 코드 깨기

IBM Watson Studio의 AutoAI 노트북으로 마술사 코드 깨기

가장 유명한 행동 강령 중 하나입니다. "마술사는 절대 비밀을 밝히지 않습니다." 그러나 청중이 너무나 놀라워 서 '방금 일어난 일'이라는 느낌에 놀라서 비밀을 밝히지 않는 것이 거의 잔인한 순간이 있습니다.

Python 코드 한 줄로 여러 시계열 예측 모델 학습

Auto-TS 라이브러리를 사용하여 ARIMA, SARIMAX, FB Prophet, VAR 및 ML 모델 개발

Python 코드 한 줄로 여러 시계열 예측 모델 학습

Automated Machine Learning (AutoML)은 기계 학습 파이프 라인의 일부 구성 요소를 자동화하는 것을 말합니다. AutoML은 일부 모델 개발 프로세스를 자동화하여 데이터 과학자의 워크 플로를 가속화합니다.

Related posts

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

고유 분해 및 SVD에 유용한 기저의 선형 대수 개념 이해이 기사에서는 고유 분해 또는 특이 값 분해 (SVD)와 같은 행렬 분해 방법을 이해하는 흥미로운 방법 인 기저 개념에 대해 알아 봅니다. 정의 기본은 벡터 공간 (벡터 집합)을 설명하는 데 사용되는 좌표계입니다.

판다와 에라스무스 연구 교환 분석

판다와 에라스무스 연구 교환 분석

Erasmus 프로그램 2011-12에서 발생한 20 만 개의 연구 교환으로 데이터 세트를 분석 한 결과 1987 년 이후 Erasmus 프로그램은 매년 수십만 명의 유럽 학생들에게 한 학기 또는 1 년을 해외에서 보낼 기회를 다른 유럽에서 보낼 수있는 기회를 제공합니다. 경제적 인 지원뿐만 아니라 쉬운 교환 과정을 제공합니다. 유럽의 다양한 사람, 언어 및 문화에 대한 마음과 마음을 열어주는 정말 귀중한 경험입니다.

데이터 과학을위한 8 가지 기본 통계 개념

… 평범한 영어로 설명

데이터 과학을위한 8 가지 기본 통계 개념

통계는 "수량 데이터의 수집, 분석, 해석 및 표현을 다루는 수학의 한 분야"입니다. 프로그래밍과 기계 학습을 혼합하면 데이터 과학의 핵심 기술에 대해 꽤 잘 설명 할 수 있습니다.

데이터 과학의 9 가지 거리 측정

일반적인 거리 측정의 장점과 함정

데이터 과학의 9 가지 거리 측정

감독되거나 감독되지 않는 많은 알고리즘은 거리 측정을 사용합니다. 유클리드 거리 또는 코사인 유사성과 같은 이러한 측정은 종종 k-NN, UMAP, HDBSCAN 등과 같은 알고리즘에서 찾을 수 있습니다.