Xgboost में संभावनाओं की भविष्यवाणी कैसे करें?


16

नीचे की भविष्यवाणी फ़ंक्शन -ve मान दे रही है और साथ ही यह संभावनाएं नहीं हो सकती हैं।

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 किया और कोशिश की pred_s <- predict(bst, x_mat_s2,type="response") लेकिन यह काम नहीं किया।

सवाल

इसके बजाय संभावनाओं की भविष्यवाणी कैसे करें?


क्या यह आपके द्वारा उपयोग की गई सेटिंग्स के साथ डिफ़ॉल्ट रूप से संभाव्यता को आउटपुट नहीं करता है? मेरा मतलब है: क्या आपने pred_s की जांच की है और आप निश्चित हैं कि वे संभावित नहीं हैं?
kpb

इसका नकारात्मक मान नहीं है। संभाव्यता 0 से 1. के बीच भिन्न होनी चाहिए
जॉर्जऑफTheRF

मुझे कोई स्पष्ट मुद्दे नहीं दिख रहे हैं। (हालांकि, मैं अजगर रैपर से अधिक परिचित हूं)। क्या आपने फ़ंक्शन outputmargin=Fको जोड़ने का प्रयास किया predictहै? यदि किसी तरह outputmarginसे सेट किया गया है T, तो यह लॉजिस्टिक परिवर्तन से पहले मूल्य वापस कर देगा।
उलटा

1
पायथन के लिए, आप एपीआई predict_probaसे कार्यान्वयन को कॉपी कर सकते हैं sklearn: github.com/dmlc/xgboost/blob/master/python-package/xgboost/…
एंटोन तारासेंको

जवाबों:


14

मुझे पता है कि मुझे थोड़ी देर हो गई है, लेकिन xgboostआप से संभावनाएं प्राप्त करने के लिए multi:softmaxइस तरह से उद्देश्य निर्दिष्ट करना चाहिए :

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

से ?xgb.train:

बहु: सॉफ्टप्रब, सॉफ्टमैक्स के समान, लेकिन ndata * nclass के वेक्टर का उत्पादन करता है, जिसे ndata, nclass मैट्रिक्स में और फिर से आकार दिया जा सकता है। परिणाम में प्रत्येक वर्ग से संबंधित प्रत्येक डेटा बिंदु की अनुमानित संभावनाएं होती हैं।


2
धन्यवाद। यह नुकसान बाइनरी से कैसे अलग है: बाइनरी वर्गीकरण के लिए लॉजिस्टिक?
जॉर्जऑफTheRF

3
यह बहु-श्रेणी के मामले के लिए लॉजिस्टिक फ़ंक्शन का सामान्यीकरण है, कोई महत्वपूर्ण अंतर नहीं होना चाहिए।
साइबरबग ०१२

14

के predict_probaबजाय बस का उपयोग करें predict। आप उद्देश्य को छोड़ सकते हैं binary:logistic


3
यदि यह पायथन और आर नहीं थे, तो यह उत्तर समझदार हो सकता है। गलत भाषा।
B_Miner

1
उफ़! धन्यवाद @B_Miner मैं इस उत्तर को नहीं हटा रहा हूं क्योंकि यह दूसरों के लिए मददगार हो सकता है जो समान गलती करेगा और हमें लगता है कि हम अजगर के बारे में बात कर रहे हैं ..
ihadanny

मेरे लिए यह ट्रिक datascience.stackexchange.com/questions/14527/…
जॉर्ज

4
xgboost में एक भविष्यवाणी_प्रक्रिया नहीं है
अशोका लैला

1
XGBoost क्लासिफायर में एक प्रीडिफ़_प्रब्बा विकल्प है xgboost.readthedocs.io/en/latest/python/python_api.html
पॉल

0

भविष्यवाणी के बाद

pred_s <- predict(bst, x_mat_s2)

आप संभावना प्राप्त कर सकते हैं

pred_s$data

यदि यह एक द्विआधारी वर्गीकरण है तो pred_s$dataइसमें prob.0, prob.1, प्रतिक्रिया शामिल है।

तो आप prob.1 प्राप्त कर सकते हैं

pred_s$data$prob.1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.