刷题链接 题目大致需求
给定搜索词与候选商品,为每个 query 下的商品输出排序分数,用于提升 NDCG@10。输入为不含 relevance 的 CSV,含查询、商品特征及 row_id;输出至少包含 row_id 和 rank_score,必须逐行对齐。训练数据约 43 万行,验证约 8 千行,relevance 为 0-3 有序类别。可使用 xgboost、lightgbm、catboost 等库,需在 30 秒内完成训练与预测,固定随机种子,禁止联网。分数越大同一 query 内排序越靠前。
做题步骤安排
先读题,看清 schema。 别急着建模。读 data/SCHEMA.md,把字段分为 query 侧、商品侧、统计侧,确认 query_id 分组和 relevance 标签。用 pandas 在本地统计缺失和分布,把摘要发给 AI,避免大文件进入上下文。
搭基线,跑通链路。 先写最简单的 rank_score,比如商品历史平均 relevance 或 query 内热度,确保 main.py 输入输出格式、row_id 对齐正确。运行样例脚本,自己实现或调用 sklearn.metrics.ndcg_score 在 valid 上算分,记录 baseline。
做特征,抓匹配信号。 排序核心是 query 与商品的匹配度。构造:文本特征(query 与 title 的长度差、公共词数、关键词命中)、数值归一化、商品类目编码。再基于 train 统计商品历史点击率、平均 relevance、出现次数作为先验,缺失值用全局均值填充。注意:统计只能来自训练集,避免未来信息。
选模型,用 LambdaRank。 优先用 LightGBM 的 objective='lambdarank',传入 query 分组,直接优化排序。若效果不稳,可退化为回归(拟合 relevance)或分类(预测 0-3 概率)取分数。固定随机种子,迭代 200-400 轮,树深度 5-6,控制训练时间。也可用 XGBoost 的 rank 目标做对比。
验证与自测。 在 valid.csv 上按 query 计算 NDCG@10,与 baseline 对比。若提升不大,检查排序 group 是否正确(lambdarank 需要 group 边界),或改用回归 score。主动测试缺失值、重复 row_id、NaN、全分数相等、大 query 多候选等边界,确保程序稳健。
交卷前 AI 自审。 给 AI 指令:“检查特征是否仅来自输入与训练集、group 是否按 query 划分、输出列名是否准确、随机种子是否固定、有无硬编码路径或联网调用、30 秒内能否运行。列出所有疑点。”发现问题定点修复;卡住时新开对话换思路,保留最高分版本。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.