返回列表

45th Place | What I have learnt through TPS- Sep 2021

455. Tabular Playground Series - Sep 2021 | tabular-playground-series-sep-2021

开始: 2021-09-01 结束: 2021-09-30 保险科技 数据算法赛

第45名 | 我在 TPS 中学到的东西 - 2021年9月

作者: Towhidul.Tonmoy | 发布时间: 2021-10-01

所以,我的第一次 TPS 比赛结束了,我最终获得了第45名的成绩。在这一个月里,我从 Kaggle 社区学到了很多东西。我要感谢所有分享他们的 notebook 并讨论不同话题的 Kagglers。这些贡献帮助我逐步改进了我的模型。

所以,在这里我将总结我在这次比赛中学到的东西。

  • 这次比赛的主要问题是数据集非常庞大,而且训练集和测试集中都有大量的缺失值
    为了解决数据集过大的问题,我有时会使用 "DataTable" 库,但对我来说效率并不高。比如,当你用 "DataTable" 库加载数据集,然后用 to_pandas() 命令将其转换为 pandas 时,二进制值会自动转换为 True 和 False。 比如,1 转换为 True,0 转换为 False。这就是为什么我不得不再次将其转换为二进制。
  • 减少内存使用 非常实用。
  • 我有两次 GPU 不够用的情况。然后我尝试切换到 Google Colab,但在那里我遇到了使用 LGBM 的问题。错误是,
    "LightGBMError: GPU Tree Learner was not enabled in this build. Please recompile with CMake option -DUSE_GPU=1"
    我使用以下命令解决了这个问题。
!rm -r /opt/conda/lib/python3.6/site-packages/lightgbm !git clone --recursive https://github.com/Microsoft/LightGBM !apt-get install -y -qq libboost-all-dev %%bash cd LightGBM rm -r build mkdir build cd build cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ .. make -j$(nproc) !cd LightGBM/python-package/;python3 setup.py install --precompile !mkdir -p /etc/OpenCL/vendors && echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd !rm -r LightGBM
  • 由于我的 GPU 用完了,所以我不得不编写可以在 CPU 上运行的代码。但是在 CPU 上工作花费了很多时间。这就是为什么我首先使用较少数量的折叠 (K=2) 进行工作。如果我看到 CV 分数足够好,那么我会选择较多数量的折叠 (K=10 给了我最好的结果) 并点击 "save version" 按钮运行代码。然后代码在云端运行,我不必等待代码完成。
  • 我尝试了不同类型的折叠(如 Stratified k fold, kfold 和 repeated k fold)。Stratified k fold 给了我最好的结果。
  • 对于缺失值的填充,我在 pipeline 中使用了 simple imputer。并且使用 StandardScaler 对数值进行了缩放。使用 "mean" 比 "median" 效果更好。然后我将处理后的结果保存为一个数据集。这为我节省了很多时间。因为我不必每次都处理数据集。
  • 集成不同的模型(如 LGBM, XGBoost 和 CATBoost)提供了很好的准确性。我们可以使用具有不同随机状态数的同一算法进行多种类型的尝试。
  • LGBM 和 XGBoost 提升算法可以处理缺失值,而 CATBoost 算法会报错。
  • 跟踪超参数及其相应的输出是必要的。它可以帮助您了解需要进行何种类型的更改才能获得良好的准确性。为此,可以使用 neptune.ai。它将帮助您组织您的工作、跟踪和可视化您的实验。
    如果您想在代码中使用此服务,可以查看这个链接
  • 最后,通过加权平均和幂次提交来集成输出可以提高准确性。
同比赛其他方案