Kaggle赛题总结:CMI儿童网络成瘾预测

赛题名称:Child Mind Institute — Problematic Internet Use

赛题类型:数据挖掘、时间序列

赛题任务:分析儿童的体育活动数据,以检测问题性

https://www.kaggle.com/competitions/child-mind-institute-problematic-internet-use/overview

赛题背景

在当今数字化时代,儿童和青少年的问题性互联网使用日益成为一个关注点。更好地理解这一问题对于解决如抑郁和焦虑等心理健康问题至关重要。

目前,测量儿童和青少年问题性互联网使用的方法通常较为复杂,需要专业的评估。这为许多家庭带来了获取、文化和语言上的障碍。由于这些限制,问题性互联网使用通常不是直接测量的,而是与青少年的抑郁和焦虑等问题相关联。

相反,体育和健身指标非常容易获得,并且广泛可用,几乎不需要干预或临床专业知识。过度使用技术的儿童常见的体育习惯变化包括姿势不良、饮食不规律和体育活动减少。我们提议使用这些容易获得的体育健身指标作为识别问题性互联网使用的代理,特别是在缺乏临床专业知识或合适的评估工具的情境中。

赛题任务

这个竞赛挑战你开发一个预测模型,能够分析儿童的体育活动数据,以检测问题性互联网和技术使用的早期指标。这将使得能够及时进行干预,以促进更健康的数字习惯。

你的工作将有助于创造一个更健康、更快乐的未来,在这个未来中,儿童能够更好地负责任地导航数字环境。

评价指标

二次加权卡帕(Quadratic Weighted Kappa)是一种统计量,用于评估两个评价者对项目进行分类时的一致性水平。它是科恩卡帕(Cohen's Kappa)统计量的扩展,通过使用平方权重来考虑类别之间的不一致程度,使其对不一致程度更敏感。

id,sii000046df,0000089ff,100012558,200017ccd,3...

赛题时间轴

  • 开始日期:2024年9月19日
  • 提交截止日期:2024年12月12日
  • 最终提交截止日期:2024年12月19日

赛题数据集

Healthy Brain Network (HBN) 数据集,包含约五千名5-22岁青少年的临床样本,他们接受了临床和研究筛查。

  • 加速计(actigraphy)数据:通过腕戴式加速度计连续记录的身体活动数据。
  • 互联网使用行为数据:包括多种测量工具的数据,如人口统计信息、互联网使用时间、儿童全球评估量表等。
  • 训练集和测试集:包含加速度计数据和剩余的表格数据。
  • 表格数据:包含多种测量工具的数据,如人口统计信息、互联网使用时间、儿童全球评估量表等。
  • 加速度计数据:记录了参与者在日常生活中的连续加速度数据,包括时间步长、X/Y/Z轴加速度、ENMO(欧几里得范数减一)、Angle-Z(臂相对于水平面的角)、非佩戴标志、环境光强度、电池电压、一天中的时间、一周中的日、一年中的季度以及自PCIAT测试以来的相对天数。

优胜方案分享

第二名

https://www.kaggle.com/competitions/child-mind-institute-problematic-internet-use/discussion/552712

缺失值处理

  • 观察与思考:原Starter Notebook没有显式处理缺失值,而是依赖CatBoost自动处理。作者认为利用一些领域知识通过自定义的填充策略可能是更好的选择,因为CatBoost不能完全“理解”每个特征背后的含义。
  • 填充策略
    • 平均值填充:如果特征是数值型(浮点数或整数)且需要平均值,则用所有现有值的均值替换缺失项。例如,互联网使用小时数等。
    • 新数字填充:如果特征是基于整数的(通常被视为分类特征)且希望保持其独特性,则用当前列的最大值加1替换缺失项。如果特征是基于字符串的分类,则用"Null"替换缺失项。例如,某些项目的ID等。
  • 策略应用条件:仅当列严格为整数(或被识别为分类特征)时,才使用这些策略。当特征为浮点数时,"平均值"替换更合理,假设它具有数值意义而非离散类别。

交叉验证

将交叉验证的折数从5增加到20。之后发现收益递减,因此停止增加。尽管交叉验证分数有所提高,但公有排行榜分数却低于基线笔记本,这相当出乎意料。最终的私有排行榜结果却是一个令人愉快的惊喜。

第四名

  • 数据预处理:重点关注数据预处理。首先删除所有sii含糊不清的行。然后在查阅多个笔记本并进行自己的研究后,选择关键特征来处理缺失值。对于不太重要的列,选择不填充缺失值,因为发现这样做会恶化结果,可能是因为数据缺乏和不可靠。对于重要的列,使用其他可靠列(如人口统计数据或已填充列)作为输入的子模型填充缺失值。这个子模型可以是线性回归、逻辑回归或KNN,具体取决于情况。还为某些列(如CGAS-CGAS_Score和SDS-SDS_Total_Raw)添加了权重(稍后解释)。
  • 特征工程:将认为具有明确关系的特征组合起来,如年龄和BMI,或SDS和CGAS等。
  • 最终模型:采用堆叠方法,结合了三种高性能模型:CatBoost、LightGBM和XGBoost。在5折数据上训练模型,然后优化sii决策四舍五入阈值。

最重要的特征

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

处理缺失值

  • 年龄、性别、Demos-Season → knn → 身体体重、身高
  • 体重、身高 → BMI
  • BMI、体重 → 线性回归 → 腰围
  • 年龄、SDS-Season → knn → SDS-Total-Raw
  • 年龄、性别、SDS-Total-Raw、Internet-Season → 逻辑回归 → 互联网使用小时数
  • 注意:没有填充CGAS分数,因为找不到它与其他列(除了年龄)之间的足够强的关系,但它仍然是一个重要特征。
  • 对于其他列,包括时间序列列,将移除异常值和错误数据,或者完全移除被认为无用的列。
XGB LGB CatBoost Ensemble
Train 0.6429 0.8066 0.5472 0.6138
Validation 0.3846 0.3909 0.3857 0.3912

第五名

https://www.kaggle.com/competitions/child-mind-institute-problematic-internet-use/discussion/552656

时间序列特征工程

  • 选取6个parquet文件(每类中变化最大的2个文件),将它们合并,使用KMeans算法拟合15个聚类。
  • 假设每个聚类可以代表parquet数据中的特定运动,然后计算每个聚类在时间范围内的平均值,并将这个平均值作为每个用户的特征。最终每个用户有15个特征,代表了用户佩戴手表期间某种活动的平均情况。
  • 由于比赛后期时间紧迫,没有对时间序列数据进行更深入的清洗或提取更多有用特征,认为时间序列数据中还有很大的潜力可以挖掘出更好的特征。

目标选择

  • 初始提交后发现使用阈值优化会导致过拟合和结果不一致,因此放弃了优化,直接使用PCIAT-PCIAT_Total作为目标标签,并应用固定阈值[31, 50, 80]。
  • 由于这些阈值之间的精确值对于最终预测来说,其相对位置比具体数值更重要,因此将PCIAT-PCIAT_Total分为10个区间,并相应调整阈值。

无标签数据处理

使用伪标签方法。训练了3个GBDT模型(CatBoost、LGBM、XGB)、一个Lasso回归模型和一个神经网络模型(256-128-64架构)。然后将这些模型集成起来预测无标签数据的标签。这些新标签随后用于训练最终模型。

最终预测

  • 最终预测时,使用了伪标签过程中相同的4个模型,训练数据为原始标签和伪标签的组合。模型在整个数据集上进行训练,仅在原始标签上进行验证。这种方法得到了以下结果(未使用时间序列数据进行预测):
  • 然后在包含时间序列特征的整个数据集上训练GBDT模型,并将所有这些模型用于最终集成。
  • 将这些模型组合起来后,CV得分为4.6,私有LB得分为4.81,排名第二。但由于QWK是一个噪声较大的指标,尝试添加一些CV分数较低的其他模型(逻辑回归和决策树回归),这使得最终CV和公有LB略有提高,但私有得分从4.81下降到4.77。

第七名

https://www.kaggle.com/competitions/child-mind-institute-problematic-internet-use/discussion/552625

模型构建

  • 基线模型:以CMI Single LGBM CV 0.471 LB 0.460为基线,主要使用LGBM模型,并将XGBoost纳入集成模型中。
  • 缺失值处理:采用中位数填充法处理缺失值,仅在训练数据的每个折中计算中位数,并将其应用于验证/测试集。
  • 序列数据统计:参考公共笔记本中的处理方式,但使用Polars进行优化以提高速度。
  • 损失函数:以Tweedie损失为主要损失函数,同时在集成模型中也包含分类任务。
  • 伪标签生成:对于没有'sii'标签的数据,生成预测结果并将其作为伪标签用于训练。
  • 特征处理:将数据字典中定义为分类整数的特征,既作为分类特征也作为数值特征使用。

阈值优化

  • 在每个折的训练数据上进行阈值优化,并将其应用于验证/测试集。使用百分位数进一步提高准确性和鲁棒性。初始优化值来源于相关讨论。
  • 通过自定义函数calc_initial_th计算初始阈值百分位数,并使用minimize函数进行优化,优化方法为"Nelder-Mead",并设置阈值的边界为(0, 1)。

交叉验证策略与模型评估

  • 使用5折StratifiedKFold进行交叉验证。由于分数可能因种子不同而有较大差异,因此在提交时对10个种子的结果进行平均。在验证过程中,也对10个种子的投票结果进行评估,并使用Optuna对每个种子的参数进行优化。
  • 监控投票分数和个体分数的平均值。例如,在一个提交中,10个种子的分数变化范围较大,投票分数为0.49218340134866767,平均分数为0.4839108063626429。在提交时,对每个模型的5折×10个种子进行投票集成。

第八名

https://www.kaggle.com/competitions/child-mind-institute-problematic-internet-use/discussion/552760

  • 关注点:由于数据量较小且缺失值分布不明确,作者专注于提高交叉验证(CV)分数,而非公有排行榜(LB)分数。
  • 特征提取:通过基于lightgbm增益重要性的Null Importance方法提取特征,以提高模型的鲁棒性。
  • 缺失值填充:使用IterativeImputer(估计器为贝叶斯岭回归)填充数值型缺失特征。
  • 模型集成:在3种不同模型上进行集成:
    • train.csv + 描述性加速度计特征
    • train.csv(+ 特征工程)+ 描述性加速度计特征(+ 一天分为4个时间段)
    • 仅train.csv
  • 回归模型
    • 目标:均方误差(mse)
    • 模型:lightgbm、xgboost、catboost
  • QWK计算:通过3个种子×5折交叉验证(StratifiedKFold)计算QWK,以减少波动。
  • QWK阈值优化:通过3个种子×5折Stratified交叉验证优化QWK阈值,提高鲁棒性。

特征提取

  • 使用Null Importance方法,在考虑CV权衡的情况下尽可能减少特征数量。
  • 特征工程与许多公共笔记本相同,还计算了加速度计数据的绝对值和df['XYZ']=np.sqrt(df['X']**2 + df['Y']**2 + df['Z']**2)
  • 为每个划分的时间段计算描述性加速度计特征。

提取的特征

  • train.csv + 描述性加速度计特征:提取了13个特征,如年龄、性别、身高、体重等。
  • train.csv(+ 特征工程)+ 描述性加速度计特征(+ 一天分为4个时间段):提取了40个特征,包括身高、腰围、CU、GSND、GSND_Zone等。
  • 仅train.csv:提取了14个特征,如年龄、性别、身高、体重、最大耐力阶段等。

缺失值填充

  • 采用IterativeImputer和默认的贝叶斯岭回归估计器填充缺失值。尝试过GBDT和随机森林,但CV低于贝叶斯岭回归。
  • 当在缺失值数量为30或更少的数据上训练填充器时,CV提升最大。同时,训练在缺失'sii'的数据上会降低CV,因此未使用这些数据。

【竞赛报名/项目咨询+微信:mollywei007】

上一篇

KDD2024 OAG-Challenge竞赛总结

下一篇

Kaggle 奥数AIMO赛题:QwQ baseline

你也可能喜欢

  • 暂无相关文章!

评论已经被关闭。

插入图片
返回顶部
Baidu
map