Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Videonun 1. yorumunda, tensorflow sürüm 2.10.0'ı açıkça belirtmeniz gerektiğine dikkat edin
Teşekkürler, yani
Burada deney yapmanın bir anlamı yok, çünkü böyle bir tahmin naif bir tahminden farklı değildir (önceki kapanış fiyatının değeri bir tahmin olarak alınır). Bu durumda, modelin tahmin yeteneği hakkında hiçbir şey söylemeyen neredeyse en küçük öğrenme hatasını (RMS) elde edersiniz. Daha ziyade, ONNX'te karmaşık mimarinin bile terminale kolayca aktarılabileceğine dair eğitici bir örnektir. Zaman serisi tahmini için sinir ağı mimarilerinin araştırılması üzerine o makalenin yazarlarının ne içtiğini bilmiyorum :) burada ya doğru tahmin gerekiyor ya da regresyon yerine sınıflandırma.
Lütfen test mumlarının diğer %20'sinin dahil olduğu resimdeki örneği açıklayın. Bu bir ileri tahmin mi? Tahmin neden gerçek fiyatlarla neredeyse tamamen örtüşüyor (resme bakılırsa, iki mum çubuğu gibi görünüyor, sadece biri bir çubuk kaydırılmış), ancak test cihazı biraz üzgün?
Lütfen test mumlarının diğer %20'sinin dahil olduğu resimdeki örneği açıklayın. Bu bir forward mı? Tahmin neden gerçek fiyatlarla neredeyse tamamen örtüşüyor (resme bakılırsa, iki mum çubuğu gibi görünüyor, sadece biri bir çubukla kaydırılmış), ancak test cihazında biraz üzüntü var?
Kendi sorunuzu kendiniz yanıtladınız, tahmin olarak gecikmeli bir MA elde edersiniz (genellikle tek bir geri kayma ile). Bu, standart metrikler aracılığıyla eğitim yaparken iyi bilinen bir hiledir, bu sonuçla en aza indirilirler.
Yukarıda diğer metrikler hakkında okuyabileceğiniz bir bağlantı ekledim.https://stackoverflow.com/questions/65316205/implementation-os-nmae-as-metric-with-keras
Tahmin olarak gecikmeli bir MA elde ettiğinizi (genellikle tek bir geriye doğru kaydırma ile) kendi sorunuzu yanıtladınız. Bu, standart metrikler aracılığıyla eğitim yaparken iyi bilinen bir hiledir, bu sonuçla en aza indirilirler.
Yukarıda diğer metrikler hakkında okuyabileceğiniz bir bağlantı ekledim.Bu konuda bir makaleye ihtiyaç vardır.
Bu konuda bir makaleye ihtiyaç var.
Görünüşe göre enerji endüstrisindeki metrikler de uymuyor :) iyi bir çözüm bilmiyorum, bu yüzden sınıflandırmaya geçtim.
En iyi tahmin metriği için google'da MAPE (Ortalama mutlak yüzde hata) çıkıyor.
Keras modellerinin optimizasyonunda metrikleri açıkça kullanmak için, bunlar #13'teki gibi değil, bir kayıp fonksiyonu olarak açıkça belirtilmelidir.
Python'da 100'den fazla regresyon metriğinin bir uygulaması burada bulunabilir (Akaike Bilgi Kriteri, Aitchison mesafesi, Amemiya'nın Düzeltilmiş R-kare, Amemiya'nın Tahmin Kriteri, Gupta tarafından verilen Bias, Bayesian Bilgi Kriteri, Brier skoru, Pearson korelasyon katsayısı, Merkezlenmiş kök-ortalama-kare (RMS) farkı, Kobayashi ve Salam tarafından geliştirilen Ayrıştırılmış MSE...).
MAPE metrik optimizasyonu ile örnek (numpy matematik fonksiyonları yerine keras kullanılmalıdır, çünkü tensörler).
# example from https://github.com/AtrCheema/SeqMetrics/blob/master/SeqMetrics/_rgr.py
# Mean Absolute Percentage Error (MAPE)
# The MAPE is often used when the quantity to predict is known to remain way above zero_.
# It is useful when the size or size of a prediction variable is significant in evaluating the accuracy of a prediction_.
# It has advantages f scale-independency and interpretability.
# However, it has the significant disadvantage that it produces infinite or undefined values for zero or close-to-zero actual values_.
# .. _zero:
# https://doi.org/10.1016/j.neucom.2015.12.114 // Mean Absolute Percentage Error for regression models
# .. _prediction:
# https://doi.org/10.1088/1742-6596/930/1/012002 // Forecasting Error Calculation with Mean Absolute Deviation and Mean Absolute Percentage Error
# .. _values:
# https://doi.org/10.1016/j.ijforecast.2015.12.003 // A new metric of absolute percentage error for intermittent demand forecasts
from keras import backend as K
def MAPE_metric(y_true, y_pred):
return (K.mean(K.abs((y_true - y_pred) / (y_true+1e-8)) * 100))
#define the model
model = Sequential()
model.add(Conv1D(filters=256, kernel_size=2,activation='relu',padding = 'same',input_shape=(120,1)))
model.add(MaxPooling1D(pool_size=2))
model.add(LSTM(100, return_sequences = True))
model.add(Dropout(0.3))
model.add(LSTM(100, return_sequences = False))
model.add(Dropout(0.3))
model.add(Dense(units=1, activation = 'sigmoid'))
model.compile(optimizer='adam', loss=MAPE_metric , metrics = [MAPE_metric])
optimizasyonunun nasıl göründüğü
tahmin grafiği:
Bununla birlikte, buradaki optimizasyonda MAPE'nin kullanılması da bir kaymaya neden olmuştur.
Belki de metriklerin ürünleri şeklinde daha karmaşık optimizasyon yönlerini dikkate almamız gerekiyor.
Bu konu detaylı bir araştırma gerektirmektedir.
En iyi tahmin metriği için Google MAPE'yi (Ortalama mutlak yüzde hata) gösterir
Keras modellerinin optimizasyonunda metrikleri açıkça kullanmak için, bunlar #13'teki gibi değil, bir kayıp fonksiyonu olarak açıkça belirtilmelidir.
Python'da 100'den fazla regresyon metriğinin uygulaması burada bulunabilir (Akaike Bilgi Kriteri, Aitchison mesafesi, Amemiya'nın Düzeltilmiş R-kare, Amemiya'nın Tahmin Kriteri, Gupta tarafından verilen Bias, Bayesian Bilgi Kriteri, Brier skoru, Pearson korelasyon katsayısı, Merkezlenmiş kök-ortalama-kare (RMS) farkı, Kobayashi ve Salam tarafından geliştirilen Ayrıştırılmış MSE...).
Ancak, optimizasyon sürecinde MAPE kullanıldığında, burada da bir kayma elde edilmiştir.
Belki de metriklerin ürünleri şeklinde daha karmaşık optimizasyon yönlerini dikkate almamız gerekiyor.
Konu detaylı bir çalışma gerektirmektedir.
IMHO, sorun her zaman metrikte değil, tahmin için seçilen verilerin yapısındadır - bu durumda, örnek için en "basit" örnek seti alınmıştır. Örneğin, gömme uzayı boyunca vektörleri örneklemeyi deneyin (serinin otokorelasyonunun kaybolduğu bir adımla örnekler alın) - gerçek olana daha benzer bir tahmin elde edeceksiniz - bu sadece MA benzeri gecikmenin olmaması değil, aynı zamanda bazen çok yanlış olacağı anlamına da gelir ;-).
Serinin haber arka planı olmayan kısımlarını ısırıp birbirine yapıştırırsanız, sonuç kabul edilebilir olmalıdır.
IMHO, sorun her zaman metrikte değil, tahmin için seçilen verilerin yapısındadır - bu durumda örnek için en "basit" örnek seti alınmıştır. Örneğin, gömme uzayı boyunca vektörleri örneklemeyi deneyin (serinin otokorelasyonunun kaybolduğu bir adımla örnekler alın) - gerçek tahmine daha benzer bir tahmin elde edeceksiniz - bu sadece MA benzeri gecikmenin olmaması değil, aynı zamanda bazen çok yanlış olacağı anlamına da gelir ;-).
Bu, daha karmaşık veri ön işleme süreçleri ve konunun ayrı bir şekilde ele alınmasını gerektirir. Görünüşe göre burada pek çok şey veriler arasındaki ilişkilerin doğasına bağlı (piyasalar karmaşık ilişkilere sahip).
Anladığım kadarıyla, yeni bir bilgi yoksa (ya da doğrusal dönüşümler anlamında rolü önemsizse Optimum Sinyal İşleme, 1.4 Korelasyon İptal Etme 1.5 Gram-Schmidt Ortogonalizasyonu), o zaman en iyi tahmin geçmiş değer olacaktır (ancak doğru bir şekilde dikkate alınırsa, deneylere ihtiyaç duysa da çok fazla yanlış olmamalıdır).
Metrikler (ağ ağırlıklarının optimizasyonunun "yönleri") hakkında (finansal zaman serileri için) anlaşılması gerektiğini düşünüyorum, soru ayrı bir makale gerektiriyor.
Herkesi deneyimlerini paylaşmaya davet ediyoruz.
Herhangi bir makine öğrenimi projesi üç aşamadan oluşur:
µl'de ONNX modellerinin kullanılması uygulama sorununu çözmektedir. Tüm modellerin ve oldukça kolay olmadığı doğrudur.
Modellerin eğitimi ve optimizasyonu Python'da ayrı bir süreçle çözülür.
Ancak tüm bunların arasında ilk aşama en çok zaman alan, son derece yaratıcı ve en önemli olanıdır. Ve bunu µl üzerinde gerçekleştirmek imkansızdır. İlkel ölçeklendirmeyi ön işleme olarak görmüyoruz. Ve halk bilgeliği der ki: "Çöp içeri - çöp dışarı". MO'nun yalnızca MCL'de tam olarak kullanılması için MCL'de ek olarak geliştirilecek ve uygulanacak çok fazla şey var. Özellikle de sürekli genişlediği için bu muazzam şeyi kucaklayamazsınız.
Bu nedenle, bir ön işlemi yürütmek için ya başka bir dilde yapın (R/Python/Julia vb. konusunda uzman olan) ya da ONNX'e dönüştürmeye çalışın.
Şimdiye kadar ONNX'i uygulamanın yararı, ONNX modellerini nasıl dönüştüreceğimizi, oluşturacağımızı, basitleştireceğimizi ve optimize edeceğimizi öğrenmemizdir. Gelecekte faydalı olabilir.