如何决定使用带插补或不带插补的 xgboost 并保留缺失值?

数据挖掘 机器学习 回归 xgboost 缺失数据 生物信息学
2022-02-20 15:04:44

我有一个大型遗传数据集,我正在使用 xgboost 对最有可能引起疾病的基因进行评分 - 给基因的可能性评分在 0-1 之间。

我尝试避免具有大量缺失数据的特征,但这对于遗传数据可能很难,我对特征的最大缺失量大约是特征列中缺失值的一半。

目前我在 2 个版本中运行我的 xgboost 模型,一个带有缺失值的随机森林插补,另一个没有 xgboost 直接处理缺失数据的地方。插补模型的 r2 为 0.7,缺失值的模型在嵌套交叉验证中的表现为 0.8。

我的问题是如何选择要采用哪个版本来进一步工作?我可以相信缺少数据的更高 0.8 r2 是因为 xgboost 正在寻找缺失模式并发现这很有用吗?是否有关于我应该尝试遵守的丢失数据的规则?我有生物学背景,所以我不确定从数据科学的角度来看处理缺失数据的最佳实践是什么,我在网上找到的大多数关于此的资源都得出结论,这是一个个案问题,我发现很难解释我应该具体研究什么。任何帮助,将不胜感激。

2个回答

关于丢失数据的第一个问题总是为什么会丢失?

您是否检查或知道数据丢失的原因以及是否是 MAR、MCAR 或不随机丢失?

如果您的数据是 MCAR 插补通常很好,并且您较低的测试指标可能只是表示次优的插补策略。在这种情况下,您可以尝试 MICE 或类似的比简单中值插补更高级的插补。

不估算缺失值实际上可以改善您的预测,这可能表明您的数据并没有完全随机缺失。在这种情况下,编码缺失值可能会提高您的性能,因此是最佳行动方案。

如前所述,除了简单地查看经过适当验证的测试集的性能指标外,还尝试了解数据丢失的原因以及这意味着什么。

首先,您应该定义一个适合该问题的指标R2在你的情况下。

进行正确的交叉验证并训练测试拆分。

然后在交叉验证中选择哪个选项对您的模型具有最佳结果(估算缺失或 xgboost 不估算)。这样,您就可以进行经验实验并选择最佳结果。

可能你想看看sklearn 管道来做到这一点。