XgBoost में जोड़ीदार रैंकिंग मॉडल कैसे फिट होते हैं?


14

जहां तक ​​मुझे पता है, रैंक मॉडल्स को सीखने के लिए, आपको डेटासेट में तीन चीजें होनी चाहिए:

  • लेबल या प्रासंगिकता
  • समूह या क्वेरी आईडी
  • सुविधा वेक्टर

उदाहरण के लिए, डेटा को रैंक करने वाले Microsoft लर्निंग इस प्रारूप (लेबल, समूह आईडी और सुविधाओं) का उपयोग करता है।

1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...

मैं xgBoost की कोशिश कर रहा हूं जो GBMs का उपयोग जोड़ीदार रैंकिंग करने के लिए करता है। उनके पास रैंकिंग कार्य के लिए एक उदाहरण है जो ऊपर दिए गए Microsoft डेटासेट पर सीखने के लिए C ++ प्रोग्राम का उपयोग करता है।

हालाँकि, मैं उनके पायथन रैपर का उपयोग कर रहा हूं और यह नहीं जान सकता कि मैं ग्रुप आईडी ( qidऊपर) इनपुट कर सकता हूं । मैं सिर्फ सुविधाओं और प्रासंगिकता स्कोर का उपयोग करके मॉडल को प्रशिक्षित कर सकता हूं लेकिन मुझे लगता है कि मैं कुछ याद कर रहा हूं।

यहाँ एक नमूना स्क्रिप्ट है।

gbm = XGBRegressor(objective="rank:pairwise")

X =  np.random.normal(0, 1, 1000).reshape(100, 10)
y = np.random.randint(0, 5, 100)

gbm.fit(X, y) ### --- no group id needed???

print gbm.predict(X)

# should be in reverse order of relevance score
print y[gbm.predict_proba(X)[:, 1].argsort()][::-1]

मुझे भी इस समस्या का सामना करना पड़ता है, लेकिन मुझे किस प्रकार के सेट_ग्रेग को फ़ंक्शन में जाना चाहिए? जब मैं एक संख्यात्मक या सूची का निर्माण करता हूं तो मुझे इस तरह की त्रुटि मिलती है: d: \ build \ xgboost \ xgboost-git \ dmlc-core \ में \ dmlc \ _/ logging.h शामिल हैं: 235: [12:09:09] D: \ बिल्ड \ xgboost \ xgboost-git \ src \ c_api \ c_api.cc: 342: जाँच विफल: (src.info.group_ptr.size ()) == (0) स्लाइस समूह संरचना का समर्थन नहीं करता है @amyrit
user2404620

जवाबों:


9

XGBoost प्रलेखन के अनुसार , XGboost को उम्मीद है:

  • एक ही समूह के उदाहरण लगातार उदाहरण हैं,
  • प्रत्येक समूह के आकार के साथ एक सूची (जिसे आप पायथन set_groupकी विधि के साथ सेट कर सकते हैं DMatrix)।

1
धन्यवाद, मॉडल निर्माण के लिए एपीआई जैसा दिखता है ( sklearn.py) पायथन पैकेज के लिए थोड़ा अधूरा है।
tokestermw

4

set_groupरैंकिंग के लिए बहुत महत्वपूर्ण है, क्योंकि केवल एक समूह में स्कोर तुलनीय हैं। आप अपने समूह में उनके स्कोर के अनुसार डेटा सॉर्ट कर सकते हैं।

आसान रैंकिंग के लिए, आप मेरे xgboostExtension का उपयोग कर सकते हैं ।

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