Anasayfa / Makine Öğrenmesi / Derin Öğrenme (Deep Learning) / LSTM ile Dolar/TL Kuru Tahmini

LSTM ile Dolar/TL Kuru Tahmini

Merhabalar, bugünkü yazımda sizlere Özyinelemeli Sinir Ağlarından ve LSTM ile nasıl dolar kuru tahmini yapılacağından bahsedeceğim, yazının içeriği şu şekilde;

  • Özyinelemeli Yapay Sinir Ağları

    • Konuşma Tanıma Örneği
  • Kaybolan Eğim(Vanishing Gradient)

  • Uzun-Kısa Dönem Hafıza(LSTM)
  • LSTM ile Dolar Tahmini
    • Dolar Verisinin Alınması
    • Veri Analizi ve Ön İşlemesi
    • LSTM Modelinin Kurulması
    • Sonuçlar

1 – Özyinelemeli Sinir Ağları

Bir filmin her noktasında ne tür bir olay olduğunu sınıflandırmak istediğinizi düşünün. Geleneksel bir sinir ağının filmdeki daha önceki olaylar hakkındaki muhakemesini daha sonra bilgilendirmek için nasıl kullanabileceği açık değildir. Özyinelemeli sinir ağları bu sorunu ele almaktadır. Bunlar, bilginin devam etmesine izin veren döngüler içeren ağlardır.

Konuşma Tanıma Örneği

Yukarıdaki resimde de “What time is it?” Sorusunun kelime kaydedilip tek bir komuta döndürülecek.

2- Kaybolan Eğim(Vanishing Gradient)

Kaybolan eğim problemi, büyük zaman serisi verileriyle çalıştığımızda ortaya çıkar.

Bir sinir ağının eğitimi üç ana aşamaya sahiptir:

  • İlk olarak, bir ileri geçiş yapar ve bir tahmin yapar.
  • İkincisi, bir kayıp fonksiyonu kullanarak tahminleri gerçek değerlerle karşılaştırır.
  • Kayıp fonksiyonu, ağın ne kadar kötü performans gösterdiğine dair bir tahmini bir hata değeri çıkarır.
  • Son olarak, ağdaki her nöron için eğimleri hesaplayan geri yayılımı yapmak için bu hata değerini kullanır.

Eğim ne kadar büyükse, ayarlamalar o kadar büyür ve tersi de geçerlidir. Sorun da burada yatmaktadır. Geri yayılımı yaparken, bir katmandaki her nöron, eğim etkileriyle ilgili olarak, önceki katmandaki eğim değerini hesaplar. Bu nedenle, önceki katmanlara yapılan ayarlamalar küçükse, geçerli katmana yapılan ayarlar daha da küçük olacaktır.

  • Bu, geri yayıldıkça eğimin üssel olarak küçülmesine neden olur.
  • Daha önceki katmanlar, iç ağırlıklar son derece küçük eğimleriyle ayarlanmakta olduğu için, herhangi bir öğrenme yapamazlar.
  • Bu, kaybolan eğim problemini doğurur.

Bunun çözümü için Uzun-kısa dönem hafıza özyinelemeli sinir ağları önerilmiştir.

3- Uzun-Kısa Dönem Hafıza(LSTM)

  • Tüm özyinelemeli sinir ağları, sinir ağının özyineli modüllerinin bir zinciridir. Standart RNN’lerde, bu özyineli modül, tek bir tanh tabakası gibi çok basit bir yapıya sahip olacaktır.

 

  • LSTM’ler de bu zincir benzeri yapıya sahiptir, ancak özyineli modülün farklı bir yapısı vardır. Tek bir nöral ağ katmanına sahip olmak yerine dört tane var, çok özel bir şekilde etkileşime giriyor.
  • LSTM’lerin anahtar kavramı, diyagramın üstünden geçen yatay çizgi olan hücre durumudur(cell state).
  • LSTM, kapı olarak adlandırılan yapılar tarafından dikkatle düzenlenmiş, hücre durumuna bilgi çıkarma veya ekleme yeteneğine sahiptir.
  • Kapılar, isteğe bağlı olarak bilginin iletilmesini sağlayan bir yoldur. Sigmoid nöral ağ katmanından ve nokta tabanlı çarpma işleminden oluşurlar.
  • Sigmoid katman, her bileşenin ne kadarının geçmesine izin verileceğini açıklayan 0 ile 1 arasındaki sayıları çıkarır. 0 değeri, “hiçbir şey kalmasın” anlamına gelirken, 1 değeri “herşey içinden geçsin!” anlamına gelir.
  • Bir LSTM, hücre durumunu korumak ve kontrol etmek için bu kapılardan üç tanesine sahiptir.
  • LSTM’mizdeki ilk adım, hücre durumundan hangi bilgileri atacağımıza karar vermektir. Bu karar “unutturucu geçit katmanı(forget gate layer)” adı verilen sigmoid bir katman tarafından yapılmıştır.

  • Bir sonraki adım, hücre durumunda hangi yeni bilgileri saklayacağımıza karar vermektir.
  • Bunun iki bölümü var. İlk olarak, “giriş kapısı katmanı” olarak adlandırılan bir sigmoid katman, hangi değerleri güncelleyeceğimize karar verir.
  • Ardından, bir tanh tabakası, duruma eklenebilecek yeni aday değerlerin bir vektörünü oluşturur.
  • Bir sonraki adımda, bu ikisini bir güncelleme oluşturmak için birleştireceğiz.

  • Artık eski hücre durumunu yeni hücre durumuna güncellemenin zamanı geldi.
  • Önceki adımlar zaten ne yapılacağına karar verdi, şimdi bunu gerçekten yapmamız gerekiyor.

  • Son olarak, çıktıya karar vermeliyiz.
  • Bu çıktı, hücre durumumuza dayalı olacak, ancak filtrelenmiş bir sürüm olacak.
  • İlk olarak, çıkış yapacağı hücre durumunun hangi bölümlerine karar vereceğine karar veren bir sigmoid katman çalıştırıyoruz.
  • Daha sonra, hücre durumunu tanh yoluyla koyarız (değerleri -1 ve 1 arasında olacak şekilde) ve sigmoid kapının çıktısıyla çoğaltırız, böylece yalnızca karar verdiğimiz parçaları çıkarmış oluruz.

 

4- LSTM ile Dolar Tahmini

Evet şimdi kodlama kısmına geçelim, Buradan önce bilgisayarınızda bulunması gereken bazı kütüphaneler var. Bunları indirmek için komut satırınıza(cmd) şu komutları yazabilirsiniz.

Dolar Verisinin Hazırlanması

Veriyi indirmek için öncelikle buraya TIKLAYIN.

Ardından resimdeki ayarları yaptıktan sonra rapor oluştur’a tıklayın.

Excel’e aktara tıklayın ve veriniz bilgisayarınıza inecek.

Veri Analizi ve Ön İşleme

Öncelikle Çalışmada kullanacağımız kütüphaneleri import edelim.

Tarihi index haline getireceğiz.

Bildiğiniz gibi cumartesi pazar piyasalar kapalı ve burada da o yüzden o datalar NaN gözüküyor. Onları dolduralım.

Evet şimdi doların 2005-2018 Eylül arasındaki değişimine bakalım.

Veriyi Deep Learning Modellerine ve LSTM’e vermeden önce 0-1 arasında scale etmeliyiz. Şimdi onu yapalım.

Şimdi ise veriyi eğitim ve test diye 2 ye böleceğiz. Burada %60 Train %40 Test şeklinde bir bölme yapacağız.

Şimdi ise veri setimizi adım adım okuması için okunabilir bir hale getireceğiz. Buradaki mantık son güne bakıp diğer günü tahmin etmesi şeklinde olacak.

Şimdi ise LSTM Modelimizi kuralım.

Şimdi ise sonuçlarımızı ölçüp, nasıl gözüktüğüne bakalım.

Çıktıları ise şu şekilde ;

  • Training data score: 0.03 RMSE
  • Test data score: 0.12 RMSE

Şimdi bunları görselleştirelim.

Sonuçlar şu şekilde olacak;

Gördüğünüz gibi gayet iyi şekilde tahminleyebiliyoruz. Hatta Ekonomik krizi bile tam olmasa bile öngörebiliyoruz. Burada 2-3 gün öncesine bakarak sonraki gün tahminlenebilir vb. gibi değişik parametreler ile sizde kendi bilgisayarınızda deneyebilirsiniz.

Buraya kadar gelip okuduğunuz için teşekkür ederim. Merak ettiklerinizi yorumlarda yazmayı unutmayın.

Kaynakça

 

YATIRIM TAVSİYESİ DEĞİLDİR.

Hakkında Yunus Emre GÜNDOĞMUŞ

19 Yaşında Veri Bilimine Her Alanından Saldırıp, Kendini Geliştirmeye Çalışan Bir Girişimci

GÖZ ATMAK İSTEYEBİLİRSİNİZ

R ile Zaman Serileri Çözümlemesi Bölüm 3 (Ayrıştırma Yöntemleri)

Merhaba Veri Bilimi Okulu sevenler bu yazımızda zaman serisi modellerinden olan Ayrıştırma Yöntemlerinden bahsedeceğiz. Bir …

2 yorumlar

  1. Merhaba,

    değerli bilgiler için teşekkürler öncelikle. Çok fazla programlama bilgisi olmayan birisi olarak senin çalışmanı baz alarak bir çalışma yapmak istedim, karşıma çıkan birkaç sorunu aktarmak istiyorum. Belki yazılarında bu detaylara yer vererek deneme yapacakların zorlanmasını engelleyebilirsin.

    “pip install tensorflow” hata aldım, bu eklenti versiyon 3.6.x e kadar destekliyormuş, bende 3.7 yüklü olduğu için yükleyemedim. Bir süre araştırma yaptıktan sonra bu bilgiyi bularak yükleme yapabildim. Buradan yola çıkarak, program için kullanılan eklenti ve desteklediği python süremlerimi yada en azından senin kullandığın versiyonları bilgi olarak eklersen problem çözümü için okuyuculara yardımcı olacaktır.

    İlk programdaki, “%matplotlib inline” satırı hata veriyor.. Sebebini bulamadım.

    Bu çalışmanın bir video’su va ryoutube’da. Orada bir local bir web server üzerinde bazı işlemler yapılıyor, onun kurulumu da link oalrak verilebilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir