Xgboost 1 或 0 目标变量的成对排名

问题描述 投票:0回答:2

我有一个网页搜索数据集:

SearchId    WebpageId      Clicked
A           1              1
A           4              0
A           6              0

B           1              0
B           3              0
B           4              0
B           10             1

C           1              0
C           3              0
C           5              0
C           6              1
C           7              0
C           8              0
C           9              0

...

对于每次搜索,我知道显示的网页(但不知道它们显示的顺序),并且我知道是否单击了网页的链接。每次搜索只能点击一个网页。

这种情况下可以使用xgboost成对排名吗?怎么办?

如果没有,我还能用什么?

python xgboost ranking pairwise
2个回答
0
投票

pairwise 方法“可以判断给定的一对文档中哪个文档更好”:在我看来,您发布的数据集更适合逐点方法,这基本上是一个回归问题。

但是,考虑到您只能单击一个页面,我认为您可以将数据集转换为

SearchId    WebpageId_1   WebpageId_2     Labels^*
  A           1              4             GOOD
  A           4              6             SAME
  A           6              1             NOT_GOOD
 ...
 
 *^labels are according to the event of click on the first WebpageId.
    

运行算法(例如带有rank:pairwise的XGBoost),最后在列表中对结果进行排序,您可以从中为每个SearchID选择顶部网页(排序任务可能非常耗时且难以准确完成)。 对于不同的方法,您可以查看这篇文章关于成对排名和神经网络


0
投票

您可以使用二进制标签训练 XGBoost LTR 模型,文档也有一个相同的示例

https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#training-with-the-pairwise-objective

© www.soinside.com 2019 - 2024. All rights reserved.