机器学习中的特征工程 —— 七月在线总结

(1)特征很关键,百度、阿里他们得模型效果那么好多半归功于特征工程
 
数据与特征处理
     -数据选择/清洗/采样
     - 数值型/类别型/日期型/文本型特征处理
     - 组合特征处理
 
特征选择
     - filter
     - wrapper
     - embedded
 

 
(1)大多数人都在做什么?
     a. 跑数据,各种map-reduce,hive SQL,数据仓库搬砖
     b. 数据清洗、数据清洗、数据清洗
     c. 业务分析、分析case、找特征、找特征...
     d. 一招LR打天下... (有点夸张)
 
百度:
     2周完成一次特征迭代,在有效的情况下AUC【ROC下面的面积】提升约3-5(千分之)
     1个月左右完成一个模型的小优化,有效情况下提升千分之5,但是比较困难
阿里:
     挖掘业务场景挖得非常深,贴近业务产出了高效的特征
 
特征迭代:把新造的、组合的、修正的特征加入,优化,这就是一次特征迭代
特征工程 - 决定结果的上限
model算法 - 多大程度的接近上限
garbage in, garbage out
 
数据采集

(1)从业务角度(你要做什么建模)去思考哪些数据有帮助?(运营、策略、产品)—— 这是一个脑暴的过程【不局限于部门内部】
(2)这些数据能够采集到吗?(产品、技术)
(3)是否实时快捷,满足需求(技术)
 
采集到的数据要格式化,确定存储格式,比如日期,以及单个动作记录/一天行为的聚合
 
数据清洗

去除脏数据
数据清洗的思路:
     (1)简单的impossible 不应该有的值,这种是因为错误造成的,比如3米高的人
     (2)组合属性或者统计属性来判断
     (3)缺失过多的字段可以考虑不用
 
数据采样

正负样本不均衡,所以要采样 【随机采样、分层抽样】
     如果正>>负,而且量都很大,那么可以欠采样,也叫下采样
     如果正>>负,但是量不大:
          采集更多
          oversampling 过采样,一种方式是直接复制,一种方式是生成新的,smote算法
          修改损失函数,另一种方式就是修改权重
 
特征处理

对采集到的原始属性进行进一步的变化
 
数值型:
     (1)scaling、归一化
     (2)对于一序列数值,可求其统计值,比如平均值,最大值,最小值,方差,标准差
     (3)离散化
               cut  qcut  一种是值等距,一种是量等距
               
类别型:
     (1)独热变换 one-hot encoding  sk learn里有,哑变量 dummy variable  pandas里有
     绿红蓝
     [0, 1, 0]
     [1, 0, 0]
     每种可能由一个独立的变量表示,这样是有好处的,表达能力更强
     这种方法可能会导致数据变得非常稀疏。可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。
- 解决了分类器不好处理属性数据的问题
- 在一定程度上也起到了扩充特征的作用
     (2)统计每个类别变量下各个target比例
     (3)Hash映射
               比如性别、爱好,对于性别,可以映射成  [爱好1的比例,爱好2的比例...],实际上是将一个变量变成另一个变量的统计反应,另一个变量有多少可能,那么这个变量就有几维
 
时间型:
     时间是很重要的属性、既可以看作连续值、又可以看作离散值
     (1)连续值
          持续时间、间隔时间
     (2)离散值
          哪个时间段、星期几、哪个星期、哪个月、等等
 
统计型:
     (1)加减平均:商品价格高于平均价格多少,用户在某个品类下消费超过平均用户多少,用户连续登陆天数超过平均多少
     (2)分位线:商品属于售出商品价格的多少分位线处
     (3)次序:排位第几
     (4)比例:超过百分之多少
 
组合特征:
     (1)简单拼接
     (2)用GBDT产生特征组合路径、然后将组合特征喝原始特征一起放进LR进行训练,这个最早facebook使用,后来多家互联网公司也在用
 
逻辑型:
     (1)=
     (2)in
     (3)...
 
特征选择

过滤型:
     评估单个特征和结果之间得相关程度,排序留下topN相关特征
     pearson相关系数、互信息、距离相关度
     缺点,特征间关联作用,可能把有用关联特征误删除掉
 
     对于构建线性模型可以这样,不然这种方式不太好
 
包裹型:
     特征子集的搜索过程,有多种,递归删除,增加
 
嵌入型:
     针对模型来分析特征重要性
          用正则化来做特征选择,L1,L2,对于特征维度很大的情况,作L1, 对于特征维度很小的情况,作L2
          决策树、随机森林可以作为特征选择的一种方式
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/43726581Gavin/p/9043995.html