已知一批数据,希望利用这些数据做预测或分类,应该从哪里开始入手? 直接把数据送给某个模型做训练吗? NO! 下面给出了一些需要在训练之前考虑的事情
处理缺失数据
三种常用的方法
* 直接用均值填充
* 分析一下属性的含义, 做针对性的转换
* 定义一个新的二值属性,表示这一项是否缺失
考虑删除方差较低的特征
方差较低的特征带来的信息量不大,可以考虑利用CV判断其对模型的影响
考虑删除异常数据
异常数据偏离数据聚类中心,可能是无效的数据,也可能是有效的数据,需要区别对待.
如何发现异常值?
* 如果特征或样本不多, 可以通过观察分布或可视化人工确定异常样本
* 先初步建立一个模型, 观察预测值和真实值之间的差异,差距比较大的就可能是异常值
异常样本如何处理呢?
* 根据样本含义
比如房屋价格为负数,这种明显需要删除
* 利用Cross-validation方法验证异常样本对模型的影响,决定是否删除
处理skewing
目前大部分机器学习方法都希望输入数据符合高斯分布, 如果skewing值太大,可以考虑用log变换做矫正
对类别特征进行one-hot-encoding
统一特征取值范围
特征选择
删除无效或重复的特征可以提高预测的鲁棒性, 一个有效的特征筛选方法是
* 训练一个线性预测器,筛选出权重较大的特征作为初始特征集,
* 利用贪心算法,每次把一个筛选除去的特征加入特征集, 利用CV计算该特征对模型的改进效果