Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 2032
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
Orman için de kümenin önemini görmek mümkündür. Katbust'ta bu muhtemelen plot_tree'dir.
Verileri hazırlayıp yayınlayacağım.
6 sütun için bir test sürümü yaptım, 11GB aldı. Notepad++ açılamadı, dosyanın çok büyük olduğunu söylüyor. SQLite için BD Tarayıcı 20 dakikadır askıda.Ne hakkında olduğunu anlayana kadar ağaç kümelerinin neye benzediğini gösteren bir resim gösterin.
Neden açayım? :) Hata ayıklama için benzer bir yapıya sahip mini bir kopya yapıyorum.
Merak ediyorum, tüm verileri belleğe almadan ağaçları nasıl eğitiyorlar? Tablo 6 GB ise, yaklaşık 6 GB bellek kullanılmış olmalıdır. Ağacın her bir sütunu bütünüyle sıralaması gerekir. Her şeyi belleğe almazsanız, ancak her seferinde diskten veri okursanız, yavaş olacaktır.
Tek seçenek, verileri double değil, float türünde bellekte tutmaktır, ancak bu doğruluğu azaltacaktır. Bizim için 5 haneli hassasiyetle bu korkutucu olmayabilir ama catbust evrensel bir yazılım, fiziksel ve matematiksel problemlerin çift hassasiyette çözülmesi gerektiğini düşünüyorum.
Kodu incelemedim, ancak mantıklı düşünürseniz, CatBoost muhtemelen örnek veri tablosunu dönüştürür ve tam olarak dönüştürülmüş sürümü depolar, bu da hızlı bir şekilde sıkıştırılabilir.
Dönüşüm, her tahmin edicinin niceleme ızgarasına göre gerçekleşir (6 algoritma mevcuttur) ve örneğin, değişkenin 1000 farklı değerinden 32 seçenek kalır (kuantum ızgara aralığına düşen) ve böyle bir veri vektör kolayca sıkıştırılır, ayrıca sayılar zaten yalnızca tam sayılardır (ızgara boyutu kısıtlamalarına göre - kısa veri türü - sayı başına 2 bayt) ve niceleme tablosu basitçe bellekte bulunur ve daha sonra kodda bir model oluştururken kullanılır. Boyutu zaten makul bir şekilde azalttık ve ardından, değerlendirme için tüm tahmin edicileri değil, büyük numuneler için önerilen bir kısmını seçerek hacmi azaltabilirsiniz, rasgele algoritma ise bu tahmin edicileri diğer ağaçlarda kullanmanıza izin verir. hemen "çantaya" düşmeyin ", bundan dolayı eğitim daha da hızlı olacak, ancak modelde daha fazla ağaç olacak. Elbette başka hileler de var, ama asıl mesele niceleme.
Burada nicelleştirmeye genellikle özel dikkat gösterilmesi gerekir, ideal olarak, her tahminci için kendi ızgaranızı seçmeniz ve ızgara ile birlikte eğitim için veri göndermeniz gerekir, bu algoritmayı yapmanızı sağlar.
Bu nedenle, numune kendi başına nicelenebilir ve iyi sıkıştırılır.
Kodu incelemedim, ancak mantıklı düşünürseniz, CatBoost muhtemelen örnek veri tablosunu dönüştürür ve tam olarak dönüştürülmüş sürümü depolar, bu da hızlı bir şekilde sıkıştırılabilir.
Dönüşüm, her tahmin edicinin niceleme ızgarasına göre gerçekleşir (6 algoritma mevcuttur) ve örneğin, değişkenin 1000 farklı değerinden 32 seçenek kalır (kuantum ızgara aralığına düşen) ve böyle bir veri vektör kolayca sıkıştırılır, ayrıca sayılar zaten yalnızca tam sayılardır (ızgara boyutu kısıtlamalarına göre - kısa veri türü - sayı başına 2 bayt) ve niceleme tablosu basitçe bellekte bulunur ve daha sonra kodda bir model oluştururken kullanılır. Boyutu zaten makul bir şekilde azalttık ve ardından, değerlendirme için tüm tahmin edicileri değil, büyük numuneler için önerilen bir kısmını seçerek hacmi azaltabilirsiniz, rasgele algoritma ise bu tahmin edicileri diğer ağaçlarda kullanmanıza izin verir. hemen "çantaya" düşmeyin ", bundan dolayı eğitim daha da hızlı olacak, ancak modelde daha fazla ağaç olacak. Elbette başka hileler de var, ama asıl mesele niceleme.
Burada nicelleştirmeye genellikle özel dikkat gösterilmesi gerekir, ideal olarak, her tahminci için kendi ızgaranızı seçmeniz ve ızgara ile birlikte eğitim için veri göndermeniz gerekir, bu algoritmayı yapmanızı sağlar.
Bu nedenle, numune kendi başına nicelenebilir ve iyi sıkıştırılır.
Şimdi bu ızgaranın ne için kullanıldığını anlıyorum, sıkıştırma için çıkıyor. Peki, daha hızlı sırala.
Aynen, hatırladım, varsayılan olarak 1024 bölme seçeneği için bir ızgara var gibi görünüyor. Tüm veriler bölünmüş sayılarla değiştirilirse, ushort biçiminde saklanabilir ve bu 8, 4 kat sıkıştırma yerine 2 bayttır. Görünüşe göre 6 yerine 2 GB'a sahipsin ve kullandın.
Varsayılan 254'tür, ancak o zaman ne kadar ayarladığımı hatırlamıyorum. Belki 2 GB'den daha az bellek tüketildi - bu kadar az olmasına çok şaşırdığımı tam olarak hatırlıyorum.
Her durumda, bu yaklaşım, örneğin kendisini bile verileri önemli ölçüde sıkıştırmanıza olanak tanır. Bunu sinir ağları ile yapamazsınız.
Şimdi bu ızgaranın ne için kullanıldığını anlıyorum, sıkıştırma için çıkıyor. Peki, daha hızlı sırala.
Varsayılan 254'tür, ancak o zaman ne kadar ayarladığımı hatırlamıyorum. Belki 2 GB'den daha az bellek tüketildi - bu kadar az olmasına çok şaşırdığımı tam olarak hatırlıyorum.
O zaman uchar kullanabilirsiniz, 1 bayttır.
Izgara, bir dizi değer kullandığından daha az uydurmaya da izin verir. Ancak her zaman iyi olmayacak - teorik seviyeleri yakalamak için ağı kendiniz kesmeniz gerektiğini düşünüyorum.
Kısacası, maksimum değer 65 bindir - böyle bir ızgara ayarlarsanız, manuel olarak buhar banyosu yapamazsınız.
https://www.mql5.com/en/articles/8385
iyi bir uygulama olduğu gerçeği değil)
Rusça'da geçiyorum
Bunu okudum))) hesaplamalarda çok fazla hata var ve ağ oldukça rastgele cevaplar veriyor
O zaman uchar kullanabilirsiniz, 1 bayttır.
Kısacası, maksimum değer 65 bindir - böyle bir ızgara ayarlarsanız, manuel olarak buhar banyosu yapamazsınız.
65535'lik bir marjinal boyuta sahipler, ancak koddaki değişkenleri etkileyemiyorum.
Ancak maksimum boyut hakkında - hayır, bu sonucu garanti etmez, çünkü veri şeridinde bir ayarlama ve yalancıların yanında bir geçiş olabilir.
Genel olarak, aralığı kapatan bölmenin uygunluğunu her zaman kontrol eden bir öğrenme algoritmasına sahip olmak güzel olurdu (A>10 && A<=15), aksi takdirde genellikle biraz rastgele olur - böyle bir zorunlu koşul yoktur, ancak bazen çoğaltılır.
Bunu okudum))) hesaplamalarda çok fazla hata var ve ağ oldukça rastgele cevaplar veriyor
Ağı kendiniz mi yazmak istiyorsunuz?
Buradaki sularda minimum kelime ve maksimum python kodu var, aynı zamanda İngilizce.
https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html
Ağı kendiniz mi yazmak istiyorsunuz?
Buradaki sularda minimum kelime ve maksimum python kodu var, aynı zamanda İngilizce.
https://datascience-enthusiast.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html
Evet kendim istiyorum) çünkü tüm yazılarda aktivasyon fonksiyonlarının örnekleri doğru düşünülmüyor) örneğin sigmoid her yerde 1/1 + exp (-x) olarak kabul ediliyor. Ve 1.0/1.0+exp(-x)'e ihtiyacınız var. Aynı şey yazılmış gibi görünüyor, ancak terminal farklı hesaplamalar veriyor) bakın, belki de aynı şekilde düşünüyorsunuz) dolayısıyla hatalar.