Sejauh yang saya tahu, untuk melatih pembelajaran membuat peringkat model, Anda perlu memiliki tiga hal dalam dataset:
- label atau relevansi
- grup atau id permintaan
- vektor fitur
Misalnya, dataset Microsoft Learning to Rank menggunakan format ini (label, id grup, dan fitur).
1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...
Saya mencoba xgBoost yang menggunakan GBM untuk melakukan pemeringkatan berpasangan. Mereka memiliki contoh untuk tugas peringkat yang menggunakan program C ++ untuk belajar pada dataset Microsoft seperti di atas.
Namun, saya menggunakan pembungkus Python dan sepertinya tidak dapat menemukan tempat saya dapat memasukkan id grup (di qid
atas). Saya dapat melatih model hanya dengan menggunakan fitur dan skor relevansi tetapi saya merasa seperti saya kehilangan sesuatu.
Berikut ini contoh skrip.
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]