Sinir Ağı'nı zaman serisi tahminlerine nasıl uygulayabilirim?


83

Makine öğrenimi konusunda yeniyim ve zaman çizelgesi tahmininde sinir ağını nasıl kullanacağımı bulmaya çalışıyorum. Sorgumla ilgili kaynak buldum, ancak hala biraz kayıp gibi görünüyorum. Çok fazla ayrıntı olmadan temel bir açıklama yapmanın yardımcı olacağını düşünüyorum.

Birkaç ay boyunca her ay için bazı fiyat değerlerine sahip olduğumu ve yeni fiyat değerlerini tahmin etmek istediğimi varsayalım. Son birkaç aydır fiyatların bir listesini alabilir ve geçmişte K-Near-Neighbor kullanarak benzer trendleri bulmaya çalışabilirim. Yeni fiyatları denemek ve tahmin etmek için değişim oranını veya geçmiş eğilimlerin diğer bazı özelliklerini kullanabilirlerdi. Sinir ağını bu aynı soruna nasıl uygulayabildiğim, öğrenmeye çalıştığım şeydir.




@solartic, sadece meraklı, bu metodu başarıyla uyguladınız mı?
Saggy Manatee Ve Kuğu Folk

Yanıtlar:


102

İşte size kod yazmaya ve fikirleri test etmeye başlamanıza yardımcı olacak basit bir reçete ...

Birkaç yıl boyunca kaydedilmiş aylık verileriniz olduğunu varsayalım, bu yüzden 36 değeriniz var. Ayrıca, önceden yalnızca bir ay (değer) tahmin etmeyi umduğunuzu varsayalım.

  1. Keşifsel veri analizi: Verilerdeki gecikme bağımlılığını tahmin etmek için geleneksel zaman serisi analiz yöntemlerinden bazılarını uygulayın (örn., Otomatik korelasyon ve kısmi otomatik korelasyon grafikleri, dönüşümler, farklılık). Belirli bir ayın değerinin son üç ayın verileriyle ilişkili olduğunu ancak bunun ötesinde olmadığını tespit edelim.
  2. Verilerinizi eğitim ve doğrulama kümelerine ayırın: İlk 24 puanı eğitim değeriniz olarak, kalanları da doğrulama seti olarak alın.
  3. Yapay sinir ağı düzenini oluşturun: Son üç ayın değerlerini girdi olarak alırsınız ve bir sonraki ayın değerini tahmin etmek istersiniz. Bu nedenle, üç düğüm içeren bir giriş katmanına ve bir düğüm içeren bir çıkış katmanına sahip bir sinir ağına ihtiyacınız vardır. Muhtemelen en az birkaç düğümden oluşan gizli bir katmana sahip olmalısınız. Ne yazık ki, gizli katmanların sayısını ve bunlara ait düğüm sayılarını seçmek, net kurallar içeren bir şey değildir. Küçük başlardım, 3: 2: 1 gibi.
  4. x1,x2,x24
    pattern1:x1,x2,x3,x4
    pattern2:x2,x3,x4,x5
    pattern21:x21,x22,x23,x24
  5. Sinir ağını bu kalıplar üzerinde eğitin
  6. Ağı doğrulama setinde test edin (aylar 25-36): Burada, sinir ağının giriş katmanı için ihtiyaç duyduğu üç değeri geçecek ve çıkış düğümünün neye ayarlandığını göreceksiniz. Bu nedenle, eğitimli sinir ağının ne kadar iyi olduğunu görmek için 32. ayın değerini, 29, 30 ve 31 ay boyunca gireceğiniz değerleri

Bu tarif açıkça yüksek seviyededir ve bağlamınızı farklı yazılım kütüphaneleri / programları ile eşleştirmeye çalışırken ilk başta başınızı çizebilirsiniz. Ancak, umarım bu temel noktayı ortaya koymaktadır: Tahmin etmeye çalıştığınız serinin korelasyon yapısını makul bir şekilde içeren eğitim kalıpları oluşturmanız gerekir. Tahmini bir sinir ağı mı yoksa bir ARIMA modeli ile mi yapıyorsunuz, bu yapının ne olduğunu belirlemeye yönelik keşif çalışması genellikle en çok zaman alan ve zor olan kısımdır.

Tecrübelerime göre sinir ağları mükemmel bir sınıflandırma ve tahmin işlevi sağlayabilir, ancak bunları ayarlamak zaman alıcı olabilir. Yukarıdaki örnekte 21 eğitim modelinin yeterli olmadığını görebilirsiniz; farklı girdi veri dönüşümleri daha iyi / daha kötü tahminlere yol açar; gizli katmanların ve gizli katman düğümlerinin sayısının değiştirilmesi tahminleri büyük ölçüde etkiler; vb.

Sinir ağı tahmin yarışmaları hakkında tonlarca bilgi içeren neural_forecasting web sitesine bakmanızı şiddetle tavsiye ederim . Motivasyonları sayfa özellikle yararlıdır.


12
Bu cevabı + 1'ledim, fakat aynı zamanda en son 3 ayın cevaba karşılık gelenler olsa bile, son 5 yılda yılın aynı ayındaki yararlı girdiler gibi faktörler olabileceğini de sözlerine ekledi. Örneğin, Decembers önceki Decembers gibi görünmeye meyilliyse, tipik olarak).
rossdavidh

1
Mükemmel cevap. Bunu çok faydalı buldum. Tam bir açıklama istediğim şeydi. @rossdavidh: İyi nokta +1.
solartic

2
Burada bazı örnek kodlar almak harika olurdu.
Léo Léopold Hertz 준영

1
İlginç olan şey regülatörlerle birlikte çok değişkenli bir zaman serisi veri seti olacaktır ..
Tommaso Guerrini

1
Bazıları gerçek verilere uygulayan ve "geleneksel" zaman serisi metodu ile karşılaştırmayı bilen biri var mı?
Marco Fumagalli
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.