数据缺失值的多重插补及算法选取

我最近在做一个数据挖掘项目,目的是要发现其中一个变量(采收率,0~1之间的一个数)的主要影响因素,并且对这个变量做出预测。原始数据一共168个样本,420个变量(312个数值型变量和109个文本型变量),大部分变量的缺失值超过60%。经过数据清洗后,剩余132个变量。现在有以下问题,请老师有时间帮忙看看,提些建议。在此深表感谢!!

(1)如何对这些缺失值进行插补?我搜索了一下,按照https://datascienceplus.com/imputing-missing-data-with-r-mice-package/的帖子用R语言的MICE包进行了数据插补,发现效果不太理想,对文本型数据也不适用。如果不进行数据插补,对缺失值敏感的算法如回归,没办法继续下去,因为样本量太小,尤其是考虑到交叉验证,需要将数据集分为训练集、CV集合和test集。
(2)如何消除多重共线性?我现在向利用PCA降维并消除多重共线性,但PCA得出的新的变量不好从业务上进行解释,有什么办法能从132个变量中发现最重要的变量进行回归?我试了下逐步回归,发现效果也不好。
(3)我又试了GBDT等对数据缺失值不太敏感的算法,发现对采收率影响最大的前10个因素都是文本型变量,因为这些文本型变量的可选值(唯一值)太多了。GBDT在训练集上的效果很好,但是到测试集预测效果很差。貌似Overfitting,不知可有什么好的分类或回归算法适合我的数据。
 
BTW,附件是数据集缺失值分布和回归及GBDT的效果。

多谢!
CarlWu

CarlWu_cn

赞同来自:

本来要把这个帖子发到邹博老师的数据分析与数据挖掘 栏目下,但是发现却没有办法删除!!

邹博 - 计算机科学博士,深谙机器学习算法原理

赞同来自:

个人感觉,再尝试下随机森林呢?它的泛化能力有时候比GBDT略好些。

CarlWu

赞同来自:

谢谢邹博老师!回头试下随机森林。

要回复问题请先登录注册