"MQL5'te ONNX modelleri nasıl kullanılır?" makalesi için tartışma - sayfa 2

 
Quantum #:

Videonun 1. yorumunda, tensorflow sürüm 2.10.0'ı açıkça belirtmeniz gerektiğine dikkat edin

Teşekkürler, yani

Maxim Dmitrievsky #:
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?

[Silindi]  
Ivan Butko #:

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

from keras import backend as K
def NMSE_metric(y_true, y_pred):
    nmse = K.square(y_true - y_pred)/K.square(y_true+1 e-8)
    return nmse
#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= 'mse' , metrics = [NMSE_metric])


Implementation os NMAE as metric with Keras
Implementation os NMAE as metric with Keras
  • 2020.12.16
  • Patrick Luiz Patrick Luiz 1
  • stackoverflow.com
To do so, I'm trying with this code: The NNet I'm building is this: The problem is that NMSE_metric just gave inf. Any hint?
 
Maxim Dmitrievsky #:

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.

[Silindi]  
Quantum #:

Bu konuda bir makaleye ihtiyaç var.

Görünüşe göre enerjiden gelen metrikler de uygun değil :) iyi bir çözüm bilmiyorum, bu yüzden sınıflandırmaya geçtim.
 
Maxim Dmitrievsky #:
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.

İnsanlar da soruyor
Tahmin doğruluğu için kullanılan en yaygın metrik nedir
?
MAPE: Ortalama Mutlak Yüzde Hata, tahmin doğruluğunu kontrol etmek için en yaygın kullanılan ölçüdür. Ölçekten bağımsız olan ve farklı ölçeklerdeki serileri karşılaştırmak için kullanılabilen yüzde hataları altında gelir.

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.

Обсуждение статьи "Использование ONNX-моделей в MQL5"
Обсуждение статьи "Использование ONNX-моделей в MQL5"
  • 2023.03.29
  • www.mql5.com
Опубликована статья Использование ONNX-моделей в MQL5 : Автор: MetaQuotes...
 
Quantum #:

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.

 
Stanislav Korotky #:

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.

[Silindi]  
Artışları / artışların logunu almanız gerekir. Otokorelasyon / döngüler / volatilite kümelenmesinden kurtulun. O zaman standart metrikler doğru çalışmalıdır, ancak hata buna göre artacaktır.
 

Herhangi bir makine öğrenimi projesi üç aşamadan oluşur:

  • ön işleme (birçok şey)
  • Model seçimi, eğitim, optimizasyon vb.
  • uygulama

µ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.