返回列表

Playground S03E03 8th Place Solution

530. Playground Series Season 3, Episode 3 | playground-series-s3e3

开始: 2023-01-17 结束: 2023-01-23 用户画像与运营 数据算法赛
Playground S03E03 第8名方案

Playground S03E03 第8名方案

作者: KirkDCO
排名: 第8名

感谢所有参赛者带来的又一轮富有成效的讨论!同样感谢 Kaggle 组织者提供的又一季有趣的 Playground 系列赛。我利用我在第2集中使用的 XGBoost + 聚焦 CV(交叉验证)的方法,成功获得了第8名的成绩(notebook讨论)。

我在这次比赛中使用的 notebook 可以在这里找到。

影响

本周比赛主要受 @craigmthomas精彩 EDA notebook 启发。我非常仔细地研究了这个 notebook,并根据这项 EDA 工作做出了很多决定。请给那个 notebook 点赞!

建模

就像在第2集中所做的那样,我尝试了多种技术(XGBoost、CatBoost、神经网络、逻辑回归),XGBoost 始终给我最好的 CV 分数。其他模型很接近,但从未超越 XGBoost。

我使用了与之前相同的 CV 策略,即进行 10 折交叉验证,并且仅在每一折中使用合成数据集计算 AUC。我在每一折的训练集中加入了原始数据集(这次使用了完整的数据集),但没有以任何方式衡量在原始数据集上的表现。我认为这在本次比赛中是一个巨大的因素,特别是考虑到目标类别非常不平衡以及数据集规模较小。否则会有太多过拟合的机会。

特征工程

这次比赛的一个很大不同在于我处理特征工程的方式。数据包含多种不同类型的数据,我独立处理每种类型。

缩尾处理

其他人发现有些数据点的值过于极端。我选择将这些极端值重置为该特定特征的最大值。这里没有什么独特的——很多其他人的 notebook 也是这么做的。只有 2 个缩尾处理,但这确实消除了它们的异常值状态。

标签编码

变量 BusinessTravel 是一个具有文本类别的有序变量:Non-TravelTravel_RarelyTravel_Frequently。这 3 个类别具有逻辑顺序,可以转换为数值 [0, 1, 2]。我预计高水平的 BusinessTravel 会导致人员流失,并希望保持变量的有序性质,而不是将其转换为多个独热编码文件。

有序变量

有许多有序变量是用数字编码的。我保留了它们的原始形式,因为我认为相对水平可能很重要,而独热编码会大大增加特征的总数。

独热编码

有 6 个分类特征我使用了独热编码。我担心这会创建过多的列,即使使用稀疏独热编码,我也查看了各种特征(在一个快速粗糙的 notebook 中)。对于这张图,我选取了所有平均 CV 大于或等于 0.8 的模型并计算了变量重要性——数百个模型。箱线图显示了每个变量的重要性(y轴)。

特别是 JobRole,看起来销售相关职位的流失率很高,而其他职位的流失率较低——参见箱线图的最右侧。我尝试将其更改为销售和非销售类别,但似乎没有帮助。对于第8名的最终提交,我保留了所有独热编码列。我也用这个方法删除了几列,但结果并没有改善。

居中和缩放

对于连续变量,我也对它们进行了居中和缩放,这更多是出于习惯。我确信这对 XGBoost 来说并不重要。

TPOT

使用 TPOT(一种 autoML 工具)得出了一个非常有趣的结果。我多次运行 TPOT,进行小规模、短时间的模拟,只是为了了解它找到了什么样的模型。大约 90% 的时间 XGBoost 或 GradientBoostingClassifer 是顶级分类器。

同比赛其他方案