X ekseni boyunca doğrusal olmayan çarpıtmalara sahip iki fiyat grafiğinin karşılaştırılması - sayfa 6

 

Bu sorun DTW aracılığıyla nasıl çözülür (örnek):

  1. Son 100 bar gibi tarihteki benzer durumları bulmamız gerekiyor.
  2. Mevcut 1.000.000 bar geçmişi.
  3. İlk olarak, 50 barlık 1.000.000 dizi alındı ve DTW aracılığıyla şablonla karşılaştırıldı.
  4. Her biri zaten 55 çubuk olan 1.000.000 dizi daha aldık ve bunları DTW aracılığıyla şablonla karşılaştırdık.
  5. Şimdi 60 bar için.
  6. .....
  7. Her biri 100 bar.
  8. .....
  9. Her biri 300 bar. Ve orada durabilirsin.

O(N^2) karmaşıklığına sahip DTW algoritması kullanılarak toplamda 50.000.000 karşılaştırma yapılmıştır. Onlar. çok kabaca 5 * 10^11 (500 milyar) temel hesaplama işlemi gerçekleştirdi.

Şimdi yeni bir çıta geldi - yeniden 500 milyar hesaplama yapıldı.

Son elementin 200.000'i ile başlayarak tarih üzerinde koşmaya karar verdik. Kabaca, bir koşu için 200.000 kez, her biri 500 milyar hesaplama yapmanız gerekir. Toplam 10^17 hesaplama.

Kurnaz bir optimizasyon olsa bile, iki kattan fazla bir kazanç sağlamayacaktır. Onlar. en iyi ihtimalle, yaklaşık 10 ^ 15 hesaplama yapmak gerekecektir.

 
hrenfx :

Bu sorun DTW aracılığıyla nasıl çözülür (örnek):

Görüyorsunuz, şu anda DTW'nin kendisiyle daha çok ilgileniyoruz, nasıl uygulanacağıyla değil.
 
hrenfx : Bu görev DTW aracılığıyla nasıl çözülür (örnek):

zor değilse, o zaman bu sorunun çözümünü kodda gösterin, çok pratik değil, daha çok spor ilgi alanı

 

Aklı başında hiç kimse, sonucu beklemeyen bir algoritmanın uygulanmasını üstlenmeyecektir.

Aynı Pearson CC de DTW gibi uygun olmaz çünkü. hesaplama karmaşıklığı da O(N^2)'dir. Ancak , Pearson'ın QC hesaplamalarının O(N * log(N)) karmaşıklığına sahip önemli bir algoritmik optimizasyonu vardır ve bu, bu sorunun kabul edilebilir bir sürede çözülmesine izin verebilir. Bu algoritmanın uygulamasını Codebase'de yayınladım. Ortaya çıkan sorunu çözmek için, aynı algoritmayı ZigZag ile dönüştürülmüş dVR'ler kümesine uygulamak kalır.

 
hrenfx :

Aklı başında hiç kimse, sonucu beklemeyen bir algoritmanın uygulanmasını üstlenmeyecektir.

Aynı Pearson CC de DTW gibi uygun olmaz çünkü. hesaplama karmaşıklığı da O(N^2)'dir. Ancak, Pearson'ın QC hesaplamalarının O(N * log(N)) karmaşıklığına sahip önemli bir algoritmik optimizasyonu vardır ve bu, bu sorunun kabul edilebilir bir sürede çözülmesine izin verebilir. Bu algoritmanın uygulamasını Codebase'de yayınladım. Ortaya çıkan sorunu çözmek için, aynı algoritmayı ZigZag ile dönüştürülmüş dVR'ler kümesine uygulamak kalır.


Konunun yazarının karşılaştığı görev ve cevaplarıyla başlamak için okursunuz.
 
Integer :


denedim. Nasıl kullanılacağı da belli değil. Çıktı, bir dönüştürme yolu veya dönüştürülmüş veri olmalıdır.

Algoritmanın çıktısında "birikmiş maliyet matrisi"ni elde ettik (ve sadece şekildeki yerel mesafe matrisini değil), yöntem sağ alt hücrenin değerini bize döndürürken (yapıya göre, tüm matristeki maksimum). Şimdi yolu bulmak için, her seferinde en küçük değere sahip seçeneği seçerek (n,m) hücresinden (1,1) hücresine doğru hareket etmeniz yeterlidir:

 1 : path[] <- new array
2 : i =rows(dtw)
3 : j =columns(dtw)
4 : while (i> 1 ) & (j> 1 ) do
5 :     if (i == 1 ) then
6 :       j = j- 1
7 :     else if (j == 1 ) then
8 :       i = i- 1
9 :     else
10 :     if dtw(i- 1 ;j) == min{dtw(i- 1 ;j); dtw(i;j- 1 ); dtw(i- 1 ; j- 1 )} then 
11 :        i = i- 1
12 :     else if dtw(i;j- 1 ) == min{dtw(i- 1 ;j); dtw(i;j- 1 ); dtw(i- 1 ;j- 1 )} then
13 :        j = j- 1
14 :     else
15 :     i = i- 1 ; j = j- 1
16 :     end if
17 :   path:add(i;j)
18 :   end if
19 : end while
20 : return path
 
sonuç olarak, yol dizisi bir sinyali diğerine dönüştürmek için en uygun yolu içerir. Herhangi bir yönde yapabilirsiniz.
 
Sinyal benzerliğinin derecesi, matrisin sağ alt hücresinin değeri ile belirlenir, ne kadar büyükse, sinyaller birbirinden o kadar güçlü olur.
 
alsu : Sinyallerin benzerlik derecesi, matrisin sağ alt hücresinin değeri ile belirlenir, ne kadar büyükse, sinyaller o kadar farklıdır.
Tamam teşekkürler, gayet anlaşılır bir şekilde açıkladılar, bir soru daha: Verileri normalleştirmeye veya aynı sıraya getirmeye gerek var mı, sonucu etkiler mi?
 
IgorM :
Tamam teşekkürler, gayet anlaşılır bir şekilde açıkladılar, bir soru daha: Verileri normalleştirmeye veya aynı sıraya getirmeye gerek var mı, sonucu etkiler mi?
dtw[n][m] ölçeğe bağlıdır, bu nedenle çok sayıda ikili karşılaştırma varsa, tercihen ölçeklendirmeniz ve ortalamanız gerekir.