CNN 대 예언자 : 구리 생산자 물가 지수 예측

구리 가격을 예측하는 데 더 나은 모델은 무엇입니까?

출처 : Pixabay로부터 입수 된 3844328 님의 사진입니다.

면책 조항 :이 문서는 보증없이 "있는 그대로"작성되었습니다. 데이터 과학 개념에 대한 개요를 제공 할 목적으로 작성되었으며 투자 조언이나 기타 전문적인 조언으로 해석되어서는 안됩니다.

Towards Data Science에 대한 이전 기사 에서 Prophet 모델을 사용하여 구리 생산자 가격 지수를 예측하려고했습니다. 데이터는 Quandl을 사용하여 FRED Economic Data 에서 가져 왔습니다.

다음은 데이터 플롯입니다 (이 연습의 목적을 위해 모든 가격은 대수로 표시됩니다).

출처 : FRED 경제 데이터

문제의 시계열 범위는 1985 년 9 월부터 2020 년 7 월까지였으며 평균 절대 오차는 0.257 이었습니다 (테스트 세트의 평균 5.917과 비교).

다음은 예측 된 값과 실제 값의 도표입니다.

출처 : Jupyter 노트북 출력

Prophet 모델은 계절성 및 추세 구성 요소를 감지하는 데 효과적이며 변화 지점을 적절하게 수정하여 예측을 개선 할 수있는 기능을 제공하지만 이러한 모델은 한 기간에서 다음 기간으로의 변동성을 포착 할 때 특히 잘 수행되지는 않습니다. .

이와 관련하여이 모델이이 시계열을 예측하는 데 더 효과적인지 조사하기 위해 Convolutional Neural Network (이하 CNN이라고 함) 모델을 사용하여이 데이터를 모델링하기로 결정했습니다.

주의 사항으로, 아래 예는 자산 가격을 예측하려는 실제 시도보다는 학문적 연습에 가깝습니다. 월별 데이터로 작업하고 있다는 점을 감안할 때 신경망이 한 기간에서 다른 기간으로의 변동을 파악하는 것이 더 쉽습니다.

시계열이 훨씬 짧은 간격 (시간, 분, 심지어 초)에 걸쳐 예측되는 실제 시나리오의 맥락에서 데이터 세트에 훨씬 더 많은 확률 성 (또는 임의성)이 존재합니다. 이는 예측 정확도에 큰 영향을 미칠 수 있습니다. 또한, 다 변수 시계열은 경제 시계열을보다 일반적으로 예측하는 데 더 효과적 일 가능성이 높습니다. 이러한 시계열은 많은 개입의 대상이됩니다.

그러나 CNN을 사용하여 월별 데이터를 모델링하는 것이이 목적을위한 출발점으로 사용됩니다.

아래 예제는 UdacityIntro to TensorFlow for Deep Learning 과정 의 모델 템플릿을 사용합니다. 이 특정 주제는 단원 8 : Aurélien Géron의 시계열 예측에 있습니다.

또한 원본 Jupyter 노트북 (Copyright 2018, The TensorFlow Authors)도 여기 에서 찾을 수 있습니다 .

CNN 모델의 배경

이전에 "CNN-LSTM : 일일 호텔 취소 예측" 이라는 제목의 마지막 기사에서 CNN 모델의 구성 요소에 대해 자세히 설명했습니다 . 결과적으로 여기서 다시 자세히 설명하지는 않겠지 만 CNN이 이전 시간 단계 (특정 창 크기 기준)를 사용하여 다음과 같이 데이터 포인트의 출력을 생성함으로써 작동한다고 말하면 충분합니다.

출처 : 작성자가 만든 이미지. Udacity에서 채택한 템플릿 — 딥 러닝을위한 TensorFlow 소개 : 시계열 예측

CNN 은 여러 Conv1D (1 차원 컨볼 루션) 레이어가 함께 쌓여 있는 WaveNet 아키텍처를 통해 시계열에서 단기 및 장기 종속성을 학습하는 고유 한 기능을 가지고 있습니다. 이를 통해 하위 계층은 단기 종속성을 학습하고 상위 계층은 장기 종속성을 학습 할 수 있습니다. 우리가 예측하려는 시계열의 맥락에서이 모델은이 목적에 적합한 것 같습니다.

모델 구성

데이터에 대해 80/20 분할이 수행되며 시계열의 처음 334 개 데이터 포인트가 CNN 모델 학습에 사용되며 나머지 포인트는 검증 목적으로 사용됩니다.

split_time = 334
time_train = time[:split_time]
x_train = series[:split_time]
time_valid = time[split_time:]
x_valid = series[split_time:]

keras.backend.clear_session()
tf.random.set_seed(42)
np.random.seed(42)
window_size = 64
train_set = seq2seq_window_dataset(x_train, window_size,
                                   batch_size=128)
valid_set = seq2seq_window_dataset(x_valid, window_size,
                                   batch_size=128)
model = keras.models.Sequential()
model.add(keras.layers.InputLayer(input_shape=[None, 1]))
for dilation_rate in (1, 2, 4, 8, 16, 32):
    model.add(
      keras.layers.Conv1D(filters=32,
                          kernel_size=2,
                          strides=1,
                          dilation_rate=dilation_rate,
                          padding="causal",
                          activation="relu")
    )
model.add(keras.layers.Conv1D(filters=1, kernel_size=1))
optimizer = keras.optimizers.Adam(lr=3e-4)
model.compile(loss=keras.losses.Huber(),
              optimizer=optimizer,
              metrics=["mae"])
model_checkpoint = keras.callbacks.ModelCheckpoint(
    "my_checkpoint.h6", save_best_only=True)
early_stopping = keras.callbacks.EarlyStopping(patience=50)
history = model.fit(train_set, epochs=500,
                    validation_data=valid_set,
                    callbacks=[early_stopping, model_checkpoint])

cnn_forecast = model_forecast(model, series[..., np.newaxis], window_size)
cnn_forecast = cnn_forecast[split_time - window_size:-1, -1, 0]
plt.figure(figsize=(10, 6))
plot_series(time_valid, x_valid)
plot_series(time_valid, cnn_forecast)
Source: Jupyter Notebook Output

>>> keras.metrics.mean_absolute_error(x_valid, cnn_forecast).numpy()
0.027838342

Facebook 의 Prophet 시계열 모델 의 유용한 기능은 시계열 에서 변화 지점 또는 중요한 구조적 변화 기간 을 식별하는 기능 입니다. 이러한 지점을 정확하게 식별하면 시계열 예측을 개선 할 수 있습니다.

위와 같이 Prophet 모델의 MAE는 0.257 로 CNN이 산출 한 것보다 훨씬 더 높습니다.

예언자 모델에는 12 개의 변경점 (또는 추세의 상당한 편차)이 정의되었습니다.

pro_change= Prophet(n_changepoints=12)
forecast = pro_change.fit(train_dataset).predict(future)
fig= pro_change.plot(forecast);
a = add_changepoints_to_plot(fig.gca(), pro_change, forecast)future_data = pro_change.make_future_dataframe(periods=43, freq = 'm')
 
#forecast the data for future data
forecast_data = pro_change.predict(future_data)
pro_change.plot(forecast_data);
Source: Jupyter Notebook Output
출처 : Jupyter 노트북 출력

분명히 CNN은 구리 가격의 월별 변동을 더 잘 예측하는 반면, Prophet 모델의 MAE는 평균값에 비해 낮습니다. 실제 시계열에는 예측 된 시계열이 아닌 변동성이 훨씬 더 많습니다. 따기.

결론

언급했듯이 이와 같은 시계열을 예측하는 것은 CNN이 더 큰 확률로 더 짧은 기간 동안 잘 작동하는지 여부를 알 수 없다는 점에서 내재 된 한계가 있습니다. 또한 이러한 시계열은 과거 값으로 설명되지 않는 광범위한 개입의 대상이됩니다.

그러나이 경우 CNN은 구리 가격의 월별 변동을 잘 포착했습니다.

이 기사에서는 다음을 다뤘습니다.

  • 시계열을 예측하도록 CNN을 구성하는 방법
  • CNN과 Prophet 모델의 차이점
  • 경제 시계열 예측에서 이러한 모델의 한계

CNN 및 Prophet 모델 용 Jupyter 노트북은 여기 에서 찾을 수 있습니다 .

면책 조항 :이 문서는 보증없이 "있는 그대로"작성되었습니다. 데이터 과학 개념에 대한 개요를 제공 할 목적으로 작성되었으며 투자 조언이나 기타 전문적인 조언으로 해석되어서는 안됩니다.

Suggested posts

중요하지만 종종 간과되는 데이터 과학 및 분석 기술

중요하지만 종종 간과되는 데이터 과학 및 분석 기술

이제 데이터 과학 및 분석에 들어가는 데 필요한 기술 기술을 배울 수있는 방법이 그 어느 때보 다 많았습니다. 온라인 과정, Kaggle 대회, YouTube 자습서, 스택 오버플로가있는 금광 등이 있습니다. 현장에 침입하려는 사람들은 종종 "X 데이터 작업을 수행하려면 어떤 프로그래밍 기술이 필요한가요?", "어떤 기계 학습 기술을 배워야합니까?", "기술을 구축하려면 어떤 프로젝트를 수행해야합니까?"와 같은 질문을 자주합니다. / 포트폴리오?”.

데이터 포인트가 얼마나 극단적입니까?

특이 치 및 모델 선택

데이터 포인트가 얼마나 극단적입니까?

이상치 및 모델 선택 회귀를 실행할 수있는 것은 하나이지만 올바른 모델과 올바른 데이터를 선택할 수 있다는 것은 또 다른 문제입니다. 곡선의 맨 끝에있는 데이터 포인트가 실수로 여분의 제로 (인간 오류)를 기록한 사람 또는 블랙 스완 이벤트 (드물지만 중요한 이벤트)에서 가져온 것임을 어떻게 알 수 있습니까? 회귀 모델에 유지하면서 여전히 작동하는 예측을 가질 수 있습니까? 이 기사에서 알아 보자.

Related posts

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

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

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

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

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

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

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

… 평범한 영어로 설명

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

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

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

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

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

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