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

 
Aleksey Nikolayev #:

Aleksey Vyazmikin tarafından desteklenene benzer bir yaklaşıma sahip birmakale. Bir sınıflandırma ağacı yerine, her bir yaprağın bir olayın farklı bir olasılığına (örneğin, yangın sıklığı) karşılık geldiği bir "fark ağacı" inşa edilir. Özünde bu, kümelemenin bir çeşididir.

Hemen belirtmeliyim ki, makaleyi ayrıntılı olarak anlatmaya hazır değilim, zira sadece şöyle bir göz gezdirdim.

Makale için teşekkürler!

Tercüme ettim, okudum.

Formüller şeklindeki algoritmayı daha anlaşılır bir dile çevirmeme yardımcı olabilir misiniz? Ve bu ağaç oluşturma yönteminin kodunu yazmaya çalışacağım.

 
Maxim Dmitrievsky #:
Özellikle sizin sorunuza cevap verdim - istediğiniz herhangi bir soruya. Bu sizin bileceğiniz iş. Bana neden sorulduğu bile garip. İlgilendiğim konuyla hiçbir ilgisi yoktu.

Hmm, burada A-B testinin bir evrimi olan yükselme modelleri hakkında rapor vermiştiniz. Yani, yöntem, hedef yeni etkiden değiştiğinde etkiyi tahmin etmek için tasarlanmıştır. Bu nedenle, aranan tahmin edicinin etkisinin başlangıç noktasının belirlenmesi gerektiği benim için açıktır. İşte bu konudaki düşüncelerinizi duymak istedim. Neden önemli olmadığını düşündüğünüz de dahil olmak üzere.

 
Maxim Dmitrievsky #:
Neden başyapıtlara çöp diyorsun? Tıpkı Alexei gibi, size üstünlükleriniz de dahil olmak üzere ücretsiz teklif ettim. Ama kodobazu'ya gönderildim. Ve şimdi o, şikayetçi, etrafta koşturup bana isimler takıyor.

Şikayetçi kim? Kim bana isim takıyor?

Eğer bensem, suçlamalar temelsiz. Enerjimi, sadece hedeflerime ulaşmak için gerekliyse, adil bir şekilde istenmeyenleri ortadan kaldırmak için harcayacağım.

Hızlı olduğu için doğrulama için öngörücü değerleri vermeyi teklif ettim.

Daha önce ZZ'den gelen veriler üzerinde çok sayıda tahmin edici kullandığımı yazmıştım, hatta bunun özünü bile tanımlamıştım. Bunu python'da yeniden yazmak verimsizdir.

 
Aleksey Vyazmikin #:

Makale için teşekkürler!

Tercüme ettim, okudum.

Formüller şeklindeki algoritmayı daha anlaşılır bir dile çevirmeme yardımcı olabilir misiniz? Ve bu ağaç oluşturma yönteminin kodunu yazmaya çalışacağım.

Makalenin 10. sayfasında, sözde kod şeklinde bir uygulama bulunmaktadır. Sondan bir önceki sayfada, ekte, R dilindeki uygulamaya ve makalede kullanılan verilere referanslar var.

Genel anlamda, mql5'te karar ağaçlarını nasıl uyguluyorsunuz? Diziler veya şablonlar aracılığıyla mı?

 
Aleksey Vyazmikin #:

Hmm, burada A-B testinin bir evrimi olan yükselme modelleri hakkında rapor vermiştiniz. Yani, yöntem, hedef yeni etkiden değiştiğinde etkiyi tahmin etmek için tasarlanmıştır. Bu nedenle, aranan tahmin edicinin etkisinin başlangıç noktasının belirlenmesi gerektiği benim için açıktır. İşte bu konudaki düşüncelerinizi duymak istedim. Neden önemsiz olduğunu düşündüğünüz de dahil olmak üzere.

Rastgele deneylerde örnekler rastgele belirlenir. Kitabın en başında.

Rastgele işlemlerin açılması ve kontrol grubunda buna karşılık gelen sonuç var ve başka bir alt örneklem olan test grubu üzerine inşa edilmiş bir model var. Böyle bir model kullanmanın etkisini, kontrol grubu için pozitif olup olmadığını belirlememiz gerekir. Eğer öyleyse, modeli önerilen yollardan biriyle geliştirin.

Sadece yeni veriler üzerinde test yaparak etkiyi belirleyemezsiniz çünkü verilerde genellikle yanlılık vardır. Bu nedenle formül ATE + Bias olmak üzere iki toplamdan oluşur. Daha da ileri gidebilir ve CATE'yi, yani vaka bazında tanımlayabilir ve yalnızca daha iyi muamele görenleri seçebilir, geri kalanları ticarette göz ardı edebilir / atlayabilirsiniz.

Sanych'in terimleriyle, durağan olmayanın içinde durağan olanı aramak.
 
Aleksey Vyazmikin #:

Şikayet eden kim? Kim isim takıyor?

Eğer konu benimle ilgiliyse, suçlamalar temelsizdir. Enerjimi, sadece hedeflerime ulaşmak için gerekliyse, adil bir şekilde istenmeyenleri ortadan kaldırmak için harcayacağım.

Hızlı olduğu için doğrulama için tahmin değerlerini vermeyi teklif ettim.

Daha önce ZZ'den gelen veriler üzerinde çok sayıda tahminci kullandığımı yazmıştım, hatta bunun özünü anlatmıştım. Bunu python'a yeniden yazmak ters etki yaratır.

Şikayet ediyorsun ve bana çocuk gibi isimler takıyorsun
Ve az miktarda her şey üretken mi?)
 
def R_learner():
    dataset = get_prices()
    dataset = labeling(dataset)

    data = dataset[dataset.index < FORWARD].copy()
    data['treatment'] = data['labels'].apply(lambda x: np.random.choice([0, 1], p=[0.2, 0.8])) // случайно выбрал элементы для лечения


    X = data[data['treatment'] == 1]
    X = X[X.columns[1:-2]]
    X_t = data[data['treatment'] == 0]
    X_t = X_t[X_t.columns[1:-2]]

    y = data[data['treatment'] == 1]
    y = y[y.columns[-2]]
    y_t = data[data['treatment'] == 0]
    y_t = y_t[y_t.columns[-2]]

    treat_m = CatBoostClassifier(iterations=1000,
                                depth=6,
                                custom_loss=['Accuracy'],
                                eval_metric='Accuracy',
                                verbose=False,
                                use_best_model=True,
                                task_type='CPU')
    treat_m.fit(X, y, eval_set=(X_t, y_t),
                    early_stopping_rounds=50, plot=False) // обучил модель на этих примерах, остальные попали в валидацию

    data['y_t'] = [x[0] < 0.5 for x in treat_m.predict_proba(data[data.columns[1:-2]])] // теперь метки классов - это предсказания обученной модели
    data['y_t'] = data['y_t'].astype(float)
    
    # perform residualisation
    debias_m = CatBoostClassifier(iterations = 5,
                                    max_depth = 1,
                                    early_stopping_rounds = 2,
                                    verbose = False) // эта модель определяет смещение в оценках тритмента
    denoise_m = CatBoostClassifier(iterations = 5,
                                    max_depth = 1,
                                    early_stopping_rounds = 2,
                                    verbose = False) // эта модель определяет смещение в оценках целевой

    t_diff = data['treatment'] - cross_val_predict(debias_m, 
                                                data[data.columns[1:-3]], 
                                                data[data.columns[-2]], 
                                                method='predict_proba', cv=5)[:, 0] // определяем тритмент эффект

    y_diff =  data['y_t'] - cross_val_predict(denoise_m, 
                                                data[data.columns[1:-3]], 
                                                data[data.columns[-1]], 
                                                method='predict_proba', cv=5)[:, 0] // определяем байес

    # create the weights
    w = t_diff ** 2 // новые веса для модели
    # create the transformed target
    y_debias = (y_diff / t_diff).apply(lambda x: 1 if x > 0.0 else 0) // новые метки без смещения

    data['weights'] = w
    data['y_debias'] = y_debias
    data = data.drop(['labels', 'treatment', 'y_t'], axis=1)


    X = data[data.columns[1:-2]]
    y = data[data.columns[-2:]]

    train_X, test_X, train_y, test_y = train_test_split(
            X, y, train_size=0.5, test_size=0.5, shuffle=True)

    train_data = Pool(
        data=train_X,
        label=train_y[train_y.columns[1]],
        weight=train_y[train_y.columns[0]] // добавляем веса к обучению
    )

    eval_data = Pool(
        data=test_X,
        label=test_y[test_y.columns[1]],
        weight=test_y[test_y.columns[0]]
    )

    # learn final model with train and validation subsets
    model = CatBoostClassifier(iterations=1000,
                                depth=6,
                                learning_rate=0.1,
                                custom_loss=['Accuracy'],
                                eval_metric='Accuracy',
                                verbose=False,
                                use_best_model=True,
                                task_type='CPU')

    model.fit(X= train_data, eval_set=eval_data,
                early_stopping_rounds=50, plot=False) // учим новую модель с обесшумленными метками и дополнительными весами

    return model

Bu yaklaşım yeni veriler üzerinde iyi çalışmıyor. Görünüşe göre, neyin tritent olması gerektiğini ve neyle ilişkili olduğunu tanımlama konusunda kötü bir iş çıkarmışım :)

R-learner fikri buradan alınmıştır
 
Maxim Dmitrievsky #:

Bu yaklaşım yeni veriler üzerinde iyi çalışmıyor. Görünüşe göre, neyin tritent olması gerektiğini ve neyle ilişkili olduğunu tanımlama konusunda kötü bir iş çıkarmışım :)

R-learner fikri buradan alınmıştır

Makale, girdiler - arz-talep esnekliği - hakkında çok önemli bilgiler kullanmaktadır. Bu nedenle aşırı uydurmanın ısrarlı kokusu.

Elimizde bu tür temel fiyat teklifi verileri yok, dahası esneklik muhtemelen işe yaramıyor: bir varlığın fiyatı sıfırdan çok yükseğe kadar değişebilir.

Gönderdiğiniz kodun yanı sıra nedensel yaklaşımın kendisi de ancak MKL-5 test cihazında çalıştırıldıktan sonra ve mutlaka bir ileriye dönük olarak değerli olacaktır.

 

Esnekliğe göre ayarlanmış olsa bile, yeni verilerde hiç çalışmadı. Yine de traine üzerinde iyi kaldı.

Sebepler belirlenmeye çalışılıyor...

Çünkü işe yaramış olabilir ama sizin istediğiniz şekilde değil.


 
Maxim Dmitrievsky #:

Esnekliğe göre ayarlanmış olsa bile, yeni verilerde hiç çalışmadı. Yine de trende iyi kaldı.

Sebepler belirleniyor...

Çünkü işe yaramış olabilir, ama sizin istediğiniz şekilde değil.


Grafikler, hava sıcaklığı ve --> dondurma satın almak gibi net bir neden-sonuç ilişkisi göstermiyor.