Làm thế nào phù hợp với mô hình xếp hạng cặp trong xgBoost?


14

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]

Tôi cũng gặp vấn đề này, nhưng tôi nên chuyển loại set_group nào cho hàm? Khi tôi xây dựng một danh sách hoặc danh sách, tôi gặp lỗi như thế này: d: \ build \ xgboost \ xgboost-git \ dmlc-core \ bao gồm \ dmlc \ ./ log.h: 235: [12:03:09] D: \ Build \ xgboost \ xgboost-git \ src \ c_api \ c_api.cc: 342: Kiểm tra thất bại: (src.info.group_ptr.size ()) == (0) lát không hỗ trợ cấu trúc nhóm @amyrit
user2404620

Câu trả lời:


9

Theo tài liệu của XGBoost, XGboost mong đợi:

  • các ví dụ của cùng một nhóm là các ví dụ liên tiếp,
  • một danh sách với kích thước của mỗi nhóm (mà bạn có thể đặt bằng set_groupphương thức DMatrixtrong Python).

1
Cảm ơn, có vẻ như API để xây dựng mô hình ( sklearn.py) không hoàn chỉnh đối với gói Python.
tokestermw

4

set_grouplà rất quan trọng để xếp hạng, bởi vì chỉ có điểm số trong một nhóm là tương đương. Bạn có thể sắp xếp dữ liệu theo điểm số của họ trong nhóm riêng của họ.

Để xếp hạng dễ dàng, bạn có thể sử dụng xgboostExtension của tôi .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.