Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 211

 
Renat Fatkhullin'in fotoğrafı.

1) Ne yazık ki, soruyu eksik formüle ettiniz ve bitmemiş ve kısa kibar bir cevap aldınız "önemli değil".

Sorunun kendisinde formüle ederek "böylece kabul / sözleşme" cevabını almak istediniz. Ancak Duncan, ilk seferinde "doğru olan" yanıtından kaçtı ve ikinci kez tekrarladı.

2) R'de doğruluk onayı almadınız ve diğer paketlerde sonucun neden farklı olduğuna dair bir cevap almadınız. "Diğer paketlerde cevap neden farklı" sorusunun ayrıştırılması daha önemlidir ve konuyu ortaya çıkarabilir.


3) Konumumuz:

выражение для dgamma

(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)

for x ≥ 0 , a > 0 and s > 0


в точке 0 является неопределенным.

R, bu noktayı hesaplamaya dahil edebileceğinize inanır, ancak yine de dgamma(0,0.5,1) durumunda olduğu gibi sonsuzluğa eşit olsalar bile sınır değerleri alır.

Ancak olasılıklar sıfır noktasında sonsuzluk dikkate alınarak hesaplanırsa, dgamanın tüm integralleri resmen sonsuz hale gelir ve bu mantığa göre x'in tüm değerleri için pgamma sonsuza eşit olmalıdır.

Ancak bu, tüm değerlerin sonlu olduğu pgammanın sonuçlarıyla çelişir. Doğrudurlar, sanki x=0 noktasında yoğunluğun = 0 olduğu kabul edilir.

1) Evet, ayrıntılı bir cevap almadım. Her ne kadar hayal kırıklığına uğratsam da... Fikrimi empoze etmiyorum, dürüst olmak gerekirse tartışmaktan da yoruldum. Bu kişinin sözlerinin orijinal mesajımızla neredeyse birebir örtüştüğüne dikkatinizi çekmek isterim. Uç noktadaki yoğunluğun nasıl belirleneceği önemli değildir, asıl mesele integrallerin doğru hesaplanmasıdır:

Kesin konuşmak gerekirse, sıfır noktasındaki gama dağılımının yoğunluğunun tanımlanmadığını beyan ederiz. Ve sağdaki limiti alırken yoğunluk birliğe eşittir.

Bunun ışığında, "R'deki hesaplama hataları" ifadesinin formülasyonunun doğru olmadığına inanıyoruz. Daha doğrusu, bu bir uzlaşım meselesidir: sıfır ifadesinin sıfırın gücüne eşit olarak nasıl düşünüleceği. Gama dağılımının yoğunluğunu sıfır noktasında sıfıra eşitlemek, herhangi bir geleneksel uygulama gibi görünmüyor.

2) Doğruluk konusunda, konuşma benim tarafımdan bile yapılmadı. Sıfırdaki yoğunluk, doğrulukla ilgili değildir; bu, işlevin bir sonucu olarak nasıl çıktı aldığınızla ilgilidir - sapma (NaN) veya sınıra veya sıfıra eşitleyin. Ana şey, bunun integrali hesaplamak için önemli olmamasıdır.

3) Makalenin düzeltilmiş metnini tekrar okuyun. Ve dgammanın davranışını bir hata olarak görmemeye karar vermene sevindim.

Ama işte burada:

dgammanın tüm integralleri resmen sonsuz hale gelir ve bu mantığa göre, x'in tüm değerleri için pgamma sonsuza eşit olmalıdır.

Garip, Renat.

pgamma prensipte sonsuz olamaz, çünkü integral yukarıdan 1 değeri ile sınırlanır.

Normal bir dağılım alalım. [-inf,+inf] üzerinde tanımlanır. Bu aralık boyunca dağılım fonksiyonu integrali = 1'dir. Ama bir şekilde, sonsuz büyüklükte bir destek üzerindeki yoğunluğun toplamının (entegrasyonunun) sonsuz bir toplamla sonuçlanmadığı ortaya çıkıyor. Tüm destek üzerinde yoğunluk olmasına rağmen != 0 hiçbir alanda yoktur.

Ve dgmamma için, yoğunluğu == inf olan x ==0 noktası (ve bu arada, yoğunluğun bu noktada 1 olma eğiliminde olduğu durumu göz ardı etmediniz ve bundan entegrasyon hakkında ne gibi sonuçlar çıkarıyorsunuz .. .) ne sıklıkla ortaya çıkıyor? hayır diyeceğim. Herhangi bir sürekli dağılımda herhangi bir noktada rastgele bir değişken gerçekleştirme olasılığı == 0 ... Bunu tüm istatistikçiler bilir. Yoğunluk, olasılığın x çevresinde sonsuz küçük bir bölgeye yaklaşıklığı olarak kabul edilir.

Bu olgudan, uç noktadaki yoğunluk ne kadar büyük olursa olsun, toplam intral üzerindeki etkisinin = 0 olduğu sonucu çıkar. Düşünün...

Bence fazla abarttın. ) Ama tartışmayacağım ve anlamayacağım. Belki bir gün bunun farkına varırım ve Duncan yerine kendim cevap veririm. )

Teşekkür ederim.

 

R, MetaTrader/MQL'de gerçek "karmaşık hesaplamaları basit ve hemen şimdi yapma" ihtiyacından ne kadar uzakta olduğumuzu görmemi sağlayan harika bir sistem.

Biz (C++ geliştiricileri) kanımızda "her şeyi kendiniz yapabilirsiniz ve düşük seviyeli bir taban ve hesaplama hızı veriyoruz" yaklaşımına sahibiz. Performans konusunda fanatikiz ve başarılıyız - 64 bitte MQL5 harika.

R ile bizzat oturduğumda, tek bir satırda mümkün olduğunca çok sayıda güçlü fonksiyona ihtiyacınız olduğunu fark ettim ve genellikle size araştırma yapma fırsatı veriyor.

Bu nedenle keskin bir dönüş yaptık ve MetaTrader 5'i yükseltmeye başladık:

  • Daha önce yeniden yazılmış Alglib ve Fuzzy matematik kitaplıklarını standart dağıtıma dahil etti, birim testleri ile kaplandı
  • R'den istatistiksel fonksiyonların bir analogunu geliştirdi, araştırma yaptı ve testlerle kapladı. çalışmalar devam ediyor ve kütüphane genişliyor
  • grafik kitaplığının ilk beta sürümünü geliştirdi R'de bir çizim analogu olarak Graphics. hızlı çıktı için tek satırlık işlevler ekledi
  • terminalin çıkış pencerelerindeki arayüzleri tablo verilerle çalışabilecek şekilde değiştirmeye başladı. çıktı yönünü değiştirdi, gereksiz sütunları devre dışı bıraktı, uzman çıktı penceresinde yazı tipini monospace olarak değiştirdi
  • yapılar da dahil olmak üzere dizileri otomatik olarak yazdırmak için güçlü bir ArrayPrint işlevi eklendi
  • dizileri diske hızlı bir şekilde yazmak/okumak için FileLoad ve FileSave işlevleri eklendi


Tabii ki, yolculuğun başlangıcındayız, ancak kuvvetlerin uygulanması için doğru vektör zaten belli.

 

Entegrasyon yaparken 7 adım elbette yeterli değil. İşte 1000:

> pgamma( 0.8 , 0.5 , 1 )
[ 1 ] 0.7940968

#а теперь велосипедное интегрирование:
> integration_steps <- seq( 0 , 0.8 , length. out = 1001 )
> integration_result <- 0
> for (i in 2 :length(integration_steps)){
+ integration_result <- integration_result + dgamma(integration_steps[i], 0.5 , 1 ) * (integration_steps[i] - integration_steps[i- 1 ])
+ }
> integration_result
[ 1 ] 0.7709089
#погрешность ~ 0.02 , но тут способ уже проще некуда, и так сойдёт :) . Бесконечность при x= 0 не мешает.
 
Alexey Burnakov :

1) Evet, ayrıntılı bir cevap almadım. Her ne kadar hayal kırıklığına uğratsam da... Fikrimi empoze etmiyorum, dürüst olmak gerekirse tartışmaktan da yoruldum. Bu kişinin sözlerinin orijinal mesajımızla neredeyse birebir örtüştüğüne dikkatinizi çekmek isterim.

Ayrıntılar veya doğrulama olmadan kibar bir yanıttı. Ve cevap Wolfram Alpha ve Matlab ile uyuşmadı, ki bu bir problem.

Kenara gitmeye gerek yok - temel sorun açıkça belirlendi.

 
Dr.Tüccar :


#погрешность ~ 0.02 , но тут способ уже велосипедней некуда, и так сойдёт :) . Бесконечность при x= 0 не мешает.

1/x fonksiyonunu 0'dan 1'e sınır noktaları dahil olmak üzere entegre edin ve analitik hesaplamaların sonucuyla karşılaştırın.

Wolfram, x=0'daki tekillik nedeniyle integralin yakınsak olmayacağını söylüyor.

 
kuantum :

1/x fonksiyonunu 0'dan 1'e sınır noktaları dahil olmak üzere entegre edin ve analitik hesaplamaların sonucuyla karşılaştırın.

Aynı kodla - 7.485471. R, 76.3342'ye gitti ve daha ileri gitmeyeceğini ve bunun doğru bir sonuç olmadığını ve yanlış olduğunu söyledi. Wolfram hemen sonucun bir araya gelmediğini ve cevap vermediğini söyledi.
Doğru cevap, ne kadar bilmiyorum?

Sadece 1/x integrali bulunmadığı için dgamma(x) integralinin de bulunamayacağını söyleme. Bu fonksiyonların her ikisi de x -> 0+ olarak sonsuz olma eğiliminde olsalar da, farklı hızlarda eğilim gösterirler ve bu hız, integralin bulunup bulunamayacağını etkiler. ya da değil

 

-log(x) işlevi vardır. x->0'da sonsuza meyillidir. Eksi olmadan yapabilirsiniz, o zaman düşme eğilimi gösterir, benim için çok rahatsız edici.

Ve 0'dan 1'e bir integrali var. Sonsuzluk karışmaz.


 
Renat Fatkhullin'in fotoğrafı.

R, MetaTrader/MQL'de gerçek "karmaşık hesaplamaları basit ve hemen şimdi yapma" ihtiyacından ne kadar uzakta olduğumuzu görmemi sağlayan harika bir sistem.

...

Bu nedenle, keskin bir dönüş yaptık ve MetaTrader 5'i yükseltmeye başladık:

  • Daha önce yeniden yazılmış Alglib ve Fuzzy matematik kitaplıklarını standart dağıtıma dahil etti, birim testleri ile kaplandı
  • R'den istatistiksel fonksiyonların bir analogunu geliştirdi, araştırma yaptı ve testlerle kapladı. çalışmalar devam ediyor ve kütüphane genişliyor
  • grafik kitaplığının ilk beta sürümünü geliştirdi R'de bir çizim analogu olarak Graphics. hızlı çıktı için tek satırlık işlevler ekledi
  • terminalin çıkış pencerelerindeki arayüzleri tablo verilerle çalışabilecek şekilde değiştirmeye başladı. çıktı yönünü değiştirdi, gereksiz sütunları devre dışı bıraktı, uzman çıktı penceresinde yazı tipini monospace olarak değiştirdi
  • yapılar da dahil olmak üzere dizileri otomatik olarak yazdırmak için güçlü bir ArrayPrint işlevi eklendi
  • dizileri diske hızlı bir şekilde yazmak/okumak için FileLoad ve FileSave işlevleri eklendi


Tabii ki, yolculuğun başlangıcındayız, ancak kuvvetlerin uygulanması için doğru vektör zaten belli.

R, diğer birçok PL'ler gibi, diziler biçimindeki verileri işlemek için açıkça işlevsellik sağlaması nedeniyle MQL'ye kıyasla makine öğrenimi için hala daha uygundur. Gerçek şu ki, makine öğrenimi için bir seçim genellikle iki boyutlu bir veri dizisidir ve buna bağlı olarak dizilerle çalışmak için işlevsellik gereklidir:

  1. Satırları ve sütunları başka bir diziye daha küçük diziler olarak ekleyin
  2. Bir dizideki satırları ve sütunları daha küçük diziler olarak değiştirme
  3. Bir diziden satırları ve sütunları kaldırma (örneğin, önemsiz tahmin edicileri veya bariz "aykırı değerlere" sahip örnekleri örnekten kaldırmak için).
  4. Dizileri parçalara bölme, bunun sonucunda orijinal diziden iki veya daha fazla dizi elde edilir, bunlar onun parçalarıdır (örneği eğitim ve test bölümlerine veya daha fazla parçaya bölmek için gereklidir, örneğin Wallking Forward için).
  5. Düzgün bir dağılıma sahip bir dizideki satırların ve sütunların rastgele karıştırılması (örnekteki belirli örneklerin farklı parçalara, tercihen bu parçalara eşit olarak dağılmış olması gerekir).
  6. Tek tek satırlar veya sütunlardaki verileri işlemek için çeşitli işlevler (örneğin, bir satır veya sütunun aritmetik ortalamasını hesaplama, varyans veya sonraki normalleştirme için bir satırdaki maksimum veya minimum değeri bulma).
  7. Vb. vb.

Bu arada, örneklerin diziler biçiminde işlenmesi için gerekli olan yukarıdaki işlevsellik MQL'de uygulanmamıştır, makine öğrenme algoritması geliştiricilerinin önemli bir kısmı, tüm bunların uzun süredir mevcut olduğu diğer PL'leri tercih edecektir. Veya, hafızam bana hizmet ederse, kolaylık sağlamak için iki boyutlu dizilerin tek boyutlu olarak sunulduğu AlgLib kütüphanesinden iddiasız MLP'yi (geçen yüzyılın 60'larının algoritması) kullanacak.

Elbette rastgele dağılımların yoğunluk fonksiyonları da gerekli bir fonksiyoneldir. Ancak bu tür işlevler, makine öğrenimi görevlerinde her zaman gerekli değildir ve bazılarında hiç kullanılmazlar. Ancak, çok boyutlu dizilerde olduğu gibi, seçimli işlemler, makine öğrenimi algoritmalarının uygulanmasının herhangi bir görev olmadan yapamayacağı bir şeydir, tabii ki, önemsiz bir XOR'dan bilinen normalleştirilmiş verileri ezberlemek için bir ızgarayı eğitmek bir görev değilse.

 
Renat Fatkhullin'in fotoğrafı.

R, MetaTrader/MQL'de gerçek "karmaşık hesaplamaları basit ve hemen şimdi yapma" ihtiyacından ne kadar uzakta olduğumuzu görmemi sağlayan harika bir sistem.

Biz (C++ geliştiricileri) kanımızda "her şeyi kendiniz yapabilirsiniz ve düşük seviyeli bir taban ve hesaplama hızı veriyoruz" yaklaşımına sahibiz. Performans konusunda fanatikiz ve başarılıyız - 64 bitte MQL5 harika.

R ile bizzat oturduğumda, tek bir satırda mümkün olduğunca çok sayıda güçlü fonksiyona ihtiyacınız olduğunu fark ettim ve genellikle size araştırma yapma fırsatı veriyor.

Bu nedenle keskin bir dönüş yaptık ve MetaTrader 5'i yükseltmeye başladık:

  • Daha önce yeniden yazılmış Alglib ve Fuzzy matematik kitaplıklarını standart dağıtıma dahil etti, birim testleri ile kaplandı
  • R'den istatistiksel fonksiyonların bir analogunu geliştirdi, araştırma yaptı ve testlerle kapladı. çalışmalar devam ediyor ve kütüphane genişliyor
  • grafik kitaplığının ilk beta sürümünü geliştirdi R'de bir çizim analogu olarak Graphics. hızlı çıktı için tek satırlık işlevler ekledi
  • terminalin çıkış pencerelerindeki arayüzleri tablo verilerle çalışabilecek şekilde değiştirmeye başladı. çıktı yönünü değiştirdi, gereksiz sütunları devre dışı bıraktı, uzman çıktı penceresinde yazı tipini monospace olarak değiştirdi
  • yapılar da dahil olmak üzere dizileri otomatik olarak yazdırmak için güçlü bir ArrayPrint işlevi eklendi
  • dizileri diske hızlı bir şekilde yazmak/okumak için FileLoad ve FileSave işlevleri eklendi


Tabii ki, yolculuğun başlangıcındayız, ancak kuvvetlerin uygulanması için doğru vektör zaten belli.

Bu dengeli ve şaşırtıcı derecede objektif bir R puanıdır.

Tartışmanın yapıcı kısmı boşuna değildi. R kullanıcılarının yorum ve önerilerini dinliyorsunuz, biz de platformu geliştirmekle ilgileniyoruz.

Tabii ki, yolculuğun başındasınız, ancak her durumda, R'den gelen "aşılar" MCL'yi güçlendirecektir.

Sıkı çalışmanızda iyi şanslar.

 

Burnakov'un bahsettiği sözleşmelerle ilgili olarak.

Tamamen farklı üç durumu ele alalım.

1. Sıfıra eşit bir sabite bölme.

R'de sonuca sahibiz

> 1 / 0
[ 1 ] Inf

Bu doğru sonuç mu?

Tercüman için bu sonuç doğru kabul edilmelidir, çünkü herhangi bir nedenle R ortamını durdurmak imkansızdır.

Derleyici için sorular var. Ve istisnai bir durumun meydana geldiğini düşünmek doğrudur, programın yürütülmesi kesintiye uğrar ve kontrol bu istisnai durumun işlenmesine aktarılır, aksi takdirde çöker.

Bakalım ne kadar farklı!

2. Sıfıra eşit bir değişkenle bölme.

> a<- 0
> 1 /a
[ 1 ] Inf

Açıkçası, bu seçenek öncekinden farklıdır.

1/a fonksiyonu a=0 dışında her yerde süreklidir. üstelik bu noktada soldaki limit = -Inf ve sağdaki limit = +Inf.

R bunu anlamıyor, ancak bununla yaşayabilirsiniz, çünkü eksi sonsuz ile artı sonsuz arasındaki fark, program kodunda değil matematikte anlamlıdır.


3. Sıfıra meyilli oldukları için iki sonsuz küçük niceliğin bölümü

> sin (a)/a
[ 1 ] NaN

NaN'nin anlamının benim için hiçbir açıklaması yok. Ancak, 2. maddeye göre, R'nin limitleri bu şekilde anlamadığı oldukça açıktır.

Bunlar bir programlama sistemi olarak R'nin hataları mı? bilmiyorum. Büyük olasılıkla, R belgelerinde bu tür nüanslar hakkında bilgi vermek gerekli olacaktır, ancak bu, şu anda yaklaşık 130.000 işlev olan merkezi olmayan geliştirme ile nasıl uygulanabilir? Bu gerekli mi?

Ortaya çıkan tartışma anlamında bundan ne sonuç çıkıyor?

Sahilde kararlar alınır.

1. R'yi alıyoruz ve aptalca kodu MKL'ye aktarıyoruz. Aynı zamanda farklı R fonksiyonlarındaki yukarıdaki seçeneklerin farklı yorumlanabileceğinin farkındayız.

2. Tarafımdan sıralanan durumlarda hangi değerlerin kabul edileceği konusunda anlaşmalar beyan ederiz (belki liste tam değildir). R kodunu dikkatlice kontrol ediyoruz ve ayarlarımıza uymuyorsa, yaptığımız anlaşmalara göre düzeltmelerle R'den MKL'ye taşıyoruz. Aynı zamanda geliştirmenin merkezileşmesi nedeniyle, kabul edilen anlaşmaları tutarlı bir şekilde yerine getiriyoruz ve bu anlamda daha iyi bir sistemimiz var.