651. Playground Series - Season 5, Episode 5 | playground-series-s5e5
这是我遵循的计划。
在分析数据之后,我确定
"1) 与 Calories 最密切相关的变量是 Duration、Heart_Rate 和 Body_Temp。2) 虽然 Duration 和 Calories 之间的关系似乎是正线性关系,但 Heart_Rate/Body_Temp 与 Calories 之间的关系似乎是 S 形” - 引用自我的 preliminary model 笔记本
然后我使用以下内容制作了一个初步模型
假设: 我们可以将 Duration、Heart_Rate 和 Body_Temp 对 Calories 的影响视为 additive without interaction terms( additive 且无交互项)。
假设背后的原因: 我感觉是这样。
我通过简单的梯度下降训练了这个模型。我使用所有数据点来计算每次更新的梯度。回想起来,我的初步模型表现并不比经过 log1p 变换目标后训练的最小二乘回归线性模型好多少,正如我笔记本中的 CV 结果所示。
接下来,我使用标准库(例如 XGBoost、tensorflow 等)训练了一些模型,并阅读了社区讨论。从社区中,我采用了以下见解。
Duration 缩放其他变量可能有所帮助。Sex 和 Age 分箱使用不同的权重 ( @harukikakinuma ) - 我最终只针对 Sex 使用了不同的权重,没有考虑年龄。我的最终集成(加权投票)包括 5 个森林类模型,4 个通过 boosting 算法训练,1 个通过 vanilla 随机森林算法训练,以及 2 个使用梯度下降训练的神经网络模型。以下是训练细节。
optuna 进行调整。我原本想使用网格搜索,因为我还不了解 optuna 的工作原理,但我的网格太大了。我没有发现任何关于特征、模型架构或学习参数的有趣之处,这些 elsewhere 在社区中未讨论过。
我的两次提交在以下方面有所不同。
number of trees。number of trees 增加了 1/3,以考虑到我在 CV 中的训练集大小是整体训练集的 3/4。它们在私有 LB 上获得了几乎完全相同的分数(分别为 0.05855 和 0.05854)。
主要学到的东西: 我喜欢如何组织我的工作流程。
下次竞赛的目标: