다차원 및 다변량 시계열 예측 (RNN / LSTM) Keras


12

Keras (또는 TensorFlow)를 사용하여 다차원다변량 시계열 예측 을 만들기 위해 데이터를 표현하고 형성하는 방법을 이해하려고 노력 했지만 많은 블로그 게시물 / 자습서 / 문서를 읽은 후에도 여전히 명확하지 않습니다. 올바른 모양 (대부분의 예는 약간 적음)

내 데이터 세트 :

  • 여러 도시
  • 온도, 자동차 교통량, 습도에 대한 정보가 있습니다.
  • 지난 2 년 동안 (매일 1 건씩)

내가하고 싶은 일 : 가능한 한 온도, 자동차 교통 및 습도의 지연 된 버전을 사용하여 내년에 기대할 수있는 온도를 각 도시마다 예측하고 싶습니다 (물론 더 많은 기능이 있지만 이것은 단지 생각의 예).

내가 혼란스러워하는 것 : 도시가 2 개인 경우 365 일 동안 3 가지 기능을 기록했습니다. 모형이이 두 도시에 대한 365 일 예측 (예 : 365 일 동안 2 개의 시계열)을 출력 할 수 있도록 입력을 어떻게 조정해야합니까?

직관적으로 텐서 모양은 (?, 365, 3)365 일 3 가지 기능입니다. 그러나 나는 1 차원에 무엇을 집어 넣어야할지 확실하지 않으며, 가장 중요한 것은 그것이 도시의 수에 맞아야한다면 놀랄 것입니다. 그러나 동시에 치수를 올바르게 이해해야한다는 것을 모델에 지정하는 방법을 모릅니다.

모든 조언이 도움이 될 것입니다. 나는 나머지 문제에 대해 잘 알고 있습니다 (즉, 다른 신경망에 대해 이것을 수행했기 때문에 Keras 등에서 네트워크를 구축하는 방법이지만 더 구체적으로 원하는 입력에 대해 시퀀스를 인코딩하는 가장 좋은 방법).

또한 각 도시에 대해 독립적으로 훈련하고 예측할 수 있다고 생각하지만 모든 도시에 국한되지는 않지만 아마도 여러 도시를 고려할 때만 볼 수있는 것들이있을 것이라고 모든 사람들이 동의 할 것이라고 확신합니다. 따라서 모델에서 인코딩하는 것이 중요하다고 생각하는 이유는 무엇입니까?


1
다음은이 주제에 대한 좋은 튜토리얼입니다 : tensorflow.org/beta/tutorials/text/time_series
CubeBot88

답변:


13

LSTM의 입력 모양은이어야합니다 (num_samples, num_time_steps, num_features). 예제의 경우 두 도시를 입력으로 결합하면 num_features2x3 = 6이됩니다.

모든 365 시간 단계를 하나의 샘플로 묶으면 첫 번째 차원은 1-하나의 단일 샘플이됩니다! 총 데이터 포인트 수를 사용하여 상태 점검을 수행 할 수도 있습니다. 365 개의 시간 단계와 3 개의 기능이있는 2 개의 도시가 있습니다 (2x365x3 = 2190). 이것은 분명히 1x365x6과 같습니다 (위에서 언급했듯이). 가능성이있을 것입니다 (Keras가 실행될 것입니다).

내가 최근에 답변 한이 관련 질문을 살펴보십시오 . 롤링 창을 사용하는 것에 대해 조금 이야기합니다 (자세한 내용은 답변의 주석을 확인하십시오). 필요한 경우 더 많은 샘플을 구매할 것입니다.

두 도시의 데이터를 입력으로 사용하여 단일 모델을 학습하려는 경우 각 시간 단계에서 두 도시를 예측하는 것은 최종 Dense레이어 를 정의하는 것만 큼 간단하여 2 단위를 출력합니다. 검증 / 테스트 데이터는 물론 (city1, city2)의 튜플을 포함해야합니다.

이 접근하기위한 아마도 더 정교한 방법은, 하나의 도시를 기준으로 데이터 세트를 생성 개별적으로 각 도시에 여러 개의 하위 모델을 훈련 (5 층 말할), 다음하는 것 Merge/ Concatenate그들과 상단에 몇 가지 더 레이어를 넣어. 이것은 각 도시의 학습 기능을 결합하여 더 높은 수준의 추상화로 결합됨을 의미합니다. 다음은 내가 검색 엔진에서받은 첫 번째 이미지 아이디어를 스케치.


시간을내어 명확하게 답변 해 주셔서 감사합니다. 지금은 많은 의미가 있습니다. 그러나 실제로, 내가 두려워했던 것은 첫 번째 해결책을 수행하면 많은 일반화를 막을 수 있다는 것입니다. 슬라이딩 윈도우 접근 방식이 도시 전체에서 많은 일반화를 허용합니까?
Bastien

천만에요! 딥 네트는 항상 더 많은 데이터로부터 이익을 얻습니다. 위의 제안 사항에는 많은 매개 변수가 포함되어 있습니다. 365 점만 있으면 해당 도시에 과적 합의 위험이 있습니다 (즉 일반화 없음)! 당신은 데이터 augmentation- 시도 할 수 있습니다 어떻게 데이터에 따라 달라집니다. 데이터가 충분하다면 일반화 할 수 있습니다. 변수 사이의 관계를 해석 할 수있는 Word2Vec 유형 결과 (텍스트 분석 / NLP에서 일반적 임)를 상상할 수 있습니다. info를 확인하고 , 직관 / 재미를 알아보십시오 . 결과는 날씨지도를 그릴 수 있습니다!
n1k31t4

네, 말이 맞습니다. 그래서 당신이 말한 것을 이해한다면 롤링 윈도우를 작동 시키면 일종의 "더 많은 데이터"가 필요합니다.
Bastien

지난 100 일을 기준으로 내일을 예측한다고 가정하면 시스템 상태는 1 년 전 (롤링 창을 사용하지 않음)과 비교하여 어제 (롤링 창을 사용하는 경우) 이후 크게 변하지 않았을 것입니다. 기술적으로 더 많은 샘플을 생성하지만 새로운 데이터 포인트를 생성하는 것이 아니라 모델이 한 번에 하나씩 작은 청크에 초점을 맞출 수 있도록 예측하는 것입니다. 이 높은 입도를 사용하면 모든 데이터를 맞추고 하나를 예측하는 것과 비교하여 결과에 대한 더 나은 통계적 진술을 할 수 있습니다. 결과의 불확실성을 줄입니다.
n1k31t4

동의했다! 그리고 롤링 윈도우는 메모리 셀이 긴 분노 의존성을 전혀 배우지 못하게하지 않습니까?
Bastien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.