Bildiğim kadarıyla, modelleri sıralamak için öğrenmeyi eğitmek için veri kümesinde üç şeye sahip olmanız gerekir:
- etiket veya alaka düzeyi
- grup veya sorgu kimliği
- özellik vektörü
Örneğin, Microsoft Öğrenme Sıralaması veri kümesi bu biçimi (etiket, grup kimliği ve özellikler) kullanır.
1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...
Ben ikili sıralaması yapmak için GBM kullanan xgBoost deniyorum. Yukarıdaki gibi Microsoft veri kümesinde öğrenmek için C ++ programını kullanan bir sıralama görevi için bir örnek var .
Ancak, kendi Python sarıcı kullanıyorum ve ( qid
yukarıda) grup kimliği girebilirsiniz nerede bulamıyorum görünmüyor . Modeli sadece özellikleri ve alaka düzeyi puanlarını kullanarak eğitebilirim ama bir şeyleri özlediğimi hissediyorum.
İşte örnek bir komut dosyası.
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]