1、基本特征
1.1特征量
对特征进行一个全面的认知
1.2特征
查看具体的特征,可以用来判断特征是否获取完全,训练集和测试集是否特征相同
1.2数据简况
数据概况更深层度了解字段
1.3偏度和蜂度
理论上算法可以拟合所以的分布,但是实际训练很难做到,算法只能对一些情况下效果很好
特征以及训练的预测字段最好符合正态分布,方便模型更好的收敛
1.4 缺失情况
确定缺失的字段以及数量,避免对模型造成影响
1.4各分类占比
确定各字段的分类,方便后续对异常值做处理,比如年龄>150
1.5特征分布
特征分布主要针对偏离数据聚合中心的异常值,直观的方式确定数据是要删除或者做归一化处理
箱线图是比较好的分布可视化,通过箱线图可以看出异常值的量,判断选择采取什么方式进行处理。
1.6相关性图
相关性图主要为了特征的选取,找出相关性较强的特征,考虑是否要减掉部分特征,降低模型训练的压力
散点图
小提琴图
两两热力图
!
注:由于部分模型的特征前提是具有独立性,因此可以将相关性较强的部分特征只取一个即可。
1.7、数据报告
数据报告不仅可视化,而且会对其中的特征进行建议。
3、特征处理
3.1特征选择
1)过滤式
将对预测结果无异议的特征去掉,避免影响训练效果
2)包裹式
缺点:特征太大,训练太慢
验证方式:用边际效益计算
3)嵌入式
Lasso 回归和决策树可以完成嵌入式特征选择 --大部分情况下都是用嵌入式做特征筛选
3.2先验知识
例子
3.3特征增加
与预测字段的结合,根据预测字段分类,获取特征的低阶值
3.4特征光滑
分桶、增加鲁棒性
3.5特征正态化
取log:np.log()
3.6归一化
3.7匿名特征处理
匿名特征,这导致我们并不清楚特征相互直接的关联性,这时我们就只有单纯基于特征进行处 理,比如装箱,groupby,agg 等这样一些操作进行一些特征统计,此外还可以对特征进行进一步的 log,exp 等 变换,或者对多个特征进行四则运算(如上面我们算出的使用时长),多项式组合等然后进行筛选。由于特性的 匿名性其实限制了很多对于特征的处理,当然有些时候用 NN 去提取一些特征也会达到意想不到的良好效果。
相关文章: