kaggle竞赛中关于预处理的知识

已知一批数据,希望利用这些数据做预测或分类,应该从哪里开始入手? 直接把数据送给某个模型做训练吗? NO! 下面给出了一些需要在训练之前考虑的事情

处理缺失数据

三种常用的方法   
* 直接用均值填充  
* 分析一下属性的含义, 做针对性的转换  
* 定义一个新的二值属性,表示这一项是否缺失  

考虑删除方差较低的特征

方差较低的特征带来的信息量不大,可以考虑利用CV判断其对模型的影响  

考虑删除异常数据

异常数据偏离数据聚类中心,可能是无效的数据,也可能是有效的数据,需要区别对待.

如何发现异常值?

* 如果特征或样本不多, 可以通过观察分布或可视化人工确定异常样本   
* 先初步建立一个模型, 观察预测值和真实值之间的差异,差距比较大的就可能是异常值  

异常样本如何处理呢?

* 根据样本含义
   比如房屋价格为负数,这种明显需要删除
* 利用Cross-validation方法验证异常样本对模型的影响,决定是否删除

处理skewing

目前大部分机器学习方法都希望输入数据符合高斯分布, 如果skewing值太大,可以考虑用log变换做矫正   

对类别特征进行one-hot-encoding

统一特征取值范围

特征选择

删除无效或重复的特征可以提高预测的鲁棒性, 一个有效的特征筛选方法是
* 训练一个线性预测器,筛选出权重较大的特征作为初始特征集, 
* 利用贪心算法,每次把一个筛选除去的特征加入特征集, 利用CV计算该特征对模型的改进效果

猜你喜欢

转载自blog.csdn.net/z0n1l2/article/details/80561410