对于Web数据的搜索引擎,排序是其核心问题。提升排序的准确度能够极大提升用户的搜索体验。在本次大赛中,主办方提供用于排序模型构建的数据,参赛选手基于给定的数据构建排序模型。希望通过本次大赛挖掘搜索引擎排序算法的人才,推动搜索引擎排序算法的发展。
排序是信息检索的核心技术:给定一个Query,系统能够基于文档和Query的相关性,将候选的文档做排序,展现给用户。本次比赛提供的数据集包含两部分:训练集和测试集。其中训练集包含相关度标签、queryid、文档id和各类特征数据,选手基于该数据集训练排序模型。测试集包含queryid、文档id和各类特征数据,选手基于测试集提供预测后的相关度得分。
比赛数据选取了生产系统中若干个query和文档,随机拆分为训练集和测试集。训练集和测试集的文件格式一致,不包含行头,列之间通过'\t'字符分割。
每一行都是一个query-文档对,各列的描述如下:
-
第1列:query和文档的相关度标记值,值越高,代表越相关
-
第2列:query id,数字类型,唯一标识一个query
-
第3列:文档ID, 数字类型,唯一标识一个文档
-
第4到365列:362个特征值,特征描述见赛事简介
数据集中索引地址和特征类别的对应关系如下。数据集中索引位置3到200的字段类型为NUMERICAL,索引位置201到364的字段类型为CATEGORY。
-
pointwise: LGBMRegressor + XGBRegressor
-
listwise: LGBMRanker + XGBRanker
-
stacking 融合
-
B榜线上结果: 0.445677
-
pip install pandas numpy lightgbm xgboost scikit-learn wget
-
Linux Ubuntu 16.04, 160GB内存,4*V100
.
├── data (数据目录)
│ └── download.py
├── src
│ ├── lgb.py (lgb回归模型)
│ ├── lgbranker.py (listwise模型)
│ ├── preprocess.py (数据预处理)
│ ├── stacking.py (模型融合)
│ ├── utils.py (工具类/方法)
│ ├── xgb.py (xgb回归模型)
│ └── xgbranker.py (listwise模型)
├── picture
├── run.sh (执行脚本)
└── README.md
bash run.sh
Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
Learning-to-rank with LightGBM (Code example in python)
Learning to Rank Explained (with Code)