最近遇到了这个问题,这里想到了几种方法。

 

第一种,用均值、中位数、众数等数值补充。如果数据近似于normal distribution,可以用mean来代替,如果数据是skewed distribution的,则用median来替代。不过,这相当于是人为给数据增加了噪音,最终的效果是正向还是负向也不得而知。

第二种,空缺值用0、-99999,+99999之类特别的数值来表示,或是当做新的一维dummy code。如果这个维度的特征是categorical的,这样做也没有问题,相当于特征值缺失的样本在这个维度上的特征都属于新的一类;如果这个维度的特征是numerical的,那么就会有麻烦了。

第三种,直接抛弃这个维度的特征。这是属于土豪的做法,当样本和特征足够多的时候可以尝试这样做,但是样本和特征维度很少的时候,怎么玩得转。。。

第四种,可以根据不缺失的那部分特征值和其它维度特征的关系,推测出缺失的那部分特征值。这里我担心的一个问题,就是推测出来的那部分特征值,很可能和其余维度的特征高度相关,这样的话这个维度的特征贡献就不大了;若是它与其它维度的相关性较小,那预测出来的缺失值又不准确。这是一个trade-off吧。