返回列表

4th Place Solution for the Child Mind Institute — Problematic Internet Use competition

633. Child Mind Institute — Problematic Internet Use | child-mind-institute-problematic-internet-use

开始: 2024-09-19 结束: 2024-12-19 健康管理与公共卫生 数据算法赛
儿童心理研究所 — 问题性互联网使用竞赛第 4 名解决方案

儿童心理研究所 — 问题性互联网使用竞赛第 4 名解决方案

作者: Quang Dũng ( dungquang8229 )
团队成员: Lê Minh Dương ( minhduonq )
竞赛排名: 第 4 名
发布日期: 2024-12-22

我不敢相信在这次竞赛中获得了第 4 名。这是我第一次参加 Kaggle 竞赛,我很幸运能取得这么好的成绩。我感谢社区的所有支持以及 Kaggle 上可用的惊人资源。我很兴奋能继续学习并在未来迎接新的挑战!

概述

我们非常重视数据预处理。首先,我们删除了所有具有模糊 SII 的行。然后在审查了几个 Notebook 并进行我们自己的研究后,我们选择了关键特征来处理缺失值。对于不太重要的列,我们选择不填充缺失值,因为我们发现这样做会恶化结果,可能是由于数据缺乏且不可靠。对于重要的列,缺失值是使用具有来自其他可靠列(如人口统计数据或预填充列)输入的子模型填充的。该子模型可以是线性回归、逻辑回归或 KNN,具体取决于情况。我们还为某些列添加了权重,如 CGAS-CGAS_Score 和 SDS-SDS_Total_Raw(稍后将解释)。

我们 proceeded 到特征工程,在那里我们结合了我们认为具有明确关系的特征,例如年龄和 BMI,或 SDS 和 CGAS……

对于我们的最终模型,我们采用了一种 stacking 方法,结合了三个高性能模型:CatBoost、LightGBM 和 XGBoost。我们在 5 折数据中训练模型,然后优化了 SII 决策舍入阈值。

细节

最重要的特征

我们认为最重要的特征列表:

  • 年龄 (Age)
  • 身体列 (BMI, 体重,身高,腰围)
  • 互联网使用小时数
  • SDS (原始分数)
  • CGAS 分数

处理缺失值

以下是我们如何填充这些列的缺失值:

  • 年龄,性别,Demos-Season ----- knn -----> 身体体重,身高
  • 体重,身高 ----------> BMI
  • BMI, 体重 ----- 线性回归 -----> 腰围
  • 年龄,SDS-Season ----- knn -----> SDS-Total-Raw
  • 年龄,性别,SDS-Total-Raw, Internet-Season ----- 逻辑回归 -----> 互联网使用小时数

💡注意: 我们没有填充 CGAS 分数,因为我们除了年龄外,找不到它与任何其他列之间足够强的关系,但它仍然是一个重要的特征。

对于其他列,包括时间序列列,我们将移除异常值和错误数据,或者完全移除被认为无用的列。

为 CGAS 分数列和 SDS 原始分数列添加权重

观察后发现:

  • 没有 SII 分数为 3 的参与者 CGAS 分数 > 80。
  • 没有 SII 分数为 3 的参与者 SDS 分数 < 35。

这可能表明 CGAS 分数 80 和 SDS 分数 35 可以作为预测谁患有严重问题性互联网使用 (PIU) 谁没有的有效阈值。

因此,我们决定为这两列分配权重。权重是使用 Sigmoid 函数计算的。Sigmoid 函数的特点是值越接近阈值,曲线变得越陡峭,允许更清晰的区分。

例如,CGAS 分数的权重计算如下:

CGAS_Weight(cgas, a, b) = 1 / (1 + e^(-a * (cgas - b)))

图表:

CGAS 权重曲线图

当 CGAS 分数接近 80 时,曲线变得更陡峭。这意味着 CGAS 分数的权重变化更大,增强了其辅助分类的能力。

然后我们将 CGAS 分数乘以其权重以创建一个新特征 Weighted_CGAS_Score,该特征将用于特征工程过程。

相同的技术应用于 SDS 分数, resulting in Weighted_SDS_Score。

特征工程

我们在这里没有采用任何特别先进的技术,我们只是结合了我们觉得彼此相关的列。重要特征被优先处理。

建模与训练

个体和 stacking 模型的训练和验证分数结果,由二次 Cohen Kappa 分数计算:

XGB LGB CatBoost Ensemble
Train (训练) 0.6429 0.8066 0.5472 0.6138
Validation (验证) 0.3846 0.3909 0.3857 0.3912

尝试过但无效的方法

  • 我们在集成模型中添加了 Tabnet,但它的表现从未很好。
  • 我们起初尝试预测 PCIAT-PCIAT_Total 列,然后将其映射到 SII,但这也产生了糟糕的结果。当我们切换到直接预测 SII 并应用阈值调整技术来优化舍入阈值时,我们的性能有所提高。

感谢您阅读到最后

同比赛其他方案