Xgboost'taki olasılıklar nasıl tahmin edilir?


16

Aşağıdaki tahmin fonksiyonu -ve değerleri de vermektedir, bu yüzden olasılık olamaz.

param <- list(max.depth = 5, eta = 0.01,  objective="binary:logistic",subsample=0.9)
bst <- xgboost(param, data = x_mat, label = y_mat,nround = 3000)

pred_s <- predict(bst, x_mat_s2)

Google & denedim pred_s <- predict(bst, x_mat_s2,type="response") ama işe yaramadı.

Soru

Bunun yerine olasılıklar nasıl tahmin edilir?


Kullandığınız ayarlarla olasılıkları varsayılan olarak çıkarmıyor mu? Yani: pred_s'i incelediniz mi ve bunların olasılık olmadığından emin misiniz?
kpb

Hayır, negatif değerlere sahip. Olasılık 0 ile 1 arasında
değişmelidir

Hiçbir belirgin sorun görmüyorum. (Yine de, python sarıcısına daha aşinayım). Eklemekte denediniz outputmargin=Fiçin predictfonksiyonun? Bir şekilde outputmarginolarak ayarlanırsa T, değer, lojistik dönüşümden önceki değeri döndürür.
inversiyon

1
Python için, API'dan predict_probauygulamayı kopyalayabilirsiniz sklearn: github.com/dmlc/xgboost/blob/master/python-package/xgboost/…
Anton Tarasenko

Yanıtlar:


14

Ben biraz geciktim biliyorum ama gelen olasılıkları olsun xgboostsen belirtmelidirmulti:softmax hedef :

xgboost(param, data = x_mat, label = y_mat,nround = 3000, objective='multi:softprob')

Gönderen ?xgb.train :

multi: softprob softmax ile aynıdır, ancak ndata, nclass matrisine daha fazla yeniden şekillendirilebilen bir ndata * nclass vektörü üretir. Sonuç, her sınıfa ait her veri noktasının tahmini olasılıklarını içerir.


2
Teşekkürler. Bu kayıp fonksiyonu binary: logistic'den ikili sınıflandırmadan nasıl farklıdır?
GeorgeOfTheRF

3
Çok sınıflı bir durum için sadece lojistik fonksiyonun genelleştirilmesidir, önemli bir fark olmamalıdır.
cyberj0g

14

Bunun predict_probayerine kullanın predict. Hedefi olarak bırakabilirsiniz binary:logistic.


3
Bu R değil Python olsaydı, bu cevap mantıklı olabilir. Yanlış dil.
B_Miner

1
ayy! teşekkürler @B_Miner. Aynı hatayı yapacak ve python hakkında konuştuğumuzu düşünecek başkaları için yararlı olabileceğinden bu yanıtı
silmiyorum


4
xgboost bir predict_proba fonksiyonuna sahip değildir
Ashoka Lella


0

tahminden sonra

pred_s <- predict(bst, x_mat_s2)

olasılığı elde edebilirsin

pred_s$data

Bu bir ikili sınıflandırma ise pred_s$data prob.0, prob.1, yanıtı içerir.

Böylece prob.1 alabilirsiniz

pred_s$data$prob.1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.