Як підходять парні моделі ранжирування в xgBoost?


14

Наскільки я знаю, щоб навчити навчання класифікувати моделі, у наборі даних потрібно мати три речі:

  • етикетка або відповідність
  • група або ідентифікатор запиту
  • вектор функції

Наприклад, набір даних Microsoft Learning to Rank використовує цей формат (мітка, ідентифікатор групи та функції).

1 qid:10 1:0.031310 2:0.666667 ...
0 qid:10 1:0.078682 2:0.166667 ...

Я пробую xgBoost, який використовує GBM для парного ранжирування. Вони мають приклад для завдання ранжування, яке використовує програму C ++, щоб дізнатися про набір даних Microsoft, як вище.

Однак я використовую їх обгортку Python і, здається, не можу знайти місце, де я можу ввести ідентифікатор групи ( 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]

Я також стикаюся з цією проблемою, але який тип set_group я повинен передати функції? коли я створюю numpy або список, я отримую помилку на зразок цього: d: \ build \ xgboost \ xgboost-git \ dmlc-core \ include \ dmlc \ ./ logging.h: 235: [12:03:09] D: \ Збірка \ xgboost \ xgboost-git \ src \ c_api \ c_api.cc: 342: Не вдалося перевірити: (src.info.group_ptr.size ()) == (0) фрагмент не підтримує групову структуру @amyrit
user2404620

Відповіді:


9

Відповідно до документації XGBoost, XGboost очікує:

  • приклади однієї групи, щоб бути послідовними прикладами,
  • список із розміром кожної групи (який можна встановити set_groupметодом DMatrixв Python).

1
Дякую, схоже, API для складання моделі ( sklearn.py) трохи неповний для пакету Python.
tokestermw

4

set_groupдуже важливо для ранжирування, тому що лише оцінки в одній групі порівнянні. Ви можете сортувати дані за їх балами у власній групі.

Для легкого рейтингу ви можете використовувати мою xgboostExtension .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.