633. Child Mind Institute — Problematic Internet Use | child-mind-institute-problematic-internet-use
首先,我想感谢所有主持人和 Kaggle 工作人员组织了如此有趣且实用的比赛!
我非常享受处理噪声和缺失数据的试错过程!
我使用基于 lightgbm 增益重要性的空重要性(Null Importance)来尽可能减少特征,同时考虑 CV 的权衡。
减少后的特征数量如下所示。
| 模型 | 特征数量 |
|---|---|
| train.csv + 描述性活动图谱特征 | 13 |
| train.csv (+ 特征工程*) + 描述性活动图谱特征 (+ 一天中的时间分为 4 组 [0-21600, 21600-43200, 43200-64800, 64800-86400] **) |
40 |
| train.csv (仅) | 14 |
* 特征工程与许多公开 notebook 相同。我还计算了活动图谱数据的绝对值以及 df['XYZ']=np.sqrt(df['X']**2 + df['Y']**2 + df['Z']**2)。
** 我为每个划分组计算了描述性活动图谱特征。
train.csv + 描述性活动图谱特征
['Basic_Demos-Age', 'Basic_Demos-Sex', 'Physical-Height', 'Physical-Weight', 'FGC-FGC_CU', 'FGC-FGC_GSND', 'FGC-FGC_GSD', 'FGC-FGC_PU', 'BIA-BIA_Activity_Level_num', 'SDS-SDS_Total_Raw', 'SDS-SDS_Total_T', 'PreInt_EduHx-computerinternet_hoursday', 'light_max']
train.csv (+ 特征工程) + 描述性活动图谱特征
(+ 一天中的时间分为 4 组 [0-21600, 21600-43200, 43200-64800, 64800-86400])
['Basic_Demos-Age', 'Basic_Demos-Sex', 'Physical-Height', 'Physical-Weight', 'Physical-Waist_Circumference', 'FGC-FGC_CU', 'FGC-FGC_GSND', 'FGC-FGC_GSND_Zone', 'FGC-FGC_GSD', 'FGC-FGC_PU', 'PAQ_A-PAQ_A_Total', 'SDS-SDS_Total_Raw', 'SDS-SDS_Total_T', 'PreInt_EduHx-computerinternet_hoursday', 'X_25%_0-21600', 'Y_std', 'Z_mean_0-21600', 'Z_min_43200-64800', 'Z_75%_64800-86400', 'enmo_50%_43200-64800', 'non-wear_flag_mean_0-21600', 'light_std', 'light_max_21600-43200', 'XYZ_50%_21600-43200', 'XYZ_mean_43200-64800', 'XYZ_mean_64800-86400', 'XYZ_std_64800-86400', 'XYZ_50%_64800-86400', 'abs_X_50%_21600-43200', 'abs_X_25%_64800-86400', 'abs_X_75%_64800-86400', 'abs_Y_75%_0-21600', 'abs_Y_min_21600-43200', 'abs_Y_75%_64800-86400', 'abs_Z_75%_21600-43200', 'abs_Z_75%_43200-64800', 'abs_anglez_min_43200-64800', 'BMI_Age', 'Internet_Hours_Age', 'Muscle_to_Fat']
train.csv (仅)
['Basic_Demos-Age', 'Basic_Demos-Sex', 'Physical-Height', 'Physical-Weight', 'Fitness_Endurance-Max_Stage', 'FGC-FGC_CU', 'FGC-FGC_GSND', 'FGC-FGC_GSD', 'FGC-FGC_PU', 'BIA-BIA_Activity_Level_num', 'PAQ_A-PAQ_A_Total', 'SDS-SDS_Total_Raw', 'SDS-SDS_Total_T', 'PreInt_EduHx-computerinternet_hoursday']
我采用 IterativeImputer 和默认的 Bayesian Ridge 作为估计器来填补缺失值。我也尝试了 GBDT 和 RandomForest,但 CV 低于 Bayesian Ridge。
当在缺失值为 30 或更少的数据上训练填补器时,CV 提高最多。此外,在缺失 'sii' 的数据上训练会降低 CV,所以我们没有使用这些数据。
我采用了简单的加权融合,权重确定为最大化 CV。
| 模型 | 权重 |
|---|---|
| train.csv + 描述性活动图谱特征 | lgb: 0.2, xgb: 0.2 |
| train.csv (+ 特征工程) + 描述性活动图谱特征 (+ 一天中的时间分为 4 组) |
xgb: 0.2 |
| train.csv (仅) | lgb: 0.2, cat: 0.1, xgb: 0.1 |
| 模型 | CV |
|---|---|
| 基线 | 0.475 |
| 提交模型 | 0.501 |
基线模型是单个 lightgbm 模型,没有填补缺失值,拥有所有 train.csv + 描述性活动图谱特征。(模型的超参数已优化)
为了确保阈值的鲁棒性,它们是通过 Nelder-Mead 方法从整个 3 个种子×5 折 CV 中计算得出的。
感谢阅读!