0

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

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 成对排名?如何?

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

4

1 回答 1

0

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

但是,鉴于您只单击一个页面的限制,我认为您可以将数据集转换为

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.
    

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

于 2020-07-17T09:36:08.717 回答