对coursera How to Win a Data Science Competition: Learn from Top Kagglers 的总结:
1,numerical features
1)树结构的模型对数值变量的scale不敏感,线性模型,KNN和神经网络对scale敏感
2)regularization对feature的效果受到数值范围的影响
3)scale的方法:MinMaxScale, StandardScaler.
4)对于某些模型(如KNN)由于模型效果受数值范围的影响,也可以操纵feature的scale,给我们认为重要的feature更大的数值
5)outlier会严重影响线性模型(尤其是线性回归),可以选择限制最大最小值为整个分布的1%,99%;也可以对data进行rank(对train data rank时需要保存此rank中数值和rank的对应关系,并对test data做相同的rank;或者先对整个数据集rank,再分train/test data)
6)其他一些压缩数据区间使得数值更接近均值的办法:log、square
2,categorial and ordinal features
1)ordina feature和categorial feature的不同在于前者是有特定顺序的,它和numerical的不同在于前者的两个级别之间的距离不一定是相等的(first class, second class, third class是有顺序的,但first class和second class的距离不一定与second和third的距离相等,而1、2、3之间的距离是相等的)
2)对于categorial feature的encode的方法:按照字母顺序排列并encode一个数字;或按照该类别在数据中出现的顺序(如果已经排序,这种方法不是太理解);或者按照该类别出现的频率(比如s,c,q三类,s出现5次,c出现3次,q出现2次,则s编码为0.5,c编码为0.3,q编码为0.2)以上两种方法用于tree-based models;或使用one-hot-encoding,用于none-tree based models
3)feature generation:interaction of different features(多个feature组合条件,如属性1*属性2*属性3,然后变成one-hot-encoding)
3,datetime and coordinates
1)对datetime类型数据生成新feature主要分为两类:time moment in a period; time passed since particular event
2)如果知道有repetitive pattern in data,需要抓住这一pattern,比如衡量药物效果,病人每三天吃一次药
3)time passed since particular event可分成两类,row-independent:对所有row都衡量其对同一时刻的距离;row-dependent:不同row衡量的不同,如衡量某一日期距离下个周末有几天,或者同一行两个日期相减,如购买日期-注册日期
4)对于coordinate数据:1是计算距离:可计算坐标和重要坐标的距离,比如和附近最好的学校的距离(如果知道做好的学校的坐标);2是计算统计量,比如将地图划分成很多小方格,计算小方格里的房价平均值
4,处理缺失值
1)缺失值可能不以NAN的形式出现,例如data中没有缺失值,但是有不正常的-1
2)处理缺失值的方法:填充一个正常值范围之外的值(如-999)、填充均值、回归构造新的值
3)对于方法1,会对linear model产生影响(人为制造了outlier);对于方法2,会对tree based model产生影响(填充了均值后tree无法有效识别原本的缺失值)
4)另一种处理确实的方法:增加一列dummy variable:is_null, 标识某一列是否是缺失的。不好的地方是会让column成倍增长
5)若进行过缺失值填充,则进行feature generation时需要小心(例如将缺失值填充为0,并在feature generation时除以了这个字段,会产生错误)