Theo tôi biết, để đào tạo học cách xếp hạng các mô hình, bạn cần có ba điều trong bộ dữ liệu:
- nhãn hoặc liên quan
- nhóm hoặc id truy vấn
- tính năng vector
Ví dụ: bộ dữ liệu Microsoft Learning to Rank sử dụng định dạng này (nhãn, id nhóm và tính năng).
1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...
Tôi đang thử xgBoost sử dụng GBM để xếp hạng theo cặp. Họ có một ví dụ cho một nhiệm vụ xếp hạng sử dụng chương trình C ++ để tìm hiểu về bộ dữ liệu của Microsoft như trên.
Tuy nhiên, tôi đang sử dụng trình bao bọc Python của họ và dường như không thể tìm thấy nơi tôi có thể nhập id nhóm ( qid
ở trên). Tôi có thể đào tạo mô hình chỉ bằng các tính năng và điểm phù hợp nhưng tôi cảm thấy như mình đang thiếu thứ gì đó.
Đây là một kịch bản mẫu.
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]