जहां तक मुझे पता है, रैंक मॉडल्स को सीखने के लिए, आपको डेटासेट में तीन चीजें होनी चाहिए:
- लेबल या प्रासंगिकता
- समूह या क्वेरी आईडी
- सुविधा वेक्टर
उदाहरण के लिए, डेटा को रैंक करने वाले 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]