特征工程
别人的例子
特征选择
特征选择,就是从多个特征中,挑选出一些对结果预测最有用的特征。因为原始的特征中可能会有冗余和噪声。 特征选择和降维有什么区别呢?前者只踢掉原本特征里和结果预测关系不大的, 后者做特征的计算组合构成新特征。
过滤型
- 方法: 评估单个特征和结果值之间的相关程度, 排序留下Top相关的特征部分。
- 评价方式:Pearson相关系数, 互信息, 距离相关度。
- 缺点:只评估了单个特征对结果的影响,没有考虑到特征之间的关联作用, 可能把有用的关联特征误踢掉。因此工业界使用比较少。
- python包:SelectKBest指定过滤个数、SelectPercentile指定过滤百分比。
包裹型
- 方法:把特征选择看做一个特征子集搜索问题, 筛选各种特 征子集, 用模型评估效果。
- 典型算法:“递归特征删除算法”。
- 应用在逻辑回归的过程:用全量特征跑一个模型;根据线性模型的系数(体现相关性),删掉5-10%的弱特征,观察准确率/auc的变化;逐步进行, 直至准确率/auc出现大的下滑停止。
- python包:RFE
嵌入型
- 方法:根据模型来分析特征的重要性,最常见的方式为用正则化方式来做特征选择。
- 举例:最早在电商用LR做CTR预估, 在3-5亿维的系数特征上用L1正则化的LR模型。上一篇介绍了L1正则化有截断作用,剩余2-3千万的feature, 意味着其他的feature重要度不够。
- python包:feature_selection.SelectFromModel选出权重不为0的特征。