Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 2974
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
Zaten boş olacak.
Evet, eğer istemiyorsan.
Hedefleme ile makine öğreniminin işe yaramaması ve tek seferlik öğrenmenin işe yaramaması üzücü....
yanlılığı azaltmak için simetrik özellikleri kaldırın.
Örneğin, artışları mutlak artışlarla (volatilite) değiştirin.
bazen yardımcı olur
önyargıyı azaltmak için simetrik özellikleri kaldırın
örn. artışları mutlak artışlarla değiştirin (oynaklık)
Bazen yardımcı olur.
Benim fikrim, bir dizi istatistiksel özelliğe göre kararlı kuantum segmentlerini seçecek bir model elde etmektir. Herkes bu projeye katılabilir.
Neden bu kuantumlara bu kadar takıntılısın?...?
Bunlarla ilgili entelektüel bir şey yok. Basitçe, örneğin 10000 satırı 100 parçaya bölün, yani sıralayın ve en alttan 100 satır sayın, eğer aşağıdakiler yüzüncü satırla çakışırsa (yani tekrarlar), o zaman hepsini ilk parçaya yönlendiririz. Yinelemeler bittiğinde ikinci kuantumdaki satırları yazmaya başlarız - sonraki 100 + varsa yinelemeler. Ve satırlarımız bitene kadar böyle devam eder.
1 ağaç bile bu kuantum parçalarından (yinelenenlerle birlikte sadece 100 sıralanmış dizge) çok daha fazla yararlı bilgi içerir (çünkü veriler üzerinde eğitilmiştir).
Neden bu quantlara bu kadar takılıyorsunuz? ....
Bunların hiçbirinde entelektüel bir şey yok. Örneğin 10000 satırı 100 parçaya bölün, yani sıralayın ve en alttan 100 satır sayın, eğer sonrakiler yüzüncü satıra denk geliyorsa (yani tekrarlar), o zaman hepsini ilk parçaya yönlendiririz. Yinelemeler bittiğinde ikinci kuantumdaki satırları yazmaya başlarız - sonraki 100 + varsa yinelemeler. Ve satırlarımız bitene kadar böyle devam eder.
1 ağaç bile bu kuantum segmentlerinden (yinelenenlerle birlikte sadece 100 sıralanmış satır) çok daha fazla yararlı bilgi içerir (çünkü veriler üzerinde eğitilmiştir).
Kuantum segmentleri CatBoost modelinin inşa edildiği tuğlalardır. Başlangıçta, anladığım kadarıyla, bu şekilde bellek tasarrufu ve genel olarak hesaplamaların hızlandırılması sorunu çözüldü. Bir yan kazanç, tahmin edici göstergelerin kombinasyonlarının varyantlarının azaltılmasıdır, çoklu doğrusallığın azaltılmasına yönelik bir adım atılır ve bu da genel olarak eğitimin hızına ve kalitesine katkıda bulunur. Ayrıca, kısmen, veri kayması sorunu da çözülmüş olur.
Başka bir şey için de bir teşvik görüyorum - kuantum segment verilerinde olasılıksal tahmin potansiyelini keşfetmek. Önerdiğiniz niceleme yöntemini ele alırsak (aslında sürecin amacının homojen grupları elemek olduğunu hayal etmek daha iyidir - analog - kümeleme) ve verileri örnek sayısına göre 20 eşit kuantum segmentine bölersek, her kuantum segmentinde yalnızca %5 veri kaldığı ortaya çıkar. CatBoost varsayılan olarak 254 ayırıcı - 255 segment oluşturur. Daha sonra bu segmentlerden ağaçlar oluşturulur. Tüm kuantum segmentlerinin eşit derecede faydalı olduğu varsayılır ve bir karar ağacı oluşturma yöntemiyle grup alt gruplara bölünerek aralarındaki etkileşim belirlenmelidir. Bölümleme hem kök hem de diğer tahmin ediciler tarafından yapılır. Bir ağaç alsak bile, "1" pozitif sınıfının orijinal örneklerinden kaç tanesi 6 bölünmeden sonra nihai listede kalacaktır? Bölme seçiminin kümülatif kuantum bölme sayısı metriklerine dayandığını dikkate almalıyız. Ağaç oluşturma yönteminin kendisi dikkate alındığında, tahmin edicinin kuantum segmentlerine bölünmesi ne kadar kalitatif yapılırsa, yaprakta aynı doğruluğu elde etmek için o kadar az bölünmeye ihtiyaç duyulacağı açıktır. Her bölünmenin bir hipotez olduğunu ve tüm hipotezlerin doğru olamayacağını not ediyorum. Dolayısıyla, bölme işlemini bir kuantum segmentinin sınıflardan birine daha fazla ait olma potansiyelini dikkate alarak yaparsak, benzer doğruluğu elde etmek için bölme sayısını azaltırız ve dolayısıyla potansiyel olarak yanlış hipotezlerin (bölmelerin) sayısını azaltırız. Buna ek olarak, tahmin ediciyi ikisi sınıf üyeliği ve biri belirsizlik için olmak üzere küresel 3 bölgeye hemen ayırabilirsek, modeller ortalama olarak daha küçük ve daha iyi istatistiksel performansa sahip olacaktır - ayrıca daha sağlam olmasını bekliyorum.
Örneğin, tahmin edicinin RSI osilatörü olduğunu düşünelim - katılımcıların önemli eylemleri 70, 50, 30 seviyelerinde gerçekleşir - ötesindeki her şey - diyelim ki, piyasa katılımcılarının karar vermesini etkilemez. O halde, bu 3 değeri nüfusun geri kalanından ayıracak şekilde bir kuantum tablosu oluşturmak mantıklıdır. Aksi takdirde, bölünmelerden biri rastgele olarak sınıf üyeliğinin kuantum segmentinde daha fazla örneğe sahip olacak ve yanlış bir hipotez üzerinde yanlış bir kural elde edeceksiniz.
Nicelleştirilmiş tahmin edici skorları içeren bir çubuk grafik çizebilir ve her sütun için sınıf üyeliği "1" olasılıkları eğrisi çizebilirsiniz. Eğrinin düz bir çizgi olma ihtimali daha yüksekse, böyle bir tahmin ediciyi tercih ederim. Bana göre iyi bir tahmin edicinin ya eğimli bir çizgisi ya da bazı sütunlarda sivri uçları olacaktır.
Nicelleştirme yoluyla fiyat hareketi olasılığını etkileyen ayrı olaylar aradığımı söyleyebiliriz.
Kural sadece bölecek
Bir nicelik tablosu oluşturmanın farklı yolları vardır. Sanırım bunu, örneklerin yüzdesine ilişkin sayfada verilen kısıtlamalarla tek bir tahminci üzerinde ağaçlar oluşturan kullanıma hazır bir paket aracılığıyla yapabilirsiniz. Bu paketin ne olduğunu ve verileri ihtiyacım olan formatta nasıl elde edeceğimi bilmiyorum.
Önemli olan sadece bölümleme değil, bu kuantum bölünmeyi değerlendirmek için yeni verilerde sınıf üyeliğinin korunma olasılığını artıracak kriterler bulmaktır.
Bunu neden yapıyorum - çünkü bu niteliksel bir model oluşturmanın anahtarı.
Neden uzun zaman alıyor - çok sayıda deney ve test senaryosu. OpenCL hakkında biraz bilgim var ve kod şu anda kısmen bir ekran kartında sayılıyor - zaman alıyor - birçok şeyi incelemem gerekiyor.
Önemli olan sadece bölümleme değil, sınıf üyeliğinin yeni verilerde devam etme olasılığını artıracak bu kuantum kesimini değerlendirmek için kriterler bulmaktır.
Aynı catbuster'daki koda hiç baktınız mı? Onu kullanıyorsun. Üçüncü parti paketleri kullanmıyor. Ama bu o kadar küçük bir fonksiyon ki (anlattığımdan daha da basit, ayırma noktasını yinelenen sayısına göre kaydırmıyor).
Karşıma çıkan şey hakkında yorumlar yazdım. Girdi sıralanmış bir sütundur.
Gördüğünüz gibi her şey çok basit ve burada entelektüel bir şey yok - sadece örneğin 100 satırı sayın ve hepsi bu.
Biraz daha karmaşık varyantlar yinelenenlerin sayısına geçebilir, ayrıca kuantum boyutunu optimize edebilirsiniz (örneğin, 10000 satırdan 9000 yinelenen varsa, basit işlev 11 kuantum olacaktır: İlk 1000 satırdan 10 ve 11. satırda kalan 9000 kopya, ya da ilk 1000 satırı 9000 kopya ile 99 kuanta + 1 kuantuma bölebilirsiniz).
Ancak bunların da entelektüel hiçbir yanı yoktur - gerekli sayıda dizginin aynı basit sayımı temeldir.
Orijinal (daha karmaşık varyantları vardır) https://github.com/catboost/catboost/blob/3cde523d326e08b32caf1b8b138c2c5303dc52e5/library/cpp/grid_creator/binarization.cpp
Not: Bir sonraki kuantumun tam olarak 100 dizeye değil de 315 ya da 88 ya da 4121 dizeye sahip olmasının ana nedeni süper zor bir formülde değil (dizelerin tahmin gücüne göre birleştirildiği, bu kuantum segmentinin değerlendirme kriterlerini aramak için kullanmak istediğiniz), sadece kopya sayısındadır.Bu sayfadaki fonksiyonları bir hafta boyunca çalışın ve birkaç yıl kazanın.
Aynı catbusters'daki koda hiç baktınız mı? Onu kullanıyorsunuz. Üçüncü taraf paketleri kullanmıyor. Ama bu o kadar küçük bir fonksiyon ki (anlattığımdan daha da basit, ayırma noktasını yinelenen sayısına göre kaydırmıyor).
Karşıma çıkan şey hakkında yorum yazdım. Girdi sıralanmış bir sütundur.
Tabii ki baktım. Ayrıca, MQL5'teki tüm miktar belirleme yöntemlerini yeniden üretme çalışması için ödeme yapmaya hazırım. Şimdiye kadarki girişimler başarısız oldu, denemek ister misiniz?
Gördüğünüz gibi, her şey çok basit ve burada entelektüel bir şey yok - sadece örneğin 100 satır sayın ve hepsi bu kadar.
En basit yöntemi verdiniz - evet, zor değil.
Ayrıca, ben ustaca sayısallaştırma yöntemleri olduğunu ya da buna benzer bir şey yazdım mı? Bu benim yazdıklarımla nasıl çelişiyor?