TensorFlow ile Zaman Serisi Tahmini: Bileşenler, Modeller ve Adımlar

Yayınlanan: 2021-05-02

İçindekiler

Zaman Serisi Tahmini Nedir?

Asya Pasifik'in %40'ın üzerinde bir CAGR (Bileşik Yıllık Büyüme Oranı) ile küresel olarak en büyük büyüyen derin öğrenme pazarı olduğunu biliyor musunuz? Zaman serisi TensorFlow tahmini, derin öğrenme ve makine öğreniminde önemli bir kavramdır. Tüm derin öğrenme/ML modelleri, gözlemlerin bir koleksiyonu olan ilgili bir veri kümesine sahiptir. Bu gözlemler genellikle bir zaman bileşeni içerir. Zaman serisi, gözlemleri zaman içinde sırayla düzenler, böylece veri setine yeni bir boyut, yani zaman ekler.

Veri setlerinin boyutsallığını artırarak ne elde edileceğini düşünebilirsiniz? Veri kümenize bir zaman boyutu eklemek, gözlemler arasında ayrıntılı bir bağımlılık düzeyi yaratacaktır. Sonuç daha sonra, önceki gözlemlerin zaman serisi tahminlerinin yardımıyla tahmin edilir.

Geleceği tahmin etmek için zaman serisi verilerinin (tarihsel veriler) kullanımına zaman serisi tahmini denir. Ayrıca geleceğin tamamen bilinmediğinden ve yalnızca geçmiş verilere dayanarak tahmin edilebileceğinden emin olunmalıdır.

Verileri etkili bir şekilde tanımlayan modeller geliştirmek için zaman serisi verileri analiz edilir. Zaman serisi, uygun modeller geliştirmek için çeşitli bileşenlere ayrıştırılır. Geçmiş verileri en iyi tanımlayan modeller geliştirildikten sonra, tahmin için kullanılır. Zaman serisi analizi ile zaman serisi tahmini karıştırılmamalıdır, çünkü ikincisi ancak ilki tamamlandığında devreye girer.

Zaman Serisi Bileşenleri

Zaman serisi TensorFlow tahminini bilmeden önce , bir zaman serisinin bileşenine aşina olmak gerekir. Zaman serisi analizi sırasında bir zaman serisi dört bileşene ayrıştırılır. Bu bileşenler, veri kümesinin doğru bir şekilde anlaşılmasına yardımcı olur. Bir zaman serisinin dört bileşeni aşağıdaki gibidir:

  • Eğilimler – Bir serinin/veri kümesinin zaman içindeki davranışı eğilimlerle açıklanır. Bir zaman serisinin artan ve azalan davranışı trendlerle açıklanır.
  • Düzey – Düzey, serinin temsilinin düz bir çizgi olduğu düşünüldüğünde, zaman serisinin temel değeridir. Birçok uzman da seviyeyi serinin ortalama değeri olarak tanımlar.
  • Mevsimsellik – Serilerin zaman içinde tekrar eden davranışlarına mevsimsellik denir. Bazı uzmanlar mevsimselliği dönemsel dalgalanmalar olarak da adlandırır.
  • Gürültü – Her veri kümesi, zaman serisi modelinin açıklayamadığı bazı veri noktalarını/aykırı değerleri içerir. Bu veri kümeleri öngörülemeyen özelliklere sahiptir ve zaman serisi analizi/tahmin yoluyla eşlenemez.

Bir zaman serisinin bir seviyesi ve biraz gürültüsü olması gerektiğine dikkat edilmelidir. Ancak, bir zaman serisindeki eğilimler ve mevsimsellik isteğe bağlıdır.

Neden TensorFlow?

Piyasada zaman serisi tahmini için birçok çerçeve mevcut olsa da, derin teknoloji uzmanları mevcut tüm çerçeveler arasından TensorFlow'u tercih ediyor. TensorFlow, yaygın olarak kullanılan programlama dillerinden Python, C++ ve CUDA ile yazılmıştır. TensorFlow, özellikle makine öğrenimi ve derin öğrenme için tasarlanmış açık kaynaklı bir yazılım kitaplığıdır.

TensorFlow, tahmin için kullanılacak zaman serisi analizi sırasında makine öğrenimi modelleri oluşturmamıza yardımcı olur. Kullanıcılara CNN (Evrişimli Sinir Ağı), RNN (Tekrarlayan Sinir Ağı) vb. gibi çeşitli modeller oluşturmalarını sağlar. TensorFlow, kullanıcıya ve veri kümesine bağlı olarak tek bir zaman adımını veya birden çok adımı tahmin etmenize yardımcı olabilir. Zaman serisi TensorFlow tahmini yaparken şunları yapabilirsiniz:

  • Tek bir zaman adımı için tek bir özelliği/boyutu tahmin edin.
  • Tek bir zaman adımı için veri kümesinin tüm boyutlarını tahmin edin.
  • Tek seferde birden fazla adım için tahmin yapın (tüm tahminleri bir kerede yapın).
  • Bir seferde bir tahminin yapıldığı birden fazla adım için tahmin (otoregresif).

Zaman Serisi Tahmini için Verileri Ayarlama

Zaman serisi tahmininden önce verileri buna göre hazırlamamız gerekiyor. Zaman serisi tahmini için kurulum, veri çıkarma, görselleştirme, keşif , temizleme vb. gibi çeşitli süreçleri içerir. Zaman serisi tahmini için verileri ayarlamanın arkasındaki adımları görelim:

  • Temel adım, verileri içe aktarmak veya verileri çıkarmaktır. Zaman serisi tahmini kullanılarak zengin içgörülerin çıkarılacağı bir veri kümeniz olması gerekir.
  • Sonraki adım, yinelenen veya alakasız veri noktalarını kaldırdığınız veri temizlemedir. Eksik veriler de bu adımda işlenir. Erken keşfedilen herhangi bir aykırı değer varsa, bunları veri kümesinden çıkarın. Yapısal hatalar da veri temizleme altında düzeltilebilir.
  • Bir zaman serisinde zamanla değişen niceliklere sinyal denir. Bu sinyaller ayrıca bir zaman serisindeki çeşitli fiziksel olayları temsil eder. Örneğin, herhangi bir yerin farklı günlerdeki hava durumu açıklamalarının bir zaman serisi varsa, bu durumda sinyaller sıcaklık, yağış vb. gibi fiziksel olaylar olacaktır. Sinyalleri sin cos formatında dönüştürerek devam edin.
  • Sinyalleri sin cos formatına dönüştürmenin yanı sıra saat ve tarihi saniyelere dönüştürün. İşiniz bittiğinde, zamanı ve sin cos fonksiyonunu çizin.
  • Verilerimizi tahmin etmeden ve eğitmeden önce, daha fazla basitleştirme için verileri zamana göre böleceğiz.
  • Veriler şimdi eğitimden önce normalleştirilecek. Veri normalleştirme için en basit adım, her veri noktasından veri kümesinin ortalamasını çıkarmak ve ardından bunu standart sapmaya bölmektir.
  • Veri normalleştirme ile işiniz bittiğinde, veri yanlılığını kontrol etmeniz gerekir. Veri yanlılığı, veri kümesinin bazı öğelerinin diğer öğelere kıyasla yoğun şekilde temsil edildiği bir koşul olarak tanımlanır. Önyargılı veriler, çarpık analitikle birlikte daha düşük doğruluk sağlar. Veri kümenizde mevcut olan herhangi bir veri yanlılığını ortadan kaldırmak için bir keman grafiği çizebilirsiniz.

Veri Pencereleme

Zaman serisi tahmininden önce birçok süreç olduğunu merak ediyor olmalısınız. Genç teknoloji meraklıları, verileri eğitmeden veya analiz etmeden önce veri hazırlamanın çok önemli bir adım olduğunu bilmelidir. Veri pencereleme, zaman serisi TensorFlow tahmini için verileri ayarlamanın son adımıdır . Veri pencereleme, verilerin çeşitli modellerle herhangi bir endişe duymadan kullanılmasına yardımcı olur.

Örneğin, bir model 1 saat ileriyi tahmin ediyorsa, etkili bir şekilde tahmin etmek için 6 saatlik bir geçmiş veri penceresine ihtiyacınız vardır. Veri pencereleme sırasında tahmin edilecek veri penceresi 'ofset' olarak adlandırılırken, geçmiş veri penceresi 'giriş genişliği' olarak adlandırılır.

Ödeme: En Popüler Tensorflow Projeleri

TensorFlow Tek Adımlı Modeller

En basit veri kümesine sahip olduğunuzda ve gelecekte yalnızca bir zaman adımı için tahminde bulunduğunuzda, TensorFlow'un tek adımlı modellerini kullanacaksınız. Örneğin, bir 'saat' veri penceresi oluşturduysanız, o zaman bir zaman adımı için tahmin yapıyorsanız, bu da bir saat ileriyi tahmin ettiğiniz anlamına gelir. Tek adımlı çiftler, yani girdi ve etiket geliştirmek için TensorFlow'da bir 'WindowGenerator' nesnesi oluşturulur.

Modelinizi eğitmeden önce bir temel model oluşturmanız da önerilir. Bir temel model oluşturmak, ilk tek adımlı modeli gelecekteki karmaşık modellerle karşılaştırmanıza yardımcı olacaktır. Örneğin, gelecekte 1 saat için sıcaklık tahmini yapıyorsanız, mevcut sıcaklığı tahmin olarak döndüren (değişiklik yok) bir temel model oluşturun.

Sıcaklıklar zamanla yavaş değiştiğinden, bir saat sonra sıcaklıkta herhangi bir değişiklik olmaması mümkündür. Çoklu zaman adımlarını tahmin ederken temel modelin etkili olmayacağını unutmayın.

TensorFlow kullanarak tek bir zaman adımlı model oluşturmanın başka bir örneği, giriş ve çıkış arasına doğrusal bir dönüşüm eklemektir. Çıktının yalnızca TensorFlow kullanarak doğrusal bir model oluştururken değerlendirilecek olan tek zaman adımına bağlı olduğundan emin olun. Yoğun model, TensorFlow kullanılarak oluşturulan başka bir tek adımlı modeldir.

TensorFlow aracılığıyla evrişim sinir ağları, tek bir zaman adımı için tahmin yapmak için de kullanılabilir. TensorFlow'daki bir evrişim katmanı, bir zaman adımını tahmin etmek için girdi olarak birden çok zaman adımı alacaktır. RNN'ler ayrıca zaman serisi tahmini için yaygın olarak kullanılmaktadır.

RNN'ler bir zaman serisini adım adım (varsayılan olarak) işlediğinden, makinenin dahili durumu da bir zaman adımından diğerine atlar. RNN modelleri uzun bir girdi geçmişini (geçmiş veriler) hatırlama eğiliminde olduğundan, RNN aracılığıyla zaman serisi TensorFlow tahmini iyi bir seçimdir.

TensorFlow Çok Adımlı Modeller

Çok adımlı modellerde tahmin, bir dizi zaman adımı üzerinden yapılır. Tek adımlı bir modelden farklı olarak, çok adımlı bir model, geçmiş verileri kullanarak bir dizi gelecek değeri tahmin eder. Çok adımlı modeller, tek adımlı tahmin yoluyla gelecekteki tüm zaman serilerini bir kerede tahmin edebilir. Modelin bir seferde tek adımlı bir tahmin yaptığı otoregresif tahmini de kullanabilirsiniz. Otoregresif tahminde tek adımlı tahminin sonucu, bir sonraki zaman adımı tahmini için girdi olarak çalışır.

Çözüm

Zaman serisi TensorFlow tahmini, diğer çerçevelere kıyasla doğru sonuçlar sağlar. TensorFlow aracılığıyla tek adımlı tahmin için kullanılabilecek bazı tek adımlı modellerden (CNN, RNN, Yoğun, vb.) bahsettik.

Ayrıca çok adımlı modelleri kullanarak bir dizi gelecek değeri tahmin edebilirsiniz. Ayrıca, veri hazırlamanın, zaman serisi TensorFlow tahmininden önce önemli bir adım olduğuna dikkat edilmelidir. DL ve ML'de upGrad'ın Gelişmiş Sertifika Programını seçerek DL (Derin Öğrenme) ve ML'de zaman serisi tahmini hakkında daha fazla bilgi edinebilirsiniz . TensorFlow ile zaman serisi tahminlerini öğrenmeye başlayın!

TensorFlow kullanmanın sınırlamaları nelerdir?

TensorFlow, kodun uzunluğunu azaltsa da, kodu da biraz karmaşık hale getirir. Rakipleriyle karşılaştırıldığında, TensorFlow yavaştır ve ayrıca daha az kullanışlıdır. TensorFlow, belirsiz diziler için sembolik döngüler sunma zamanının gerisindedir. TensorFlow yalnızca NVIDIA GPU desteğine ve Python GPU programlama desteğine sahiptir. Başka bir destek şekli yoktur. Windows İşletim Sistemi kullanıcıları için pek fazla avantajı yoktur.

Sayısallaştırıcı tarafından kaydedilen her sonlu dizinin sınırlarındaki süreksizliklerin genliği pencereleme ile azaltılır. Pencereleme sistemi, birçok uygulamanın bir bilgisayarın grafik görüntüsünü ve sunum kaynaklarını aynı anda paylaşmasına izin verir. Grafik kullanıcı arayüzü (GUI) olan bir bilgisayarda aynı anda birçok uygulamayı kullanmak isteyebilirsiniz.

TensorFlow'u öğrenmek zor mu?

TensorFlow bazı insanlar için kolaydır, bazıları ise öğrenmenin zor olduğunu düşünür. Çeşitli programlama dilleri hakkında önceden bilginiz varsa ve çeşitli makine öğrenimi teknikleri hakkında bilgi sahibiyseniz, TensorFlow'u öğrenmek sizin için kolay olacaktır. Ancak, zorluk seviyesi de ilginize bağlıdır. TensorFlow ile gerçekten ilgileniyorsanız, bunu öğrenmek çok zor bir iş olmayacaktır.