【问题标题】:Understanding Groups in scikit-learn for XGBoost Ranking了解 scikit-learn 中用于 XGBoost 排名的组
【发布时间】:2021-07-28 15:21:25
【问题描述】:

当谈到 sklearn 数据准备和 XGBoost 回归参数中的组时,我觉得我真的错过了一些明显的东西。

我已经阅读了这个教程:https://medium.com/predictly-on-tech/learning-to-rank-using-xgboost-83de0166229d

以及 XGBRanker 文档。

究竟什么是组?它是数据集的任意块吗?它提到组对于确保您在教程中具有“数据集中的一列,告诉我们应该将哪些数据点与什么进行比较”很重要,但我的理解是 sklearn 的 train_test_split 保留了训练集和测试集之间的行跨两个功能(X) 和标签 (y)。

我的代码使用 train_test_split() 就像您的标准数据准备过程用于分类一样,即:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=X[<label column name>].values)

要添加组,我需要进行哪些更改?它提到我也可以只使用查询 ID,我是否应该在拆分前向数据添加一个随机生成的查询 ID 的列?

【问题讨论】:

    标签: python scikit-learn xgboost ranking


    【解决方案1】:

    在学习排名中,您只关心每个组的排名。这通常在搜索结果的上下文中进行描述:组是给定查询的匹配项。在您链接的文章中,一个群体是一个特定的种族。

    如果您不知道自己的组是什么,您可能不会处于学习排名的情况,也许更直接的分类或回归会更适合。

    【讨论】:

    • 谢谢,所以我正在尝试执行真正的序数回归任务,但是我被告知要查看排名。这有点令人困惑,例如维基百科说“序数回归也可以称为排名学习”,但这听起来与我读过的其他内容以及您的回复不同。
    猜你喜欢
    • 2015-02-12
    • 2018-03-06
    • 2014-08-14
    • 2016-09-10
    • 2017-03-26
    • 2017-12-22
    • 2015-03-24
    • 2015-11-28
    • 2017-07-18
    相关资源
    最近更新 更多