Bu kaosun bir düzeni var mı? Hadi bulmaya çalışalım! Belirli bir örnek üzerinde makine öğrenimi.

 

Aslında, dosyayı bağlantıdan indirmenizi öneririm. Arşivde 3 adet csv dosyası var:

  1. train.csv - üzerinde eğitim yapmanız gereken örnek.
  2. test.csv - yardımcı örnek, train ile birleştirilmesi de dahil olmak üzere eğitim sırasında kullanılabilir.
  3. exam.csv - eğitime katılmayan bir örnek.

Numunenin kendisi tahmin edicilerle birlikte 5581 sütun içerir, hedef 5583 sütun "Target_100", 5581, 5582, 5584, 5585 sütunları yardımcıdır ve şunları içerir:

  1. 5581 sütun "Zaman" - sinyalin tarihi
  2. 5582 sütun "Target_P" - işlemin yönü "+1" - al / "-1" - sat
  3. 5584 "Target_100_Buy" sütunu - satın almadan elde edilen finansal sonuç
  4. 5585 sütun "Target_100_Sell" - satıştan elde edilen finansal sonuç.

Amaç, exam.csv örneğinde 3000'den fazla puan "kazanacak" bir model oluşturmaktır.

Çözüm, sınava göz atmadan, yani bu örnekteki verileri kullanmadan olmalıdır.

İlgiyi korumak için - böyle bir sonuca ulaşmayı sağlayan yöntem hakkında bilgi vermek arzu edilir.

Örnekler, hedef örneği değiştirmek de dahil olmak üzere istediğiniz şekilde dönüştürülebilir, ancak sınav örneğine saf bir uyum olmaması için dönüşümün doğasını açıklamalısınız.

 
Aleksey Vyazmikin:

Aslında, dosyayı bağlantıdan indirmenizi öneririm. Arşivin içinde 3 adet csv dosyası var:

  1. train.csv - üzerinde eğitim yapmanız gereken örnek.
  2. test.csv - yardımcı örnek, train ile birleştirme dahil olmak üzere eğitim sırasında kullanılabilir.
  3. exam.csv - eğitime hiçbir şekilde katılmayan bir örnek.

Örneklemin kendisi tahmin edicileri içeren 5581 sütun içerir, hedef 5583 sütun "Target_100", 5581, 5582, 5584, 5585 sütunları yardımcıdır ve şunları içerir:

  1. 5581 sütun "Zaman" - sinyalin tarihi
  2. 5582 sütun "Target_P" - işlemin yönü "+1" - al / "-1" - sat
  3. 5584 "Target_100_Buy" sütunu - satın almadan elde edilen finansal sonuç
  4. 5585 sütun "Target_100_Sell" - satıştan elde edilen finansal sonuç.

Amaç, exam.csv örneğinde 3000'den fazla puan "kazanacak" bir model oluşturmaktır.

Çözüm, sınava göz atmadan, yani bu örnekteki verileri kullanmadan olmalıdır.

İlgiyi korumak için - böyle bir sonuca ulaşmayı sağlayan yöntem hakkında bilgi vermek arzu edilir.

Örnekler, hedefi değiştirmek de dahil olmak üzere istediğiniz herhangi bir şekilde dönüştürülebilir, ancak dönüşümün özünü açıklamalısınız, böylece sınav örneğine saf bir uydurma değildir.

Elbette şu da var
 
spiderman8811 #:
Tabii ki var.

Bunu kanıtlamak ister misin?

 

CatBoost ile kutudan çıktığı haliyle, aşağıdaki ayarlarla - Seed brute force ile eğitmek bu olasılık dağılımını verir.

FOR %%a IN (*.) DO (                                                                                                                                                                                                                                                                            
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_8\result_4_%%a       --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 8         --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_16\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 16        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_24\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 24        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_32\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 32        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_40\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 40        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_48\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 48        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_56\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 56        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_64\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 64        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_72\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 72        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
catboost-1.0.6.exe fit   --learn-set train.csv   --test-set test.csv     --column-description %%a        --has-header    --delimiter ;   --model-format CatboostBinary,CPP       --train-dir ..\Rezultat\RS_80\result_4_%%a      --depth 6       --iterations 1000       --nan-mode Forbidden    --learning-rate 0.03    --rsm 1         --fold-permutation-block 1      --boosting-type Plain   --l2-leaf-reg 6         --loss-function Logloss         --use-best-model        --eval-metric Logloss   --custom-metric Logloss         --od-type Iter  --od-wait 100   --random-seed 80        --random-strength 1     --auto-class-weights SqrtBalanced       --sampling-frequency PerTreeLevel       --border-count 32       --feature-border-type Median            --bootstrap-type Bayesian       --bagging-temperature 1         --leaf-estimation-method Newton         --leaf-estimation-iterations 10                
)                                                                                                                                                                                                                                                                               

1. Örnekleme treni

2. Örnek test

3. Sınav örneği

Gördüğünüz gibi, model neredeyse her şeyi sıfır ile sınıflandırmayı tercih ediyor - böylece hata yapma şansı daha az oluyor.

 

Son 4 sütun

0 sınıfı ile görünüşe göre kayıp her iki durumda da olmalı mı? Yani her iki durumda da -0,0007. Ya da al|sat bahsi hala yapılırsa, doğru yönde bir kar elde edecek miyiz?

 
1/-1 yönü farklı bir mantıkla mı seçiliyor, yani MO yön seçimine dahil değil mi? İşlem yapmak/ yapmamak için sadece 0/1'i mi öğrenmemiz gerekiyor (yön katı bir şekilde seçildiğinde)?
 
elibrarius #:

Son 4 sütun

0 sınıfı ile görünüşe göre kayıp her iki durumda da olmalı mı? Yani her iki durumda da -0,0007. Ya da al|sat bahsi hala yapılırsa, doğru yönde bir kar elde edecek miyiz?

Sıfır not ile - işleme girmeyin.

Eskiden 3 hedef kullanıyordum - bu yüzden son iki sütunda bir yerine fin sonuçları var, ancak CatBoost ile iki hedefe geçmek zorunda kaldım.

elibrarius #:
1/-1 yönü farklı bir mantıkla seçilir, yani MO yön seçimine dahil değildir? Sadece 0/1 ticaret / ticaret yok (yön katı bir şekilde seçildiğinde) öğrenmek zorunda mısınız?

Evet, model yalnızca girilip girilmeyeceğine karar verir. Ancak, bu deney çerçevesinde üç hedefli bir model öğrenmek yasak değildir, bu amaçla hedefi giriş yönünü dikkate alarak dönüştürmek yeterlidir.

 
Aleksey Vyazmikin #:

Sınıf sıfır ise - işlemi girmeyin.

Daha önce 3 hedef kullanıyordum - bu yüzden son iki sütunda bir yerine finansal sonuç vardı, ancak CatBoost ile iki hedefe geçmek zorunda kaldım.

Evet, model sadece girip girmeyeceğine karar verir. Ancak, bu deney çerçevesinde modele üç hedefle öğretmek yasak değildir, bu amaçla hedefi giriş yönünü dikkate alarak dönüştürmek yeterlidir.

Yani 0 sınıfında (girmeyin) ticaretin doğru yönü seçilirse, kar elde edilecek mi, edilmeyecek mi?
 
Aleksey Vyazmikin #:

Sınıf sıfır ise - işlemi girmeyin.

Daha önce 3 hedef kullanıyordum - bu yüzden son iki sütunda bir yerine finansal sonuç vardı, ancak CatBoost ile iki hedefe geçmek zorunda kaldım.

Evet, model sadece girip girmeyeceğine karar verir. Ancak, bu deney çerçevesinde modele üç hedefle öğretmek yasak değildir, bu amaçla hedefi giriş yönünü dikkate alarak dönüştürmek yeterlidir.

Catbusta'nın çoklu sınıfı var, 3 sınıftan vazgeçmek garip

 
elibrarius #:
Yani 0 sınıfında (girmeyin) işlemin doğru yönü seçilecekse, o zaman kar olacak mı olmayacak mı?

Kar olmayacaktır (yeniden değerleme yaparsanız, sıfırda küçük bir kar yüzdesi olacaktır).

Hedefi doğru bir şekilde yeniden yapmak sadece "1" i "-1" ve "1" e bölerek mümkündür, aksi takdirde farklı bir stratejidir.

elibrarius #:

Catbusta'nın çoklu sınıfı var, 3 sınıfı terk etmeleri garip

Var, ancak MQL5'te entegrasyon yok.

Herhangi bir dile model boşaltma yok.

Muhtemelen, bir dll kütüphanesi eklemek mümkündür, ancak bunu kendi başıma çözemiyorum.

 
Aleksey Vyazmikin #:

Kâr olmayacaktır (yeniden değerleme yaparsanız, sıfırda küçük bir kâr yüzdesi olacaktır).

O zaman finansal sonuç sütunlarının pek bir anlamı kalmaz. Ayrıca 0 sınıfı tahmin hataları da olacaktır (0 yerine 1 tahmin edeceğiz). Ve hatanın fiyatı bilinmemektedir. Yani denge çizgisi inşa edilmeyecektir. Özellikle de 0 sınıfının %70'ine sahip olduğunuz için. Yani finansal sonucu bilinmeyen hataların %70'i.
3000 puanı unutabilirsiniz. Eğer olursa, güvenilmez olacaktır.

Yani sorunu çözmenin bir anlamı yok....
Neden: