Çok boyutlu ve çok değişkenli Zaman Serisi tahmini (RNN / LSTM) Keras


12

Bir nasıl temsil ve şekil verileri anlamaya çalışıyorlar de çok boyutlu ve çok değişkenli serisi keras (veya TensorFlow) kullanılarak tahmin zaman ama veri sunmayı konusunda birçok blog yayınları / öğreticiler / belgeleri okuduktan sonra hala çok belirsiz duyuyorum doğru şekil (çoğu örnek biraz daha az

Veri Kümem:

  • birkaç şehir
  • hangi sıcaklık, araba trafiği, nem hakkında bilgi var
  • son 2 yıldır (her gün için bir rekor)

Ne yapmak istiyorum : Her şehir için sıcaklık, araba trafiği ve neminin gecikmeli bir versiyonunu kullanarak gelecek yıl için bekleyebileceğim sıcaklıkları tahmin etmek istiyorum (elbette birkaç özellik daha olacak, ancak bu sadece bir düşünce örneği).

Ne hakkında kafam karıştı: 2 şehrim varsa, 365 gün boyunca 3 özellik kaydettim. Modelimi bu iki şehir (365 gün için 2 zaman sıcaklık serisi) için 365 gün tahmin çıkarabilecek şekilde girdimi nasıl şekillendirmeliyim?

Sezgisel olarak tensör şekli (?, 365, 3)365 gün ve 3 özellik olacaktır. Ama ilk boyuta ne yapışacağımdan emin değilim ve en önemlisi, şehir sayısı için olsaydı şaşırırdım. Ancak aynı zamanda, boyutları doğru bir şekilde anlaması gerektiğini modele nasıl belirleyeceğimi bilmiyorum.

Herhangi bir işaretçi yardımcı olacaktır. Sorunun geri kalanına oldukça aşinayım (diğer sinir ağları için bunu yaptığımdan, ancak daha spesifik olarak istenen giriş için diziyi kodlamak için en iyi şekilde nasıl yapıldığımdan dolayı Keras vb.

Oh ve ayrıca , sanırım her şehir için bağımsız olarak eğitim alıp tahmin edebiliyorum, ama eminim herkes muhtemelen herhangi bir şehre özgü olmayan, ancak sadece birkaç tanesini göz önüne alırsa görülebilecek şeyler olduğunu kabul edecek, bu yüzden modelde kodlamanın önemli olduğunu düşünüyorum.


1
İşte bu konuda güzel bir öğretici: tensorflow.org/beta/tutorials/text/time_series
CubeBot88

Yanıtlar:


13

Bir LSTM için giriş şekli olmalıdır (num_samples, num_time_steps, num_features). Örnek durumda, her iki şehri de giriş olarak birleştirmek num_features2x3 = 6 olacaktır.

Tüm 365 zaman adımlarınızı bir numuneye toplarsanız, ilk boyut 1 - tek bir örnek olacaktır! Toplam veri noktası sayısını kullanarak da sağlık kontrolü yapabilirsiniz. Her biri 365 zaman adımı ve 3 özelliğe sahip 2 şehriniz var: 2x365x3 = 2190. Bu açıkça 1x365x6 ile aynıdır (yukarıda söylediğim gibi) - bu bir olasılık olurdu (Keras çalışacak) - ama açıkçası genellemeyi öğrenmeyecek, sadece bir örnek vereceğim.

Son zamanlarda cevapladığım bu ilgili soruya bir göz atın . Orada haddeleme penceresi kullanma hakkında biraz konuşuyorum (daha fazla bilgi için cevabın yorumlarına bakın). İhtiyacınız olursa daha fazla numune satın alacaksınız.

Her iki şehir için veri olarak tek bir modeli girdi olarak eğitmek istiyorsanız, her zaman adımında her iki şehir için tahminler yapmak Dense, 2 birim çıktı veren bir son katman tanımlamak kadar basittir . Doğrulama / test verileriniz elbette bir demet içermelidir (şehir1, şehir2).

Buna yaklaşmanın belki de daha sofistike bir yolu, tek bir şehir bazında veri setleri oluşturmak, daha sonra her bir şehir için ayrı ayrı alt modeller yetiştirmek (5 katman için diyelim), daha sonra Merge/ daha sonra Concatenatebirkaç katman daha koymak olacaktır. Bu, her şehrin öğrenilmiş özelliklerini birleştirdiğiniz anlamına gelir, bu da daha yüksek bir soyutlama seviyesiyle birleştirilir. İşte bir arama motorundan aldığım fikri gösteren ilk resim .


Bu kadar açık bir şekilde cevap vermek için zaman ayırdığınız için çok teşekkür ederiz! Şimdi çok mantıklı. Ama gerçekten, korktuğum şey, açıkladığınız ilk çözümü yapmanın çok genelleştirmeyi engelleyeceğidir. Sürgülü pencere yaklaşımı şehirler arasında genelleme yapılmasına gerçekten izin verir mi?
Bastien

Rica ederim! Derin ağlar her zaman daha fazla veriden yararlanır. Yukarıdaki önerilerim çok fazla parametre içerecekti - sadece 365 puanla, bu şehirlere aşırı sığma riski taşıyorsunuz (yani genelleme yok)! Veri augmentation- deneyebilirsiniz nasıl senin verilere bağlıdır. Yeterli veriye sahipseniz iyi genelleştirebilirsiniz - Değişkenler arasındaki ilişkilerin yorumlanabilir hale geldiği bir Word2Vec türü sonuç (metin analizinde / NLP'de yaygın) hayal edebiliyorum . Bilgi için bunu kontrol edin ve daha fazla sezgi / eğlence için bunu kontrol edin . Sonuçlarınız bir hava durumu haritası çizebilir!
n1k31t4

evet mantıklı, bu yüzden bazı yuvarlanan pencereler çalışmak ne dediğini anlıyorum tür "daha fazla veri" kandırmak olur?
Bastien

Yarın son 100 güne göre tahmin edeceğinizi varsayarsak, sistemin durumu büyük olasılıkla dünden beri (yuvarlanan pencereler yapıyorsa), bir yıl öncesine göre (yuvarlanan pencereler kullanmadan) çok fazla değişmeyecektir. Teknik olarak daha fazla örnek oluştururken, yeni veri noktaları oluşturmuyorsunuz - modelin her seferinde daha küçük parçalara odaklanmasına izin vermeyi öngörüyorsunuz. Bu daha yüksek ayrıntı düzeyi, tüm verileri bir araya getirip bir tahmin yapmanıza kıyasla, sonuçlar hakkında daha iyi (daha düzgün) istatistiksel ifadeler yapmanıza olanak tanır. Sonuçlardaki belirsizliği azaltırsınız.
n1k31t4

kabul! Yuvarlanan pencere, bellek hücresinin uzun öfke bağımlılıklarını öğrenmesini engellemez mi?
Bastien
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.